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 相关文章推荐
浅谈javascript中的作用域
Apr 07 Javascript
基于JavaScript实现生成名片、链接等二维码
Sep 20 Javascript
web 前端常用组件之Layer弹出层组件
Sep 22 Javascript
Java  Spring 事务回滚详解
Oct 17 Javascript
vue多级多选菜单组件开发
Sep 08 Javascript
JS实现浏览器打印、打印预览示例
Feb 28 Javascript
微信小程序实战之自定义模态弹窗(8)
Apr 18 Javascript
浅谈React和Redux的连接react-redux
Dec 04 Javascript
js中apply和Math.max()函数的问题及区别介绍
Mar 27 Javascript
微信小程序使用wxParse解析html的方法教程
Jul 06 Javascript
package.json中homepage属性的作用详解
Mar 11 Javascript
Vue v-for中的 input 或 select的值发生改变时触发事件操作
Aug 31 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
JAVA/JSP学习系列之四
2006/10/09 PHP
linux命令之调试工具strace的深入分析
2013/06/03 PHP
php输入数据统一类实例
2015/02/23 PHP
举例详解PHP脚本的测试方法
2015/08/05 PHP
Laravle eloquent 多对多模型关联实例详解
2017/11/22 PHP
innertext , insertadjacentelement , insertadjacenthtml , insertadjacenttext 等区别
2007/06/29 Javascript
二行代码解决全部网页木马
2008/03/28 Javascript
很全的显示阴历(农历)日期的js代码
2009/01/01 Javascript
推荐40个简单的 jQuery 导航插件和教程(下篇)
2012/09/14 Javascript
script的async属性以非阻塞的模式加载脚本
2013/01/15 Javascript
zTree插件之单选下拉菜单实例代码
2013/11/07 Javascript
js+jquery实现图片裁剪功能
2015/01/02 Javascript
2则自己编写的jQuery特效分享
2015/02/26 Javascript
JS运动改变单物体透明度的方法分析
2018/01/23 Javascript
浅谈webpack构建工具配置和常用插件总结
2020/05/11 Javascript
[58:42]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第一局
2016/02/27 DOTA
[46:40]VGJ.T vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python中的rfind()方法使用详解
2015/05/19 Python
Python 列表理解及使用方法
2017/10/27 Python
NumPy中的维度Axis详解
2019/11/26 Python
Django使用list对单个或者多个字段求values值实例
2020/03/31 Python
python使用Thread的setDaemon启动后台线程教程
2020/04/25 Python
详解python 内存优化
2020/08/17 Python
如何使用scrapy中的ItemLoader提取数据
2020/09/30 Python
露营世界:Camping World
2017/02/02 全球购物
Black Halo官方网站:购买连衣裙、礼服和连体裤
2018/06/13 全球购物
瑞士设计师家具和家居饰品网上商店:Bruno Wickart
2019/03/18 全球购物
数控专业应届生求职信
2013/11/27 职场文书
读书伴我成长演讲稿
2014/05/07 职场文书
食品安全宣传标语
2014/06/07 职场文书
企业标语口号
2014/06/10 职场文书
电子商务专业求职信
2014/07/10 职场文书
2015年六一儿童节演讲稿
2015/03/19 职场文书
2015年语文教研组工作总结
2015/05/23 职场文书
JavaScript 事件捕获冒泡与捕获详情
2021/11/11 Javascript
NoSQL优缺点与MongoDB数据库简介
2022/06/05 MongoDB