Vue prerender-spa-plugin 預渲染

Weih發表於2018-12-14

前言:

因為我做的是公司官網的專案,出於seo的需要,而且我是把專案做完了才來考慮seo的問題,所以如果用nuxt.js去做ssr的話會很麻煩,所以prerender-spa-plugin預渲染是一個不錯的選擇,畢竟也能達到seo的效果。

第一步:

開啟翻牆vpn (因為這個外掛是依賴於chromev瀏覽器的,如果沒有,在下載或者打包的時候會提示下載失敗或者警告,so先弄給能翻牆的vpn,現在很嚴苛,怎麼搜都弄不到,最後只能問總監大佬拿了一個付費版的~,叫Shadowsocks,如果不能翻牆的童鞋可以搜搜看~)

Vue  prerender-spa-plugin 預渲染

 
第二步:

npm i prerender-spa-plugin (如果你能看到Chromium在下載,那就離成功不遠了,證明翻牆成功,下載有效,剛開始琢磨這個預渲染的時候,麻木地下載,找不到下載失敗的原因,活活卡了兩天,後來才發現需要先翻牆才行,大家一定要注意,少走點彎路~~)


Vue  prerender-spa-plugin 預渲染

Vue  prerender-spa-plugin 預渲染

第三步:

1.配置

webpack.prod.conf.js

Vue  prerender-spa-plugin 預渲染


2.引入

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

const Renderer = PrerenderSPAPlugin.PuppeteerRendererVue  prerender-spa-plugin 預渲染

3.在plugins里加入這一段Vue  prerender-spa-plugin 預渲染

 new PrerenderSPAPlugin({
// 生成檔案的路徑,也可以與webpakc打包的一致。
// 下面這句話非常重要!!!
// 這個目錄只能有一級,如果目錄層次大於一級,在生成的時候不會有任何錯誤提示,在預渲染的時候只會卡著不動。
staticDir: path.join(__dirname, '../dist'),

// 對應自己的路由檔案,比如a有引數,就需要寫成 /a/param1。
routes: ['/','/index', '/home', '/sapp', '/procedure', '/news', '/issue', '/about', '/details', '/platform', '/Web', '/casedetails'],

// 這個很重要,如果沒有配置這段,也不會進行預編譯
renderer: new Renderer({
inject: {
foo: 'bar'
},
headless: false,
})
})

4.路由設定為history模式

mode:'history'

Vue  prerender-spa-plugin 預渲染

第四步:

npm run build (大功告成)

Vue  prerender-spa-plugin 預渲染



相關文章