vue做seo優(yōu)化

一、什么是seo?

SEO是由英文Search Engine

Optimization縮寫而來(lái), 中文意譯為“搜索引擎優(yōu)化”天试。SEO是指通過對(duì)網(wǎng)站進(jìn)行站內(nèi)優(yōu)化和修復(fù)(網(wǎng)站W(wǎng)eb結(jié)構(gòu)調(diào)整、網(wǎng)站內(nèi)容建設(shè)然低、網(wǎng)站代碼優(yōu)化和編碼等)和站外優(yōu)化喜每,從而提高網(wǎng)站的網(wǎng)站關(guān)鍵詞排名以及公司產(chǎn)品的曝光度。通過搜索引擎查找信息是當(dāng)今網(wǎng)民們尋找網(wǎng)上信息和資源的主要手段雳攘。

二带兜、引擎蜘蛛的工作原理?

從 meta 標(biāo)簽中讀取 keywords 吨灭、 description 的內(nèi)容刚照。

根據(jù)語(yǔ)義化的 html 的標(biāo)簽爬取和分析內(nèi)容。一個(gè)整體都是用 div 標(biāo)簽的網(wǎng)站和正確使用了 html5 標(biāo)簽的效果是不一樣的喧兄。

讀取 a 標(biāo)簽里的鏈接无畔,通過 a 標(biāo)簽的鏈接可以跳轉(zhuǎn)到別的網(wǎng)站。(爬蟲是先跳轉(zhuǎn)吠冤,還是繼續(xù)爬內(nèi)容再跳轉(zhuǎn)浑彰,就看算法是廣度優(yōu)先還是深度優(yōu)先了)

像 h1 - h6 標(biāo)簽是具有不同程度的強(qiáng)調(diào)意義的。

一般將 h1 視為重要內(nèi)容咨演。同樣有強(qiáng)調(diào)內(nèi)容還有 strong 闸昨、 em 標(biāo)簽蚯斯。

三薄风、seo為啥對(duì)vue單頁(yè)面不友好?

1)、爬蟲在爬取的過程中拍嵌,不會(huì)去執(zhí)行js遭赂,所以隱藏在js中的跳轉(zhuǎn)也不會(huì)獲取到

2)、vue通過js控制路由然后渲染出對(duì)應(yīng)的頁(yè)面横辆,而搜索引擎蜘蛛是不會(huì)去執(zhí)行頁(yè)面的js的撇他,導(dǎo)致搜索引擎蜘蛛只能收錄index.html一個(gè)頁(yè)面,在百度中就搜索不到相關(guān)的子頁(yè)面的內(nèi)容。

3)困肩、我們加載頁(yè)面的時(shí)候,瀏覽器的渲染包含:html的解析划纽、dom樹的構(gòu)建、cssom構(gòu)建锌畸、javascript解析勇劣、布局、繪制,當(dāng)解析到j(luò)avascript的時(shí)候才回去觸發(fā)vue的渲染,然后元素掛載到id為app的div上,這個(gè)時(shí)候我們才能看到我們頁(yè)面的內(nèi)容,所以即使vue渲染機(jī)制很快我們?nèi)匀荒軌蚩吹揭欢螘r(shí)間的白屏情況,用戶體驗(yàn)不好

話不多說:使用prerender-spa-plugin解決

1潭枣、安裝prerender-spa-plugin:

npm install prerender-spa-plugin --save

2比默、配置vue.config.js代碼

// vue.config.js

const PrerenderSPAPlugin = require('prerender-spa-plugin');

const Renderer = PrerenderSPAPlugin.PuppeteerRenderer;

const path = require('path');

module.exports = {

? ? publicPath: "/",

? ? configureWebpack: config => {

? ? ? ? if (process.env.NODE_ENV !== 'production') return;

? ? ? ? return {

? ? ? ? ? ? plugins: [

? ? ? ? ? ? ? ? new PrerenderSPAPlugin({


? ? ? ? ? ? ? ? ? ? staticDir: path.join(__dirname, 'dist'),

? ? ? ? ? ? ? ? ? ? // 打包的路由路徑

? ? ? ? ? ? ? ? ? ? routes: ['/', '/solution', '/product', '/productDetails', '/news', '/newsDetails', '/download', '/AboutUs', '/contactUs'],

? ? ? ? ? ? ? ? ? ? ?// 這個(gè)很重要,如果沒有配置這段盆犁,也不會(huì)進(jìn)行預(yù)編譯

? ? ? ? ? ? ? ? ? ? renderer: new Renderer({

? ? ? ? ? ? ? ? ? ? ? ? inject: {

? ? ? ? ? ? ? ? ? ? ? ? ? ? foo: "bar"

? ? ? ? ? ? ? ? ? ? ? ? },

? ? ? ? ? ? ? ? ? ? ? ? headless: false,

? ? ? ? ? ? ? ? ? ? ? ? // 最大頁(yè)面數(shù)

? ? ? ? ? ? ? ? ? ? ? ? maxConcurrentRoutes: 20,

? ? ? ? ? ? ? ? ? ? ? ? renderAfterTime: 500000,

? ? ? ? ? ? ? ? ? ? ? ? // 在 main.js 中 document.dispatchEvent(new Event('render-event'))命咐,兩者的事件名稱要對(duì)應(yīng)上。

? ? ? ? ? ? ? ? ? ? ? ? renderAfterDocumentEvent: 'render-event'

? ? ? ? ? ? ? ? ? ? })

? ? ? ? ? ? ? ? })

? ? ? ? ? ? ]

? ? ? ? }

? ? }

};

