
Javascript框架在处理seo方面存在问题,因为爬虫在检索seo信息的时候会读不了js给其赋的值,导致搜索引擎收录不了或者收录了无效的信息,比如收录的可能是title={{title}}这样的,下面先说如何在路由跳转时修改页面的seo信息,现在spa跳转一般用route-ui了,就以这个为基础讲解,在app
js配置项state中加入title信息,如下:data:{pageTitle:'usertitle'}
state('index
user',{url:'/user',views:{'content@index':{templateUrl:'templateHtml/user/user
html',controller:'userCtrl'}},data:{pageTitle:'usertitle'}})
state('index
user
a',{url:'/a',templateUrl:'templateHtml/user/a
html',data:{pageTitle:'useratitle'}})
state('index
user
b',{url:'/b',templateUrl:'templateHtml/user/b
html',data:{pageTitle:'userbtitle'}})然后使用通过监听$stateChangeSuccess来修改页面title:app
directive('title',['$rootScope','$timeout',function($rootScope,$timeout){return{link:function(){varlistener=function(event,toState){console
log(toState);$timeout(function(){$rootScope
title=(toState
data&&toState
data
pageTitle)toState
data
pageTitle:'Defaulttitle';$rootScope
metakeywords="thisiskeywords"});};$rootScope
$on('$stateChangeSuccess',listener);}};}]);这里赋值是通过获取当前state中设置的title,也就是这里toState对象的值,当我们打印这个toState时就会发现:这里是获取的已经设置好的data中pageTitle的值,如果不想写在state里或者写死,可以传state中的唯一标示,配合后台接口,将查询的title渲染到页面;同样meta标签如keywords、description可以在此时一同绑定;上面说到javascript框架在seo方面存在短板,应对ng的这个问题市面上也有很多方案,比如prerender,seo
js等,思想都是在页面加入表示,让爬虫在页面渲染好后才去扒数据,同时服务器上要配置些服务,服务将检测是否有对应这个URL的快照或者缓存的页面,如果存在就发给爬虫,如果不存在,则生成快照,然后发送正确的页面给爬虫;处理起来还是要费些功夫的,所以也可以采用ng+常规的开发模式,一些重要的页面不要用这种页面渲染seo的方式,或者建立专门的seo信息页;所以在这方面感觉用ng框架做app(ionic)还是很合适的;以上所述是小编给大家介绍的Angular设置title信息解决SEO方面存在问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的
在此也非常感谢大家对脚本之家网站的支持!
这就是这个示例教程的最终效果。
上面一个导航条,然后是2个页面。
创建完成后,运行:
打开 /src/app/appcomponenthtml ,删除内容,添加:
打开 /app/stylesscss ,添加:
创建2个组件:
打开 /src/app/app-routingmodulets 添加:
打开 /src/app/home/homecomponenthtml ,替换内容为:
homecomponentts 中添加:
homecomponentscss 中添加:
homecomponenthtml 中添加:
/src/app/appmodulets 中添加:
homecomponentts 中定义 name 属性:
homecomponenthtml 中添加:
[ngIf] 绑定一个表达式 clickCounter > 4 。
如果表达式为 false ,将会调用 ngIfElse 指定的名为 none 的模板。
如果表达式为 true ,将会显示 ng-template 块中的HTML内容。
打开 homecomponenthtml ,修改最后一个 play-container class :
clickCounter > 4 之后,背景色就会变为**。
还可以指定多个CSS属性:
如果你想添加或者移除定义在CSS中的class,可以使用class绑定。
修改当前 play-container :
homecomponentscss 中添加:
可以使用 ngClass 设置多个 class:
homecomponentts 中添加:
homecomponentscss 中添加:
Service 可以复用,接下来我们创建一个 service,用来调用 api 获取数据,并显示在 list 页面。
g s 是 generate service 的缩写。
我们给这个service命名为 >
>
var bak = [];
for( var k in data){
bakpush(data[k]bak);
}
差不多这样吧,data是ng-repeat用到的JSON数组,通过遍历把每个json中bak(即“备份目录”中的值)取出放到一个数组bak里,也不知你要求的是不是这样。
以上就是关于AngularJS怎么做SEO全部的内容,包括:AngularJS怎么做SEO、Angular 8 起步教程、angularjs 在未登录时,如何拦截等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)