前言:
因為我做的是公司官網的專案,出於seo的需要,而且我是把專案做完了才來考慮seo的問題,所以如果用nuxt.js去做ssr的話會很麻煩,所以prerender-spa-plugin預渲染是一個不錯的選擇,畢竟也能達到seo的效果。
第一步:
開啟翻牆vpn (因為這個外掛是依賴於chromev瀏覽器的,如果沒有,在下載或者打包的時候會提示下載失敗或者警告,so先弄給能翻牆的vpn,現在很嚴苛,怎麼搜都弄不到,最後只能問總監大佬拿了一個付費版的~,叫Shadowsocks,如果不能翻牆的童鞋可以搜搜看~)
第二步:
npm i prerender-spa-plugin (如果你能看到Chromium在下載,那就離成功不遠了,證明翻牆成功,下載有效,剛開始琢磨這個預渲染的時候,麻木地下載,找不到下載失敗的原因,活活卡了兩天,後來才發現需要先翻牆才行,大家一定要注意,少走點彎路~~)
第三步:
1.配置
webpack.prod.conf.js
2.引入
const PrerenderSPAPlugin = require('prerender-spa-plugin')
const Renderer = PrerenderSPAPlugin.PuppeteerRenderer
3.在plugins里加入這一段
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'
第四步:
npm run build (大功告成)