3谐岁、配置main.js

new Vue({

? router,

? store,

? render: h => h(App),

//添加到這里,這里的render-event和vue.config.js里面的renderAfterDocumentEvent配置名稱一致

? mounted () {

? ? document.dispatchEvent(new Event('render-event'))

? }

}).$mount('#app')

4醋奠、路由router模式為 history :

const router = new VueRouter({

? ? mode: 'history',

? ? routes

})

然后就是npm run build打包

打包后的文件目錄

遇到的問題

1.本地起服務(wù)測(cè)試,會(huì)發(fā)現(xiàn)能正常運(yùn)行,但是做了優(yōu)化的頁(yè)面刷新之后會(huì)沒有樣式造成問題的原因就是打包的時(shí)候vue.config.js的資源路徑配置不對(duì)沒有優(yōu)化之前的路徑是

vue.config.js修改之前的配置

打包之后路由下面的資源路徑是這樣的


修改前打包的路徑

重點(diǎn):解決辦法

優(yōu)化之后的路徑是

vue.config.js修改之后的配置

打包之后的路由下面的資源路徑是這樣的


修改后打包的路徑

就是路徑前面多了一個(gè)/,采用了絕對(duì)路徑

2伊佃、需要一個(gè)服務(wù)來(lái)測(cè)試

1)钝域、執(zhí)行npm install anywhere -g 安裝anywhere

2)、在對(duì)應(yīng)路徑下打開cmd锭魔,執(zhí)行anywhere指令例证。如圖:


執(zhí)行命令得到對(duì)應(yīng)的鏈接

然后就可以在瀏覽器輸入地址訪了,可以看到每個(gè)路由對(duì)應(yīng)的 HTML

瀏覽器訪問http://你的ip:8000/contact后看到一下內(nèi)容以及對(duì)應(yīng)的html

鼠標(biāo)右鍵審查元素可以看到

打包后的html文件

然后就是為這些打包的靜態(tài)頁(yè)面分配title和meta標(biāo)簽迷捧,需要用到?vue-meta-info

安裝及引入

這樣在組件頁(yè)面中就可以使用了

假設(shè)你要給demo.vue添加title织咧,meta標(biāo)簽

頁(yè)面使用

到此SEO優(yōu)化基本已經(jīng)完成

如果對(duì)你有用,請(qǐng)贊一個(gè)再走

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末漠秋,一起剝皮案震驚了整個(gè)濱河市笙蒙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌庆锦,老刑警劉巖捅位,帶你破解...
    沈念sama閱讀 221,888評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異搂抒,居然都是意外死亡艇搀,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門求晶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)焰雕,“玉大人,你說我怎么就攤上這事芳杏【仄ǎ” “怎么了辟宗?”我有些...
    開封第一講書人閱讀 168,386評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)吝秕。 經(jīng)常有香客問我泊脐,道長(zhǎng),這世上最難降的妖魔是什么烁峭? 我笑而不...
    開封第一講書人閱讀 59,726評(píng)論 1 297
  • 正文 為了忘掉前任晨抡,我火速辦了婚禮,結(jié)果婚禮上则剃,老公的妹妹穿的比我還像新娘耘柱。我一直安慰自己,他們只是感情好棍现,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,729評(píng)論 6 397
  • 文/花漫 我一把揭開白布调煎。 她就那樣靜靜地躺著,像睡著了一般己肮。 火紅的嫁衣襯著肌膚如雪士袄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,337評(píng)論 1 310
  • 那天谎僻,我揣著相機(jī)與錄音娄柳,去河邊找鬼。 笑死艘绍,一個(gè)胖子當(dāng)著我的面吹牛赤拒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播诱鞠,決...
    沈念sama閱讀 40,902評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼挎挖,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了航夺?” 一聲冷哼從身側(cè)響起蕉朵,我...
    開封第一講書人閱讀 39,807評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎阳掐,沒想到半個(gè)月后始衅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,349評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缭保,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,439評(píng)論 3 340
  • 正文 我和宋清朗相戀三年汛闸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涮俄。...
    茶點(diǎn)故事閱讀 40,567評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蛉拙,死狀恐怖尸闸,靈堂內(nèi)的尸體忽然破棺而出彻亲,到底是詐尸還是另有隱情孕锄,我是刑警寧澤,帶...
    沈念sama閱讀 36,242評(píng)論 5 350
  • 正文 年R本政府宣布苞尝,位于F島的核電站畸肆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏宙址。R本人自食惡果不足惜轴脐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,933評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望抡砂。 院中可真熱鬧大咱,春花似錦、人聲如沸注益。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)丑搔。三九已至厦瓢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間啤月,已是汗流浹背煮仇。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谎仲,地道東北人浙垫。 一個(gè)月前我還...
    沈念sama閱讀 48,995評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像郑诺,于是被迫代替她去往敵國(guó)和親绞呈。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,585評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容