Angular设置title信息解决SEO方面存在问题


Posted in Javascript onAugust 19, 2016

Javascript框架在处理seo方面存在问题,因为爬虫在检索seo信息的时候会读不了js给其赋的值,导致搜索引擎收录不了或者收录了无效的信息,比如收录的可能是title={{title}}这样的,下面先说如何在路由跳转时修改页面的seo信息,现在spa跳转一般用route-ui了,就以这个为基础讲解,在app.js配置项state中加入title信息,如下:data:{ pageTitle:'user title'}

.state('index.user', {
url: '/user',
views: {
'content@index': {
templateUrl: 'templateHtml/user/user.html',
controller: 'userCtrl'
}
},
data:{
pageTitle:'user title'
}
})
.state('index.user.a', {
url: '/a',
templateUrl: 'templateHtml/user/a.html',
data:{
pageTitle:'user a title'
}
})
.state('index.user.b', {
url: '/b',
templateUrl: 'templateHtml/user/b.html',
data:{
pageTitle:'user b title'
}
})

然后使用通过监听$stateChangeSuccess来修改页面title:

app.directive('title', ['$rootScope', '$timeout',
function($rootScope, $timeout) {
return {
link: function() {
var listener = function(event, toState) {
console.log(toState);
$timeout(function() {
$rootScope.title = (toState.data && toState.data.pageTitle)
? toState.data.pageTitle
: 'Default title';
$rootScope.metakeywords="this is keywords"
});
};
$rootScope.$on('$stateChangeSuccess', listener);
}
};
}
]);

这里赋值是通过获取当前state中设置的title,也就是这里toState对象的值,当我们打印这个toState时就会发现:

Angular设置title信息解决SEO方面存在问题

这里是获取的已经设置好的data中pageTitle的值,如果不想写在state里或者写死,可以传state中的唯一标示,配合后台接口,将查询的title渲染到页面;同样meta标签如keywords、description可以在此时一同绑定;

上面说到javascript框架在seo方面存在短板,应对ng的这个问题市面上也有很多方案,比如prerender,seo.js等,思想都是在页面加入表示,让爬虫在页面渲染好后才去扒数据,同时服务器上要配置些服务,服务将检测是否有对应这个URL的快照或者缓存的页面,如果存在就发给爬虫,如 果不存在,则生成快照,然后发送正确的页面给爬虫;处理起来还是要费些功夫的,所以也可以采用ng+常规的开发模式,一些重要的页面不要用这种页面渲染seo的方式,或者建立专门的seo信息页;所以在这方面感觉用ng框架做app(ionic)还是很合适的;

以上所述是小编给大家介绍的Angular设置title信息解决SEO方面存在问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Jquery判断$("#id")获取的对象是否存在的方法
Sep 25 Javascript
javascript获取ckeditor编辑器的值(实现代码)
Nov 18 Javascript
Prototype框架详解
Nov 25 Javascript
Bootstrap所支持的表单控件实例详解
May 16 Javascript
第六篇Bootstrap表格样式介绍
Jun 21 Javascript
js 获取图像缩放后的实际宽高,位置等信息
Mar 07 Javascript
jQuery实现新闻播报滚动及淡入淡出效果示例
Mar 23 jQuery
记录一篇关于redux-saga的基本使用过程
Aug 18 Javascript
angularjs通过过滤器返回超链接的方法
Oct 26 Javascript
Vue项目自动转换 px 为 rem的实现方法
Oct 29 Javascript
JavaScript实现获取两个排序数组的中位数算法示例
Feb 26 Javascript
js对象属性名驼峰式转下划线的实例代码
Sep 17 Javascript
js仿腾讯QQ的web登陆界面
Aug 19 #Javascript
基于WebUploader的文件上传js插件
Aug 19 #Javascript
JS获取checkbox的个数简单实例
Aug 19 #Javascript
JS提示:Uncaught SyntaxError:Unexpected token ) 错误的解决方法
Aug 19 #Javascript
jQuery搜索框效果实现代码(百度关键词联想)
Feb 25 #Javascript
浅谈js中test()函数在正则中的使用
Aug 19 #Javascript
javascript设计模式Constructor(构造器)模式
Aug 19 #Javascript
You might like
基于mysql的论坛(5)
2006/10/09 PHP
树型结构列出指定目录里所有文件的PHP类
2006/10/09 PHP
php防盗链的常用方法小结
2010/07/02 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
2017/06/07 PHP
php双层循环(九九乘法表)
2017/10/23 PHP
学习ExtJS(一) 之基础前提
2009/10/07 Javascript
jQuery 通过事件委派一次绑定多种事件,以减少事件冗余
2010/06/30 Javascript
js,jQuery 排序的实现代码,网页标签排序的实现,标签排序
2011/04/27 Javascript
editable.js 基于jquery的表格的编辑插件
2011/10/24 Javascript
转义字符(\)对JavaScript中JSON.parse的影响概述
2013/07/17 Javascript
基于jquery实现动态竖向柱状条特效
2016/02/12 Javascript
Vue.js 表单校验插件
2016/08/14 Javascript
JavaScript字符串对象
2017/01/14 Javascript
mongoose设置unique不生效问题的解决及如何移除unique的限制
2017/11/07 Javascript
JS原型继承四步曲及原型继承图一览
2017/11/28 Javascript
vue组件传值的实现方式小结【三种方式】
2020/02/05 Javascript
[01:15:45]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第一局
2016/02/26 DOTA
[51:26]VP vs VG 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python基础教程之获取本机ip数据包示例
2014/02/10 Python
Python中线程编程之threading模块的使用详解
2015/06/23 Python
基于python中staticmethod和classmethod的区别(详解)
2017/10/24 Python
tensorflow实现KNN识别MNIST
2018/03/12 Python
python matplotlib中的subplot函数使用详解
2020/01/19 Python
Django CBV模型源码运行流程详解
2020/08/17 Python
英国工具中心:UK Tool Centre
2017/07/10 全球购物
JSF面试题:如何管量web层中的Bean,用什么标签。如何通过jsp页面与Bean绑定在一起进行处理?
2012/10/05 面试题
金智子午JAVA面试题
2015/09/04 面试题
Unix里面如何在后台运行程序
2016/10/14 面试题
师范生实习自我鉴定
2013/11/01 职场文书
车工岗位职责
2013/11/26 职场文书
政治学专业毕业生求职信
2014/08/11 职场文书
银行柜员与客户起冲突检讨书
2014/09/27 职场文书
考博导师推荐信范文
2015/03/27 职场文书
迎新年主持词
2015/07/06 职场文书
Mysql 如何批量插入数据
2021/04/06 MySQL
win10系统xps文件怎么打开?win10打开xps文件的两种操作方法
2022/07/23 数码科技