vue單頁面如何通過prerender-spa-plugin插件進(jìn)行SEO優(yōu)化
prerender-spa-plugin插件只能對(duì)靜態(tài)的頁面做預(yù)渲染實(shí)現(xiàn)SEO優(yōu)化,如果是后臺(tái)請(qǐng)求的數(shù)據(jù)需要做SSR處理,例如商品詳情頁,可使用Vue SSR,詳細(xì)參考我的另一篇博客:VueSSR的一些理解和詳細(xì)配置
一、前言
之前雖然一直有看過SEO相關(guān)的文章,但是一直沒去實(shí)踐過,然后突然技術(shù)總監(jiān)要求要對(duì)咱們的官網(wǎng)做個(gè)SEO的優(yōu)化。
于是才正式動(dòng)手搞這玩意。地址:火石創(chuàng)造官網(wǎng)
首頁用的根目錄的index.html

/bluebook頁面用的bluebook目錄下的index.html。

對(duì)于搜索引擎蜘蛛的工作原理就不再詳細(xì)的復(fù)述了,網(wǎng)上相關(guān)博客很多。
大致講講自己對(duì)單頁面應(yīng)用的SEO不友好的地方的理解吧。
對(duì)于單頁面應(yīng)用,只有一個(gè)html文件,是所有頁面的載體,vue通過js控制路由然后渲染出對(duì)應(yīng)的頁面,而搜索引擎蜘蛛是不會(huì)去執(zhí)行頁面的js的,導(dǎo)致搜索引擎蜘蛛只能收錄index.html一個(gè)頁面,在百度中就搜索不到相關(guān)的子頁面的內(nèi)容。這會(huì)引起兩個(gè)問題
1. 收錄的頁面少了,點(diǎn)擊量之類的也就少了;
2. 不能對(duì)對(duì)應(yīng)的頁面做TDK(title, keywords, description)不同的配置,這個(gè)可以配合vue-meta-info插件生成。
那么,要想解決這個(gè)問題,html文檔就不能通過js生成,目前了解到的有兩種方法,vue的ssr渲染(官方文檔)和prerender-spa-plugin插件實(shí)現(xiàn)(詳細(xì)配置)。SSR目前沒有條件去嘗試,所以選了個(gè)較為簡(jiǎn)便的第二種方法。
二、過程
prerender-spa-plugin的配置其實(shí)很簡(jiǎn)單。就下面一個(gè)配置就行了。

主要講講集成的gu過程中遇到的坑:
1. 路由mode必須是history;
2. 新的html已經(jīng)生成了,但是點(diǎn)擊菜單跳不進(jìn)去那個(gè)html,還是用的js渲染的。
解決:
1.將根目錄的index.html也設(shè)計(jì)成預(yù)渲染頁面; 2. 在最外層的<router-view></router-view>外加一個(gè)<div id="app"></div>(渲染節(jié)點(diǎn))
3. mode由hash改成history布到服務(wù)器上刷新頁面會(huì)404。nginx需要更改配置
location / {
try_files $uri $uri/ /index.html;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}4. 打開頁面之后,切換其他非預(yù)渲染頁面不渲染內(nèi)容了。
解決:
在預(yù)渲染出來的頁面組件里面加一個(gè)<div id="app"></div>。因?yàn)関ue是掛在在div idwe為app的節(jié)點(diǎn)上的,把主頁通過插件預(yù)渲染之后,自然沒了這個(gè)div,自然就渲染不出來了。

目前只有以上收獲,有新的進(jìn)展再更新。
補(bǔ)充:
1. 只有a標(biāo)簽,才能跳進(jìn)預(yù)渲染頁面,router-link或者$router.push跳轉(zhuǎn)會(huì)被js代理渲染;
2. 如detail/:id或者user/:id這種動(dòng)態(tài)路由也是可以使用預(yù)渲染的,prerender-spa-plugin插件中配置['/detail']即可,當(dāng)然,這個(gè)預(yù)渲染頁面肯定是沒內(nèi)容的,會(huì)在訪問的時(shí)候生成真是的數(shù)據(jù)。 這個(gè)有誤,貌似處理不了動(dòng)態(tài)頁面...
3. prerender-spa-plugin的新版本是依賴的谷歌的瀏覽器的,利用谷歌的無頭瀏覽器,在不打開瀏覽器的情況下,渲染編譯出html。但是谷歌瀏覽器又一兩百兆,在window環(huán)境還好,但是到服務(wù)器上,通過jekins去編譯,或者直接在服務(wù)器上執(zhí)行npm run build會(huì)失敗。這時(shí)候跳過安裝谷歌瀏覽器,去谷歌下個(gè)linux版本的瀏覽器,然后在服務(wù)器上安裝,一般安裝好之后會(huì)默認(rèn)在/usr/lib中,代碼里面也不需要在prerender-spa-plugin配置中配置puppeteer.launch的executablePath(可執(zhí)行路徑),會(huì)默認(rèn)去/usr/lib中尋找。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue在項(xiàng)目中實(shí)現(xiàn)base64加密解密的示例代碼
這篇文章主要為大家詳細(xì)介紹了vue在項(xiàng)目中實(shí)現(xiàn)base64加密解密的兩種方法,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,有需要的小伙伴可以了解一下2023-10-10
vue如何解決sass-loader的版本過高導(dǎo)致的編譯錯(cuò)誤
這篇文章主要介紹了vue如何解決sass-loader的版本過高導(dǎo)致的編譯錯(cuò)誤問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
vue在install時(shí)node-sass@4.14.1?postinstall:node?scripts/buil
最近在npm install 的時(shí)候遇到了個(gè)問題,所以給大家總結(jié)下,下面這篇文章主要給大家介紹了關(guān)于vue在install時(shí)node-sass@4.14.1?postinstall:node?scripts/build.js錯(cuò)誤的解決方法,需要的朋友可以參考下2023-05-05
詳解關(guān)于Vue2.0路由開啟keep-alive時(shí)需要注意的地方
這篇文章主要介紹了關(guān)于Vue2.0路由開啟keep-alive時(shí)需要注意的地方,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-09-09
Vue3中SetUp函數(shù)的參數(shù)props、context詳解
我們知道setup函數(shù)是組合API的核心入口函數(shù),下面這篇文章主要給大家介紹了關(guān)于Vue3中SetUp函數(shù)的參數(shù)props、context的相關(guān)資料,需要的朋友可以參考下2021-07-07
全面解析vue router 基本使用(動(dòng)態(tài)路由,嵌套路由)
路由,其實(shí)就是指向的意思,當(dāng)我點(diǎn)擊頁面上的home按鈕時(shí),頁面中就要顯示home的內(nèi)容,如果點(diǎn)擊頁面上的about 按鈕,頁面中就要顯示about 的內(nèi)容。這篇文章主要介紹了vue router 基本使用 ,需要的朋友可以參考下2018-09-09
在vue中實(shí)現(xiàn)某一些路由頁面隱藏導(dǎo)航欄的功能操作
這篇文章主要介紹了在vue中實(shí)現(xiàn)某一些路由頁面隱藏導(dǎo)航欄的功能操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-09-09
Vue或者React項(xiàng)目配置@路徑別名及智能提示方案
這篇文章主要介紹了Vue或者React項(xiàng)目配置@路徑別名及智能提示方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10

