整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          Vue CLI 首屏優化技巧

          前言

          之前用vuecli做了個博客,是一個單頁面項目,大概有十個路由。

          直接npm run build打包出來,有一個1M的巨大js文件。

          頁面優化內容包含哪些_單頁面優化方法_頁面優化方式

          先掛載到服務器上試試

          好家伙 這加載時間 仿佛過了半個世紀

          頁面優化內容包含哪些_頁面優化方式_單頁面優化方法

          首屏頁面整整加載了9s光加載那個大文件就花了8s

          這必須得做個優化了,沒有用戶能忍受9s的白屏而不關閉頁面的

          過程中,我還順便把項目從vuecli2.x遷移到了vuecli3,所以接下來還會介紹一些它們在優化上的異同

          分析

          vuecli2.x自帶了分析工具

          只要運行npm run build--report

          如果是vuecli3的話,先安裝插件

          1. cnpm intall webpack-bundle-analyzer save-dev

          然后在vue.config.js中對webpack進行配置

          1. chainWebpack: (config) => {

          2. /* 添加分析工具*/

          3. if (process.env.NODE_ENV === 'production') {

          4. if (process.env.npm_config_report) {

          5. config

          6. .plugin('webpack-bundle-analyzer')

          7. .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)

          8. .end();

          9. config.plugins.delete('prefetch')

          10. }

          11. } }

          再運行npm run build--report

          會在瀏覽器打開一個項目打包的情況圖,便于直觀地比較各個bundle文件的大小

          頁面優化方式_頁面優化內容包含哪些_單頁面優化方法

          可以看到 項目中所有的依賴,所有的路由,都被打包進了同一個文件中

          另外,在瀏覽器中,也可以通過來查看代碼的使用狀況

          頁面優化方式_單頁面優化方法_頁面優化內容包含哪些

          單頁面優化方法_頁面優化方式_頁面優化內容包含哪些

          紅色的是下載了但未使用的部分

          路由懶加載

          當打包構建應用時,包會變得非常大,影響頁面加載。

          如果我們能把不同路由對應的組件分割成不同的代碼塊,然后當路由被訪問的時候才加載對應組件,這樣就更加高效了。

          在一開始就下載完所有路由對應的組件文件,這明顯是不合適的,這就像下載一個app了,所以我們就需要使用路由懶加載

          頁面優化方式_單頁面優化方法_頁面優化內容包含哪些

          在router.js文件中,原來的靜態引用方式

          1. import ShowBlogs from '@/components/ShowBlogs'


          2. routes:[ path: 'Blogs', name: 'ShowBlogs', component: ShowBlogs ]

          改為

          1. routes:[ path: 'Blogs',name: 'ShowBlogs',component: () => import('./components/ShowBlogs.vue')

          以函數的形式動態引入,這樣就可以把各自的路由文件分別打包,只有在解析給定的路由時,才會下載路由組件

          頁面優化方式_單頁面優化方法_頁面優化內容包含哪些

          首屏需要加載的文件變成了橙色的部分,被小弟們分流出去了300k

          如果是在vuecli3中,我們還需要多做一步工作

          因為vuecli3默認開啟(預先加載模塊),提前獲取用戶未來可能會訪問的內容

          在首屏會把這十幾個路由文件,都一口氣下載了

          所以我們要關閉這個功能,在vue.config.js中設置

          參考官網的做法:

          頁面優化方式_頁面優化內容包含哪些_單頁面優化方法

          設置完畢后,首屏就只會加載當前頁面路由的組件了

          element-ui按需加載

          頁面優化方式_單頁面優化方法_頁面優化內容包含哪些

          頁面優化方式_頁面優化內容包含哪些_單頁面優化方法

          首屏需要加載的依賴包,其中element-ui整整占了568k

          原本的引進方式引進了整個包:

          1. import ElementUI from 'element-ui'

          2. Vue.use(ElementUI)

          但實際上我用到的組件只有按鈕,分頁,表格,輸入與警告

          所以我們要按需引用:

          1. import { Button, Input, Pagination, Table, TableColumn, MessageBox } from 'element-ui';

          2. Vue.use(Button)

          3. Vue.use(Input)

          4. Vue.use(Pagination)

          5. Vue.prototype.$alert = MessageBox.alert

          注意注冊方法的區別,并且我們雖然用到了alert,但并不需要引入Alert組件

          在.babelrc文件中添加(vue-cli3要先安裝babel-plugin-):

          1. plugins: [

          2. [

          3. "component",

          4. {

          5. "libraryName": "element-ui",

          6. "styleLibraryName": "theme-chalk"

          7. }

          8. ]

          9. ]

          頁面優化方式_頁面優化內容包含哪些_單頁面優化方法

          element-ui小了很多,不過看到那個顯眼的table.js后想到,table組件只有后臺管理頁面用到了,不需要全局注冊,所以我們刪除main.js中Table和的引用,并在后臺組件中局部注冊

          1. import { Table, TableColumn } from "element-ui";


          2. components: {

          3. "el-table": Table,

          4. "el-table-column": TableColumn },

          頁面優化方式_頁面優化內容包含哪些_單頁面優化方法

          table就被拆分到了路由文件中

          組件重復打包

          可以看到上圖,有兩個路由文件都引用了.js造成重復下載

          我們可以在webpack的config文件中,修改的配置

          1. minChunks: 3

          把3改為2,就會把使用2次及以上的包抽離出來,放進公共依賴文件,不過由于首頁也有復用的組件,所以首頁也會下載這個公共依賴文件

          單頁面優化方法_頁面優化內容包含哪些_頁面優化方式


          主站蜘蛛池模板: 久久综合一区二区无码| 亚洲一区二区三区AV无码| 成人区人妻精品一区二区不卡视频 | 蜜臀AV免费一区二区三区| 在线观看精品视频一区二区三区| 在线观看免费视频一区| 国产成人高清亚洲一区91| 日韩精品一区二区三区中文精品| 亚洲日韩精品一区二区三区无码| 国产一区二区在线观看视频| 亚洲一区中文字幕| 无码少妇一区二区三区浪潮AV| 一区二区高清视频在线观看| 天堂一区二区三区精品| 日韩精品无码中文字幕一区二区 | 亚洲熟女www一区二区三区| 风间由美性色一区二区三区| 久久久国产一区二区三区| 午夜精品一区二区三区在线视| 国产精品av一区二区三区不卡蜜 | 亚洲av无码不卡一区二区三区 | 午夜视频一区二区| 亚洲一区二区三区深夜天堂| 麻豆天美国产一区在线播放| 夜夜添无码一区二区三区| 久久久久人妻精品一区三寸蜜桃| 无码AⅤ精品一区二区三区| 国产主播一区二区三区在线观看 | 精品亚洲A∨无码一区二区三区| 亚洲综合国产一区二区三区| 国内精品无码一区二区三区| 中文字幕无码一区二区三区本日 | 乱人伦一区二区三区| 国产一区二区三区樱花动漫| 波多野结衣在线观看一区| 国产一区二区三区无码免费| 一区二区三区在线观看视频| AV天堂午夜精品一区| 综合人妻久久一区二区精品| 久久精品动漫一区二区三区| 88国产精品视频一区二区三区|