vue-cli3.0怎么使用prerender-spa-plugin插件預渲染

蝸牛 互聯網技術資訊 2022-05-26 110 0

這篇文章主要介紹“vue-cli3.0怎么使用prerender-spa-plugin插件預渲染”,在日常操作中,相信很多人在vue-cli3.0怎么使用prerender-spa-plugin插件預渲染問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”vue-cli3.0怎么使用prerender-spa-plugin插件預渲染”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

如何使用prerender-spa-plugin插件預渲染

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打包的一致。
????????????????????//?下面這句話非常重要?。?!
????????????????????//?這個目錄只能有一級,如果目錄層次大于一級,在生成的時候不會有任何錯誤提示,在預渲染的時候只會卡著不動。
????????????????????staticDir:?path.join(__dirname,'dist'),
????????????????????//?對應自己的路由文件,比如a有參數,就需要寫成?/a/param1。
????????????????????routes:?['/',?'/product','/about'],
????????????????????//?這個很重要,如果沒有配置這段,也不會進行預編譯
????????????????????renderer:?new?Renderer({
????????????????????????inject:?{
????????????????????????????foo:?'bar'
????????????????????????},
????????????????????????headless:?false,
????????????????????????//?在?main.js?中?document.dispatchEvent(new?Event('render-event')),兩者的事件名稱要對應上。
????????????????????????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 中設置mode: “history”

5.運行npm run build,看一下生成的 dist 的目錄里是不是有每個路由名稱對應的文件夾。然后找個 目錄里 的 index.html 用IDE打開,看文件內容里是否有該文件應該有的內容。有的話,就設置成功了?

預渲染 prerender-spa-plugin嘗試

背景:想給項目做一些優化,想嘗試預渲染和SSR

  • 這里說一下SSR

  • 使用的技術棧是VUE

  • 預渲染使用的是 prerender-spa-plugin 這個包

先說一下效果吧

這個感覺就是類似高級的骨架屏,不過他是一個真正的頁面,只是沒有數據,或者數據驅動渲染的一切。

使用這個插件 配置好幾個預渲染的頁面會 在build時提前講這些頁面渲染成瀏覽器可以直接打開的html文件。這樣你在瀏覽器輸入地址后,會直接得到這樣一個頁面,省去了渲染出頁面的時間,因為在打包時這個頁面就渲染完了,也就是我們提前預渲染了。

不好用的地方

說一些不好用的地方,比如我們我們做的是類似管理后臺的頁面,無論你進入什么也都需要先登陸,那么這個效果就會打折扣,畢竟無論預渲染了什么頁面 都會被重定向到登錄頁。

使用

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 還有很多參數 具體可以去官網

3、打包

npm?run?build

打包完成后在dist 文件(打包后的文件)里面有一個home的文件夾,里面有一個index.html 文件,當你 訪問http:// …/home 頁面時 就會直接調用這個頁面。也可以直接用瀏覽器打開這個頁面

坑點

1、打開生成的home/index.html 文件 會發現 有可能你的css js 引用的路徑不對,導致你生成頁面沒有樣式,此時需要處理路徑使其調用到正確的css js。

  • 方法1、可以手動打包完,改完路徑,講包扔給運維扔到服務器

  • 方法2、使用 npm i replace-in-file 這個包寫方法 替換 路徑 這種就是純自動化部署了

2、自動化部署時

  • 如果使用了上面的方法1那沒什么問題 畢竟 包是在我們這處理好的。

  • 如果是方法2,自動話打包,那么jenkins在build時會有很多依賴,比如 prerender-spa-plugin 就使用了 chromium 安裝時可能會失敗這個需要注意,需要跟運維一起處理這些問題

到此,關于“vue-cli3.0怎么使用prerender-spa-plugin插件預渲染”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注蝸牛博客網站,小編會繼續努力為大家帶來更多實用的文章!

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:niceseo99@gmail.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

評論

日本韩欧美一级A片在线观看