最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2026年02月07日 09:21:49   作者:深夜程序員  
這篇文章主要介紹了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'),
                    // 對應(yīng)自己的路由文件,比如a有參數(shù),就需要寫成 /a/param1。
                    routes: ['/', '/product','/about'],
                    // 這個很重要,如果沒有配置這段,也不會進行預編譯
                    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è)置成功了 

預渲染 prerender-spa-plugin嘗試

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

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

先說一下效果吧

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

使用這個插件 配置好幾個預渲染的頁面會 在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 還有很多參數(shù) 具體可以去官網(wǎng)

3、打包

npm run build

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

坑點

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

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

2、自動化部署時

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

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

相關(guān)文章

  • Vue中的無限加載vue-infinite-loading的方法

    Vue中的無限加載vue-infinite-loading的方法

    本篇文章主要介紹了Vue中的無限加載vue-infinite-loading的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • Vue CLI項目 axios模塊前后端交互的使用(類似ajax提交)

    Vue CLI項目 axios模塊前后端交互的使用(類似ajax提交)

    這篇文章主要介紹了Vue-CLI項目-axios模塊前后端交互的使用詳解(類似ajax提交),本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • 前端Vue手機號校驗以及后端Java手機號校驗例子

    前端Vue手機號校驗以及后端Java手機號校驗例子

    接收一個輸入的手機號,判斷輸入的手機號是否正確是一個很常見的功能,這篇文章主要給大家介紹了關(guān)于前端Vue手機號校驗以及后端Java手機號校驗的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • vue3?父子組件間相互傳值方式

    vue3?父子組件間相互傳值方式

    這篇文章主要介紹了vue3?父子組件間相互傳值方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • vue 判斷元素內(nèi)容是否超過寬度的方式

    vue 判斷元素內(nèi)容是否超過寬度的方式

    這篇文章主要介紹了vue 判斷元素內(nèi)容是否超過寬度的方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Vue3在router中使用pinia報錯的簡單解決辦法

    Vue3在router中使用pinia報錯的簡單解決辦法

    這篇文章主要給大家介紹了關(guān)于Vue3在router中使用pinia報錯的簡單解決辦法,什么是pinia,可以理解為狀態(tài)管理工具,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-08-08
  • 在Vue中實現(xiàn)深度監(jiān)聽的示例代碼

    在Vue中實現(xiàn)深度監(jiān)聽的示例代碼

    在 Vue 中,深度監(jiān)聽是指監(jiān)聽一個對象或數(shù)組的嵌套屬性(深層結(jié)構(gòu))的變化,而不僅僅是監(jiān)聽頂層屬性的引用變化,本文給大家介紹了如何在Vue中實現(xiàn)深度監(jiān)聽,并通過代碼示例介紹的非常詳細,需要的朋友可以參考下
    2025-03-03
  • Vue.js框架實現(xiàn)購物車功能

    Vue.js框架實現(xiàn)購物車功能

    這篇文章主要為大家詳細介紹了Vue.js框架實現(xiàn)購物車功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Vue 3中常用的生命周期鉤子和監(jiān)聽器的操作方法

    Vue 3中常用的生命周期鉤子和監(jiān)聽器的操作方法

    這篇文章主要介紹了Vue 3中常用的生命周期鉤子和監(jiān)聽器的操作方法,分析常用的一些生命周期鉤子和監(jiān)聽器可以幫助我們在組件中處理數(shù)據(jù)加載、狀態(tài)變化和響應(yīng)式更新,需要的朋友可以參考下
    2024-07-07
  • vue如何實現(xiàn)本項目頁面之間跳轉(zhuǎn)

    vue如何實現(xiàn)本項目頁面之間跳轉(zhuǎn)

    這篇文章主要介紹了vue如何實現(xiàn)本項目頁面之間跳轉(zhuǎn),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04

最新評論

泾阳县| 酉阳| 长沙县| 亳州市| 乐山市| 赣榆县| 北京市| 甘孜县| 启东市| 和田市| 徐水县| 东阿县| 竹山县| 昂仁县| 黔东| 土默特左旗| 綦江县| 棋牌| 阿鲁科尔沁旗| 峨边| 巴中市| 海丰县| 江安县| 阳江市| 讷河市| 文安县| 怀柔区| 阳原县| 广河县| 江北区| 武平县| 木兰县| 潮州市| 内黄县| 屏南县| 南岸区| 开化县| 湾仔区| 弋阳县| 抚宁县| 剑河县|