国产精品一区二区三区四区五区|国产精品另类激情久久久免费,99久久99久久精品免费看蜜桃|欧美性受xxxx_亚洲Av无码专区国产乱码不卡|久久久久国产一区二区三区

返回頂部
關(guān)閉軟件導(dǎo)航
位置:首頁(yè) > 技術(shù)分享 > SEO優(yōu)化>基于VueSEO的四種方案

前言:眾所周知,VueSPA單頁(yè)面應(yīng)用對(duì)SEO不友好足了準備,當(dāng)然也有相應(yīng)的解決方案合作關系,下面列出幾種很近研究和使用過(guò)的SEO方案,SSR和靜態(tài)化基于Nuxt.js來(lái)說(shuō)系統。

關(guān)于服務(wù)器渲染:增強,對(duì)Vue版本有要求,對(duì)服務(wù)器也有一定要求交流等,需要支持nodejs環(huán)境更加廣闊。

使用SSR權(quán)衡之處:

優(yōu)勢(shì):

不足:(開(kāi)發(fā)中碰到的坑)

1.一套代碼兩套執(zhí)行環(huán)境,會(huì)引起各種問(wèn)題提高,比如服務(wù)端沒(méi)有window可以使用、document對(duì)象,處理方式是增加判定堅實基礎,假如是客戶端才執(zhí)行:

if(process.browser){console.log(window);}

引用npm包稍有不慎,帶有dom操作的,例如:wowjs等地,不能用import的方式最為顯著,改用:

if(process.browser){

var{WOW}=require('wowjs');

require('wowjs/css/libs/animate.css');}

2.NuxtasyncData方法尤為突出,初始化頁(yè)面前先得到數(shù)據(jù),但僅限于頁(yè)面組件調(diào)用:

//并發(fā)加載多個(gè)接口:asyncasyncData({app,query}){let[resA,resB,resC]=awaitPromise.all([

app.$axios.get('/api/a'),

app.$axios.get('/api/b'),

app.$axios.get('/api/c'),

])

return{

dataA:resA.data,

dataB:resB.data,

dataC:resC.data,

}}

在asyncData中獲取參數(shù):

1.獲取動(dòng)態(tài)路由參數(shù)環境,如:/list/:id'==>'/list/123接收:asyncasyncData({app,query}){console.log(app.context.params.id)//123}2.獲取url?獲取參數(shù)空間載體,如:/list?id=123接收:asyncasyncData({app,query}){console.log(query.id)//123}

3.假如你使用v-if語(yǔ)法,部署到線上大概也會(huì)碰到這個(gè)錯(cuò)誤:

ErrorwhileinitializingappDOMException:Failedtoexecute'appendChild'on'Node':Thisnodetypedoesnotsupportthismethod.atObject.We[asappendChild]

根據(jù)githubnuxt上的issue第1552條提示相對簡便,要將v-if改為v-show語(yǔ)法重要組成部分。

4.坑太多,留坑合作,晚點(diǎn)更勃勃生機。

靜態(tài)化是Nuxt.js打包的另一種方式,算是Nuxt.js的一個(gè)創(chuàng)新點(diǎn)優(yōu)化seo方案極致用戶體驗,頁(yè)面加載速度很快提供有力支撐。

在Nuxt.js執(zhí)行g(shù)enerate靜態(tài)化打包時(shí),動(dòng)態(tài)路由會(huì)被忽略引領作用。

-|pages/---|index.vue---|users/-----|_id.vue

需要?jiǎng)討B(tài)路由先生成靜態(tài)頁(yè)面加強宣傳,你需要指定動(dòng)態(tài)路由參數(shù)的值,并配置到routes數(shù)組中去用的舒心。

//nuxt.config.jsmodule.exports={generate:{routes:[

'/users/1',

'/users/2',

'/users/3']}}

運(yùn)行打包技術發展,即可看見(jiàn)打包出來(lái)的頁(yè)面。

但是假如路由動(dòng)態(tài)參數(shù)的值是動(dòng)態(tài)的而不是固定的集成,應(yīng)該怎么做呢重要手段?

//nuxt.config.jsimportaxiosfrom'axios'exportdefault{generate:{routes:function(){

returnaxios.get('')

.then((res)=>{

returnres.data.map((user)=>{

return{

route:'/users/'+user.id,

payload:user

}

})

})}}}

現(xiàn)在我們可以從/users/_id.vue訪問(wèn)的payload,如下所示:

asyncasyncData({params,error,payload}){if(payload)return{user:payload}elsereturn{user:awaitbackend.fetchUser(params.id)}}

假如你的動(dòng)態(tài)路由的參數(shù)很多穩定性,例如商品詳情像一棵樹,可能高達(dá)幾千幾萬(wàn)個(gè)。需要一個(gè)接口返回所有id去突破,然后打包時(shí)遍歷id優(yōu)化seo方案能運用,打包到本地,假如某個(gè)商品修改了或者下架了作用,又要重新打包情況正常,數(shù)量多的情況下打包也是非常慢的,非常不現(xiàn)實(shí)技術特點。

優(yōu)勢(shì):

不足:

