欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue-cli3.0如何使用prerender-spa-plugin插件預(yù)渲染

 更新時(shí)間:2022年05月26日 10:05:39   作者:深夜程序員  
這篇文章主要介紹了vue-cli3.0如何使用prerender-spa-plugin插件預(yù)渲染,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

如何使用prerender-spa-plugin插件預(yù)渲染

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打包的一致。
                    // 下面這句話非常重要?。?!
                    // 這個(gè)目錄只能有一級(jí),如果目錄層次大于一級(jí),在生成的時(shí)候不會(huì)有任何錯(cuò)誤提示,在預(yù)渲染的時(shí)候只會(huì)卡著不動(dòng)。
                    staticDir: path.join(__dirname,'dist'),
                    // 對(duì)應(yīng)自己的路由文件,比如a有參數(shù),就需要寫成 /a/param1。
                    routes: ['/', '/product','/about'],
                    // 這個(gè)很重要,如果沒(méi)有配置這段,也不會(huì)進(jìn)行預(yù)編譯
                    renderer: new Renderer({
                        inject: {
                            foo: 'bar'
                        },
                        headless: false,
                        // 在 main.js 中 document.dispatchEvent(new Event('render-event')),兩者的事件名稱要對(duì)應(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.運(yùn)行npm run build,看一下生成的 dist 的目錄里是不是有每個(gè)路由名稱對(duì)應(yīng)的文件夾。然后找個(gè) 目錄里 的 index.html 用IDE打開(kāi),看文件內(nèi)容里是否有該文件應(yīng)該有的內(nèi)容。有的話,就設(shè)置成功了 

預(yù)渲染 prerender-spa-plugin嘗試

背景:想給項(xiàng)目做一些優(yōu)化,想嘗試預(yù)渲染和SSR

  • 這里說(shuō)一下SSR
  • 使用的技術(shù)棧是VUE
  • 預(yù)渲染使用的是 prerender-spa-plugin 這個(gè)包

先說(shuō)一下效果吧

這個(gè)感覺(jué)就是類似高級(jí)的骨架屏,不過(guò)他是一個(gè)真正的頁(yè)面,只是沒(méi)有數(shù)據(jù),或者數(shù)據(jù)驅(qū)動(dòng)渲染的一切。

使用這個(gè)插件 配置好幾個(gè)預(yù)渲染的頁(yè)面會(huì) 在build時(shí)提前講這些頁(yè)面渲染成瀏覽器可以直接打開(kāi)的html文件。這樣你在瀏覽器輸入地址后,會(huì)直接得到這樣一個(gè)頁(yè)面,省去了渲染出頁(yè)面的時(shí)間,因?yàn)樵诖虬鼤r(shí)這個(gè)頁(yè)面就渲染完了,也就是我們提前預(yù)渲染了。

不好用的地方

說(shuō)一些不好用的地方,比如我們我們做的是類似管理后臺(tái)的頁(yè)面,無(wú)論你進(jìn)入什么也都需要先登陸,那么這個(gè)效果就會(huì)打折扣,畢竟無(wú)論預(yù)渲染了什么頁(yè)面 都會(huì)被重定向到登錄頁(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 文件(打包后的文件)里面有一個(gè)home的文件夾,里面有一個(gè)index.html 文件,當(dāng)你 訪問(wèn)http:// …/home 頁(yè)面時(shí) 就會(huì)直接調(diào)用這個(gè)頁(yè)面。也可以直接用瀏覽器打開(kāi)這個(gè)頁(yè)面

坑點(diǎn)

1、打開(kāi)生成的home/index.html 文件 會(huì)發(fā)現(xiàn) 有可能你的css js 引用的路徑不對(duì),導(dǎo)致你生成頁(yè)面沒(méi)有樣式,此時(shí)需要處理路徑使其調(diào)用到正確的css js。

  • 方法1、可以手動(dòng)打包完,改完路徑,講包扔給運(yùn)維扔到服務(wù)器
  • 方法2、使用 npm i replace-in-file 這個(gè)包寫方法 替換 路徑 這種就是純自動(dòng)化部署了

2、自動(dòng)化部署時(shí)

  • 如果使用了上面的方法1那沒(méi)什么問(wèn)題 畢竟 包是在我們這處理好的。
  • 如果是方法2,自動(dòng)話打包,那么jenkins在build時(shí)會(huì)有很多依賴,比如 prerender-spa-plugin 就使用了 chromium 安裝時(shí)可能會(huì)失敗這個(gè)需要注意,需要跟運(yùn)維一起處理這些問(wèn)題

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。 

相關(guān)文章

最新評(píng)論