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 Ajax之$.get()方法和$.post()方法
Oct 12 Javascript
JavaScript Event学习第六章 事件的访问
Feb 07 Javascript
jQuery setTimeout()函数使用方法
Apr 07 Javascript
jQuery实现页面滚动时动态加载内容的方法
Mar 20 Javascript
jQuery+css实现的切换图片功能代码
Jan 27 Javascript
jQuery获取radio选中项的值实例
Jun 18 Javascript
js实现String.Fomat的实例代码
Sep 02 Javascript
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
Jan 21 jQuery
node.js调用C++函数的方法示例
Sep 21 Javascript
JS中超越现实的匿名函数用法实例分析
Jun 21 Javascript
vue学习笔记之slot插槽基本用法实例分析
Feb 01 Javascript
JavaScript HTML DOM 元素 (节点)新增,编辑,删除操作实例分析
Mar 02 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
COM in PHP (winows only)
2006/10/09 PHP
php合并数组array_merge函数运算符加号与的区别
2008/10/31 PHP
php file_put_contents()功能函数(集成了fopen、fwrite、fclose)
2011/05/24 PHP
php读取excel文件的简单实例
2013/08/26 PHP
深入讲解PHP Session及如何保持其不过期的方法
2015/08/18 PHP
将字符串转换成gb2312或者utf-8编码的参数(js版)
2013/04/10 Javascript
Jquery显示和隐藏元素或设为只读(含Ligerui的控件禁用,实例说明介绍)
2013/07/09 Javascript
JS判断两个时间大小的示例代码
2014/01/28 Javascript
javascript页面加载完执行事件代码
2014/02/11 Javascript
JavaScript中如何通过arguments对象实现对象的重载
2014/05/12 Javascript
JavaScript实现的多种鼠标拖放效果
2015/11/03 Javascript
基于JavaScript实现表单密码的隐藏和显示出来
2016/03/02 Javascript
基于Node的React图片上传组件实现实例代码
2017/05/10 Javascript
最全的JavaScript开发工具列表 总有一款适合你
2017/06/29 Javascript
Electron-vue脚手架改造vue项目的方法
2018/10/22 Javascript
vue cli4.0项目引入typescript的方法
2020/07/17 Javascript
微信小程序弹窗禁止页面滚动的实现代码
2020/12/30 Javascript
python分治法求二维数组局部峰值方法
2018/04/03 Python
python修改list中所有元素类型的三种方法
2018/04/09 Python
Python使用Pandas库实现MySQL数据库的读写
2019/07/06 Python
Python列表删除元素del、pop()和remove()的区别小结
2019/09/11 Python
python实现七段数码管和倒计时效果
2019/11/23 Python
浅谈对pytroch中torch.autograd.backward的思考
2019/12/27 Python
tf.concat中axis的含义与使用详解
2020/02/07 Python
澳大利亚第一旅行车和房车配件店:Caravan RV Camping
2020/12/26 全球购物
这段代码难道不该打印出56吗
2013/02/27 面试题
网络教育毕业生自我鉴定
2013/10/10 职场文书
教师自荐信范文
2013/12/09 职场文书
2014年度党员自我评议
2014/09/13 职场文书
靠谱的活动总结
2019/04/16 职场文书
在 Golang 中实现 Cache::remember 方法详解
2021/03/30 Python
python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
2021/04/12 Python
Python爬取英雄联盟MSI直播间弹幕并生成词云图
2021/06/01 Python
python爬取某网站原图作为壁纸
2021/06/02 Python
详解使用内网穿透工具Ngrok代理本地服务
2022/03/31 Servers
Oracle中日期的使用方法实例
2022/07/07 Oracle