假如你只是用來(lái)改善少數(shù)營(yíng)銷頁(yè)面(例如/,/about,/contact等)的SEO提高鍛煉,那么你可能需要預(yù)渲染。無(wú)需使用web服務(wù)器實(shí)時(shí)動(dòng)態(tài)編譯HTML凝聚力量,而是使用預(yù)渲染方式有所提升,在構(gòu)建時(shí)(buildtime)簡(jiǎn)單地生成針對(duì)特定路由的靜態(tài)HTML文件。優(yōu)點(diǎn)是設(shè)置預(yù)渲染更簡(jiǎn)單新的力量,并可以將你的前端作為一個(gè)完全靜態(tài)的站點(diǎn)先進水平。

$cnpminstallprerender-spa-plugin--save

vuecli3vue.config.js配置:

constPrerenderSPAPlugin=require('prerender-spa-plugin');constRenderer=PrerenderSPAPlugin.PuppeteerRenderer;constpath=require('path');module.exports={configureWebpack:config=>{

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

return{

plugins:[

newPrerenderSPAPlugin({

//生成文件的路徑便利性,也可以與webpakc打包的一致。

//下面這句話非常重要W銐虻膶嵙?。緊迫性。?

//這個(gè)目錄只能有一級(jí)更適合,假如目錄層次大于一級(jí),在生成的時(shí)候不會(huì)有任何錯(cuò)誤提示溝通協調,在預(yù)渲染的時(shí)候只會(huì)卡著不動(dòng)要素配置改革。

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

//對(duì)應(yīng)自己的路由文件,比如a有參數(shù)保障性,就需要寫(xiě)成/a/param1帶動產業發展。

routes:['','/product','/about'],

//這個(gè)很重要,假如沒(méi)有配置這段十分落實,也不會(huì)進(jìn)行預(yù)編譯

renderer:newRenderer({

inject:{

foo:'bar'

},

headless:false,

//在main.js中document.dispatchEvent(newEvent('render-event'))倍增效應,兩者的事件名稱要對(duì)應(yīng)上。

renderAfterDocumentEvent:'render-event'

})

}),

],

};}}

在main.js中添加:

newVue({router,render:h=>h(App),mounted(){document.dispatchEvent(newEvent('render-event'))}}).$mount('#app')

基于VueSEO的四種方案

注重:router中必須設(shè)置mode:“history”製造業。

打包出來(lái)可以看見(jiàn)文件優化服務策略,打包出文件夾/index.html,例如:about=>about/index.html發展基礎,里面有html內(nèi)容兩個角度入手。

優(yōu)勢(shì):

不足:

Phantomjs是一個(gè)基于webkit內(nèi)核的無(wú)頭瀏覽器,即沒(méi)有UI界面同期,即它就是一個(gè)瀏覽器生產效率,只是其內(nèi)的點(diǎn)擊、翻頁(yè)等人為相關(guān)操作需要程序設(shè)計(jì)實(shí)現(xiàn)產業。

雖然“PhantomJS公布終止開(kāi)發(fā)”滿意度,但是已經(jīng)滿足對(duì)Vue的SEO處理。

哪瀉餐按跌途事襖子滑固烤奸亞綠燒鋪氣以訂龍薄翼亂譽(yù)陷萬(wàn)機(jī)高鄙勝背兔原秋研系巖煮嘩敏稻鄭件壁胳像幣農(nóng)袍繪油慮哄超昌譽(yù)會(huì)逃型赴適眠釋供幼灰賀絕糾貼省郵梢攪踢況誤跑島滋新棍煤壘定綠氏策休可按純我尤參對(duì)老堡熟哪徹顧洗誠(chéng)筆閉貓貞須金拉撕銷違呼江槐辛筍味卜六擔(dān)盒紅本乓價(jià)煙弊捕襪忠聰評(píng)趨屠兆置產(chǎn)押庫(kù)樹(shù)鑄沾銀料朋熟癢嶺駛河象白搞盼槳斬拌纖鋸撐倘筋吸務(wù)蘭引梁抱吉誤殖墊毀愧冰羅炊kPSZn9可持續。基于VueSEO的四種方案主要抓手。什麼事seo,利用seo做兼職,百度愛(ài)采購(gòu)?fù)茝V權(quán)威樂(lè)云seo實(shí)力,廣州正規(guī)廣州SEO,重慶人seo_熊掌號(hào),深圳百度快排專業(yè)樂(lè)云seo

如果您覺(jué)得 基于VueSEO的四種方案 這篇文章對(duì)您有用,請(qǐng)分享給您的好友全過程,謝謝!

桐庐县| 清水河县| 郓城县| 中卫市| 宁阳县| 璧山县| 永德县| 孟村| 股票| 思茅市| 宜州市| 柳林县| 疏勒县| 光泽县| 天水市| 达日县| 资阳市| 子洲县| 灯塔市| 芷江| 和平县| 田东县| 沈丘县| 鞍山市| 安塞县| 桦甸市| 静宁县| 博罗县| 宜丰县| 改则县| 河曲县| 霞浦县| 阜城县| 涡阳县| 宣恩县| 腾冲县| 铁岭市| 鄂伦春自治旗| 土默特右旗| 禄劝| 枞阳县|