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 动画基础教程
Dec 25 Javascript
ASP小贴士/ASP Tips javascript tips可以当桌面
Dec 10 Javascript
js字符串转成JSON
Nov 07 Javascript
js 高效去除数组重复元素示例代码
Dec 19 Javascript
Jquery如何实现点击时高亮显示代码
Jan 22 Javascript
swtich/if...else的替代语句
Aug 16 Javascript
jQuery实现向下滑出的平滑下拉菜单效果
Aug 21 Javascript
jquery实现在网页指定区域显示自定义右键菜单效果
Aug 25 Javascript
AngularJs篇:使用AngularJs打造一个简易权限系统的实现代码
Dec 26 Javascript
基于 Immutable.js 实现撤销重做功能的实例代码
Mar 01 Javascript
浅谈微信JS-SDK 微信分享接口开发(介绍版)
Aug 15 Javascript
详解JavaScript中的强制类型转换
Apr 15 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
php输出echo、print、print_r、printf、sprintf、var_dump的区别比较
2013/06/21 PHP
Php header()函数语法及使用代码
2013/11/04 PHP
php使用curl简单抓取远程url的方法
2015/03/13 PHP
php实现求相对时间函数
2015/06/15 PHP
php头像上传预览实例代码
2017/05/02 PHP
PHP chop()函数讲解
2019/02/11 PHP
laravel config文件配置全局变量的例子
2019/10/13 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
PHP7新增函数
2021/03/09 PHP
求得div 下 img的src地址的js代码
2007/02/28 Javascript
JavaScript 中的replace方法说明
2007/04/13 Javascript
Auntion-TableSort国人写的一个javascript表格排序的东西
2007/11/12 Javascript
js 数据类型转换总结笔记
2011/01/17 Javascript
jquery中获取select选中值的代码
2011/06/27 Javascript
autoPlay 基于jquery的图片自动播放效果
2011/12/07 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
2021/02/25 Javascript
angular中实现li或者某个元素点击变色的两种方法
2017/07/27 Javascript
vue如何安装使用Quill富文本编辑器
2018/09/21 Javascript
微信小程序中显示倒计时代码实例
2019/05/09 Javascript
[01:12:40]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第三场 1月25日
2021/03/11 DOTA
python通过smpt发送邮件的方法
2015/04/30 Python
使用python实现生成用户信息
2017/03/20 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
2018/10/16 Python
Python程序包的构建和发布过程示例详解
2019/06/09 Python
详解Pandas之容易让人混淆的行选择和列选择
2019/07/10 Python
如何利用python给图片添加半透明水印
2019/09/06 Python
python sorted函数的小练习及解答
2019/09/18 Python
Python logging日志模块 配置文件方式
2020/07/12 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
2021/02/24 Python
CSS3中的clip-path使用攻略
2015/08/03 HTML / CSS
AmazeUI 单选框和多选框的实现示例
2020/08/18 HTML / CSS
爱尔兰家电数码商城:Currys PC World爱尔兰
2016/07/23 全球购物
党员自我批评与反省材料
2014/02/10 职场文书
乡村文明行动实施方案
2014/03/29 职场文书
铣床操作工岗位职责
2014/06/13 职场文书
MySQL约束(创建表时的各种条件说明)
2022/06/21 MySQL