您好,登錄后才能下訂單哦!
這篇文章主要介紹“vue-cli3.0怎么使用prerender-spa-plugin插件預(yù)渲染”,在日常操作中,相信很多人在vue-cli3.0怎么使用prerender-spa-plugin插件預(yù)渲染問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”vue-cli3.0怎么使用prerender-spa-plugin插件預(yù)渲染”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
vue-cli3.0版本
1.安裝
cnpm install prerender-spa-plugin --save
2.vue-config.js中增加
const PrerenderSPAPlugin = require('prerender-spa-plugin'); const Renderer = PrerenderSPAPlugin.PuppeteerRenderer; const path = require('path'); module.exports = { configureWebpack: config => { if (process.env.NODE_ENV !== 'production') return; return { plugins: [ new PrerenderSPAPlugin({ // 生成文件的路徑,也可以與webpakc打包的一致。 // 下面這句話非常重要?。?! // 這個目錄只能有一級,如果目錄層次大于一級,在生成的時候不會有任何錯誤提示,在預(yù)渲染的時候只會卡著不動。 staticDir: path.join(__dirname,'dist'), // 對應(yīng)自己的路由文件,比如a有參數(shù),就需要寫成 /a/param1。 routes: ['/', '/product','/about'], // 這個很重要,如果沒有配置這段,也不會進(jìn)行預(yù)編譯 renderer: new Renderer({ inject: { foo: 'bar' }, headless: false, // 在 main.js 中 document.dispatchEvent(new Event('render-event')),兩者的事件名稱要對應(yīng)上。 renderAfterDocumentEvent: 'render-event' }) }), ], }; } }
3.在main.js中增加
new Vue({ router, store, render: h => h(App), mounted () { document.dispatchEvent(new Event('render-event')) } }).$mount('#app')
4.router.js 中設(shè)置mode: “history”
5.運行npm run build,看一下生成的 dist 的目錄里是不是有每個路由名稱對應(yīng)的文件夾。然后找個 目錄里 的 index.html 用IDE打開,看文件內(nèi)容里是否有該文件應(yīng)該有的內(nèi)容。有的話,就設(shè)置成功了
背景:想給項目做一些優(yōu)化,想嘗試預(yù)渲染和SSR
這里說一下SSR
使用的技術(shù)棧是VUE
預(yù)渲染使用的是 prerender-spa-plugin 這個包
這個感覺就是類似高級的骨架屏,不過他是一個真正的頁面,只是沒有數(shù)據(jù),或者數(shù)據(jù)驅(qū)動渲染的一切。
使用這個插件 配置好幾個預(yù)渲染的頁面會 在build時提前講這些頁面渲染成瀏覽器可以直接打開的html文件。這樣你在瀏覽器輸入地址后,會直接得到這樣一個頁面,省去了渲染出頁面的時間,因為在打包時這個頁面就渲染完了,也就是我們提前預(yù)渲染了。
說一些不好用的地方,比如我們我們做的是類似管理后臺的頁面,無論你進(jìn)入什么也都需要先登陸,那么這個效果就會打折扣,畢竟無論預(yù)渲染了什么頁面 都會被重定向到登錄頁。
1、安裝 如果不行可能需要翻墻或者找一些鏡像包試試
npm i prerender-spa-plugin -S
2、配置 vue.config.js
module.exports = { ..., plugins: [ staticDir: path.join(__dirname, 'dist'), routes:['/home'], renderer: new Renderer({ inject: { foo: 'bar' }, renderAfterDocumentEvent: 'render-event' }) ], // 另一種寫法 // config.pludaasdfgins.push( // new PrerenderSPAPlugin({ // staticDir: path.join(__dirname, 'dist'), // indexPath: path.join(__dirname, 'dist', 'index.html'), // routes:['/home'], // renderer: new Renderer({ // inject: { // foo: 'bar' // }, // headless: true, // renderAfterDocumentEvent: 'render-event' // }) // }) // ) }
prerender-spa-plugin 還有很多參數(shù) 具體可以去官網(wǎng)看
3、打包
npm run build
打包完成后在dist 文件(打包后的文件)里面有一個home的文件夾,里面有一個index.html 文件,當(dāng)你 訪問http:// …/home 頁面時 就會直接調(diào)用這個頁面。也可以直接用瀏覽器打開這個頁面
1、打開生成的home/index.html 文件 會發(fā)現(xiàn) 有可能你的css js 引用的路徑不對,導(dǎo)致你生成頁面沒有樣式,此時需要處理路徑使其調(diào)用到正確的css js。
方法1、可以手動打包完,改完路徑,講包扔給運維扔到服務(wù)器
方法2、使用 npm i replace-in-file 這個包寫方法 替換 路徑 這種就是純自動化部署了
2、自動化部署時
如果使用了上面的方法1那沒什么問題 畢竟 包是在我們這處理好的。
如果是方法2,自動話打包,那么jenkins在build時會有很多依賴,比如 prerender-spa-plugin 就使用了 chromium 安裝時可能會失敗這個需要注意,需要跟運維一起處理這些問題
到此,關(guān)于“vue-cli3.0怎么使用prerender-spa-plugin插件預(yù)渲染”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。