Angular設(shè)置title信息解決SEO方面存在問題
Javascript框架在處理seo方面存在問題,因?yàn)榕老x在檢索seo信息的時(shí)候會(huì)讀不了js給其賦的值,導(dǎo)致搜索引擎收錄不了或者收錄了無效的信息,比如收錄的可能是title={{title}}這樣的,下面先說如何在路由跳轉(zhuǎn)時(shí)修改頁面的seo信息,現(xiàn)在spa跳轉(zhuǎn)一般用route-ui了,就以這個(gè)為基礎(chǔ)講解,在app.js配置項(xiàng)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' } })
然后使用通過監(jiān)聽$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); } }; } ]);
這里賦值是通過獲取當(dāng)前state中設(shè)置的title,也就是這里toState對(duì)象的值,當(dāng)我們打印這個(gè)toState時(shí)就會(huì)發(fā)現(xiàn):
這里是獲取的已經(jīng)設(shè)置好的data中pageTitle的值,如果不想寫在state里或者寫死,可以傳state中的唯一標(biāo)示,配合后臺(tái)接口,將查詢的title渲染到頁面;同樣meta標(biāo)簽如keywords、description可以在此時(shí)一同綁定;
上面說到j(luò)avascript框架在seo方面存在短板,應(yīng)對(duì)ng的這個(gè)問題市面上也有很多方案,比如prerender,seo.js等,思想都是在頁面加入表示,讓爬蟲在頁面渲染好后才去扒數(shù)據(jù),同時(shí)服務(wù)器上要配置些服務(wù),服務(wù)將檢測(cè)是否有對(duì)應(yīng)這個(gè)URL的快照或者緩存的頁面,如果存在就發(fā)給爬蟲,如 果不存在,則生成快照,然后發(fā)送正確的頁面給爬蟲;處理起來還是要費(fèi)些功夫的,所以也可以采用ng+常規(guī)的開發(fā)模式,一些重要的頁面不要用這種頁面渲染seo的方式,或者建立專門的seo信息頁;所以在這方面感覺用ng框架做app(ionic)還是很合適的;
以上所述是小編給大家介紹的Angular設(shè)置title信息解決SEO方面存在問題,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
用WebStorm進(jìn)行Angularjs 2開發(fā)(環(huán)境篇:Windows 10,Angular-cli方式)
這篇文章主要介紹了用WebStorm進(jìn)行Angularjs 2開發(fā)(環(huán)境篇:Windows 10,Angular-cli方式),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-12-12如何使用AngularJs打造權(quán)限管理系統(tǒng)【簡易型】
這篇文章主要介紹了使用AngularJs打造權(quán)限管理系統(tǒng)【簡易型】的相關(guān)資料,需要的朋友可以參考下2016-05-05Angular?結(jié)合?dygraphs?實(shí)現(xiàn)?annotation功能
這篇文章主要介紹了Angular?結(jié)合?dygraphs?實(shí)現(xiàn)?annotation,本文,我們直接結(jié)合 Angular 來演示,如何通過 dygraphs 實(shí)現(xiàn)折線圖上的 annotation 的功能,需要的朋友可以參考下2022-08-08對(duì)angular2中的ngfor和ngif指令嵌套實(shí)例講解
今天小編就為大家分享一篇對(duì)angular2中的ngfor和ngif指令嵌套實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-09-09AngularJS實(shí)現(xiàn)一次監(jiān)聽多個(gè)值發(fā)生的變化
這文章給大家介紹了如何利用AngularJS一次監(jiān)聽多個(gè)值發(fā)生的變化,文中通過示例代碼演示,這樣更方便大家理解學(xué)習(xí),有需要的可以參考借鑒。2016-08-08AngularJs Dependency Injection(DI,依賴注入)
本文主要介紹AngularJs Dependency Injection,這里整理了詳細(xì)資料及示例代碼有興趣的小伙伴可以參考下2016-09-09