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 相关文章推荐
cookie的复制与使用记住用户名实现代码
Nov 04 Javascript
解决bootstrap中modal遇到Esc键无法关闭页面
Mar 09 Javascript
JSONP和批量操作功能的实现方法
Aug 21 Javascript
Angularjs实现带查找筛选功能的select下拉框示例代码
Oct 04 Javascript
深入对Vue.js $watch方法的理解
Mar 20 Javascript
vue2.0多条件搜索组件使用详解
Mar 26 Javascript
bootstrap Table服务端处理分页(后台是.net)
Oct 19 Javascript
详解Vue项目中实现锚点定位
Apr 24 Javascript
基于Vue实现电商SKU组合算法问题
May 29 Javascript
Vue.js项目实战之多语种网站的功能实现(租车)
Aug 07 Javascript
微信小程序 可搜索的地址选择实现详解
Aug 28 Javascript
Layer UI表格列日期格式化及取消自动填充日期的实现方法
May 10 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 magic_quotes_gpc的一点认识与分析
2008/08/18 PHP
整理的一些实用WordPress后台MySQL操作命令
2013/01/07 PHP
PHP7正式版测试,性能惊艳!
2015/12/08 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
2015/12/10 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
PHP PDOStatement::closeCursor讲解
2019/01/30 PHP
Thinkphp5框架异常处理操作实例分析
2020/06/03 PHP
JavaScript 自动分号插入(JavaScript synat:auto semicolon insertion)
2009/11/04 Javascript
jquery实现心算练习代码
2010/12/06 Javascript
ASP.NET jQuery 实例13 原创jQuery文本框字符限制插件-TextArea Counter
2012/02/03 Javascript
跟我学习javascript的循环
2015/11/18 Javascript
javascript表单处理具体实现代码(表单、链接、按钮)
2016/05/07 Javascript
jQuery实现的省市县三级联动菜单效果完整实例
2016/08/01 Javascript
详细解读Jquery各Ajax函数($.get(),$.post(),$.ajax(),$.getJSON())
2016/08/15 Javascript
Vue.directive()的用法和实例详解
2018/03/04 Javascript
使用Vue做一个简单的todo应用的三种方式的示例代码
2018/10/20 Javascript
微信小程序实现单选选项卡切换效果
2020/06/19 Javascript
vue组件间的参数传递实例详解
2019/04/26 Javascript
Vue拖拽组件列表实现动态页面配置功能
2019/06/17 Javascript
Vue如何基于es6导入外部js文件
2020/05/15 Javascript
详解js中的几种常用设计模式
2020/07/16 Javascript
JS实现页面鼠标点击出现图片特效
2020/08/19 Javascript
python进阶教程之异常处理
2014/08/30 Python
详解分布式任务队列Celery使用说明
2018/11/29 Python
Python3 pip3 list 出现 DEPRECATION 警告的解决方法
2019/02/16 Python
Django框架搭建的简易图书信息网站案例
2019/05/25 Python
keras 自定义loss层+接受输入实例
2020/06/28 Python
Yahoo-PHP面试题3
2012/01/14 面试题
税务专业毕业生自荐信
2013/11/10 职场文书
2014年三八妇女节活动总结
2014/03/01 职场文书
酒店管理毕业生自我鉴定
2014/03/02 职场文书
2015年教师见习期工作总结
2015/05/20 职场文书
电影雨中的树观后感
2015/06/15 职场文书
同事离别感言
2015/08/04 职场文书
《我要的是葫芦》教学反思
2016/02/18 职场文书
Spring Boot配合PageHelper优化大表查询数据分页
2022/04/20 Java/Android