精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

前后端分離開發,我用這幾個技巧讓頁面加載速度提高了90%

開發 前端
性能優化是一個非常令人愉悅的過程,同時也是個深坑,有著太多東西,本篇文章開了個頭,希望能對大家有所幫助。

前言

之前用 vuecli 做了個博客,是一個單頁面項目,大概有十個路由,直接 npm run build 打包出來,有一個 1M 的巨大 js 文件

先掛載到服務器上試試

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

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

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

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

分析

vuecli 2.x 自帶了分析工具,因此只要運行 npm run build --report 即可。

如果是 vuecli 3 的話,先安裝插件 

  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 文件的大小

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

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

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

路由懶加載

當打包構建應用時,JavaScript 包會變得非常大,影響頁面加載。如果我們能把不同路由對應的組件分割成不同的代碼塊,然后當路由被訪問的時候才加載對應組件,這樣就更加高效了。

在一開始就下載完所有路由對應的組件文件,這明顯是不合適的,這就像下載一個 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

如果是在 vuecli 3 中,我們還需要多做一步工作因為 vuecli 3 默認開啟 prefetch(預先加載模塊),提前獲取用戶未來可能會訪問的內容。

在首屏會把這十幾個路由文件,都一口氣下載了所以我們要關閉這個功能,在 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 

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

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

  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 和 TablColumn 的引用,并在后臺組件中局部注冊 

  1. import { Table, TableColumn } from "element-ui";  
  2. components: {  
  3.     "el-table": Table,  
  4.     "el-table-column": TableColumn }, 

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

組件重復打包

可以看到上圖,有兩個路由文件都引用了 codemirror.js 造成重復下載。我們可以在 webpack 的 config 文件中,修改 CommonsChunkPlugin 的配置 

  1. minChunks: 3 

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

首頁下載了黃色和灰色部分。

拆了半天,又回到原點

當然,我們可以繼續折騰 CommonsChunkPlugin 的配置來解決這個問題。

但在新版 webpack 中, CommonsChunkPlugin 被自由度更高,更高級的 SplitChunksPlugin 代替

這也是為什么我要把項目遷移到 vuecli 3(使用 webpack4)

因為默認就做了優化,首頁只會下載灰色的部分( 235K)

gzip

拆完包之后,我們再用 gzip 做一下壓縮安裝 compression-webpack-plugin 

  1. cnmp i compression-webpack-plugin -D 

在 vue.congig.js 中引入并修改 webpack 配置 

  1. const CompressionPlugin = require('compression-webpack-plugin')  
  2. configureWebpack: (config) => {  
  3.         if (process.env.NODE_ENV === 'production') {  
  4.             // 為生產環境修改配置...  
  5.             config.mode = 'production'  
  6.             return {  
  7.                 plugins: [new CompressionPlugin({  
  8.                     test: /\.js$|\.html$|\.css/, //匹配文件名  
  9.                     threshold: 10240, //對超過10k的數據進行壓縮  
  10.                     deleteOriginalAssets: false //是否刪除原文件  
  11.                 })]  
  12.             }  
  13.         } 

可以看到 200k 以上的文件被壓縮到了 100k 以內

在服務器我們也要做相應的配置

如果發送請求的瀏覽器支持 gzip,就發送給它 gzip 格式的文件

我的服務器是用 express 框架搭建的,只要安裝一下 compression 就能使用 

  1. const compression = require('compression')  
  2. app.use(compression()) 

注意,后面這一句,要放在所有其他中間件注冊之前

最終效果

首屏加載資源 198k,加載時間 1s,相比原來速度提升了 90%

后記:css是否要拆分

vuecli 3 和 vuecli2.x 還有一個區別是

  •  vuecli 3會默認開啟一個 css 分離插件 ExtractTextPlugin

每一個模塊的 css 文件都會分離出來,整整 13 個 css文件,而我們的首頁就請求了 4 個,花費了不少的資源請求時間。

我們可以在 vue.config.js 中關閉它 

  1. css: {  
  2.     // 是否使用css分離插件 ExtractTextPlugin  
  3.     extract: false,  
  4.     // 開啟 CSS source maps?  
  5.     sourceMap: false,  
  6.     // css預設器配置項  
  7.     loaderOptions: {},  
  8.     // 啟用 CSS modules for all css / pre-processor files.  
  9.     modules: false  
  10. }, 

打包出來的文件中,直接就沒有了 css 文件夾

取而代之的是整合起來的一個 js 文件,負責在一開始就注入所有的樣式。

首屏加載文件數減少,但體積變大,最終測下來速度沒有太大差異。

所以,是否要 css 拆分就見仁見智,具體項目具體分析吧。

總結

性能優化是一個非常令人愉悅的過程,同時也是個深坑,有著太多東西,本篇文章開了個頭,希望能對大家有所幫助。 

 

責任編輯:龐桂玉 來源: Web開發
相關推薦

2021-07-28 14:35:09

代碼進度條前端

2019-12-16 09:21:14

HTTPAPI認證

2023-09-01 14:27:10

前段后端開發

2024-02-07 13:37:39

AWS系統應用程序

2022-09-06 10:26:38

前后端分離Vue跨域

2023-11-30 12:13:29

開發分離工具

2019-06-12 19:00:14

前后端分離AppJava

2019-06-21 08:39:23

SQLmysql索引

2019-12-10 09:47:51

IaaS云計算物聯網

2024-02-26 12:51:20

2025-05-09 08:40:42

插件頁面Vite

2020-06-11 08:05:47

nginx線程池數據

2020-06-12 14:44:06

線程池模式nginx

2020-08-21 10:59:10

微軟服務器運維

2020-09-02 08:27:58

CSS 屬性前端

2023-02-08 16:29:58

前后端開發

2021-12-08 12:50:39

代碼MyBatisJava

2011-06-09 16:14:14

2021-02-23 18:38:11

iPhone地圖蘋果
點贊
收藏

51CTO技術棧公眾號

久草福利在线视频| 国内偷拍精品视频| 成人线上视频| 国产精品久久久久影院老司| 亚洲va国产va天堂va久久| 五月天丁香激情| 美女视频亚洲色图| 欧美日高清视频| 日韩精品在线视频免费观看| 美州a亚洲一视本频v色道| 蜜臀va亚洲va欧美va天堂| 欧美另类69精品久久久久9999| 亚洲精品久久一区二区三区777 | 亚洲免费福利一区| 欧美精品视频www在线观看| 8x8ⅹ国产精品一区二区二区| av女名字大全列表| 国内精品视频666| 青草成人免费视频| 欧美成人黄色网| 国产a久久精品一区二区三区 | 在线观看国产一级片| 国产深夜视频在线观看| 欧美国产精品一区二区三区| 成人av网站观看| 中文字幕乱码一区二区| 亚洲免费激情| 欧美成人精品在线观看| 亚洲av熟女国产一区二区性色| 成人动漫视频| 制服丝袜中文字幕亚洲| 99色精品视频| 国模私拍视频在线播放| 亚洲视频中文字幕| 日本一区二区高清视频| 色屁屁草草影院ccyycom| 精品一区二区在线免费观看| 国产成人精品综合| 日韩xxx高潮hd| 亚洲影视一区| 中文字幕亚洲精品| 摸摸摸bbb毛毛毛片| 人人网欧美视频| 亚洲第一中文字幕在线观看| 亚洲欧美日韩一二三区| 成人精品高清在线视频| 色偷偷一区二区三区| 成人免费在线网| 青草视频在线免费直播| 亚洲男人的天堂一区二区| 亚洲精品在线免费| 草碰在线视频| 国产亚洲一区二区三区四区| 久久久一本精品99久久精品66| 欧美 日韩 国产 精品| 国产精品99久久久久久久女警| 国产欧美久久久久久| 在线观看免费视频a| 肉色丝袜一区二区| 国产精品扒开腿做爽爽爽视频 | 石原莉奈一区二区三区在线观看| 欧美在线视频免费播放| 欧美日韩精品区| 9色国产精品| 日本久久亚洲电影| 乱子伦一区二区三区| 免费观看在线综合| 91精品在线一区| 99精品国产99久久久久久97| 国产精品 日产精品 欧美精品| 99国产在线视频| 人妻少妇一区二区三区| 91亚洲精品久久久蜜桃网站| 欧美日韩一区在线视频| 在线观看美女网站大全免费| 亚洲欧美影音先锋| 日本黄大片在线观看| 黄色在线网站噜噜噜| 色欧美乱欧美15图片| 999在线免费视频| 国产精品日本一区二区不卡视频 | 国产ts一区二区| 无码人妻精品一区二区50| 中文字幕日韩欧美精品高清在线| 欧美大片第1页| 久久免费播放视频| 亚洲精品1区2区| 97福利一区二区| 欧美一级片免费在线观看| 欧美私人啪啪vps| 久久久亚洲国产天美传媒修理工| 麻豆视频在线观看| 老司机一区二区三区| 国产精品96久久久久久| 中文字幕 自拍偷拍| 久久99久久久久久久久久久| 91视频免费在线| www国产在线| 9久草视频在线视频精品| 欧美1o一11sex性hdhd| 触手亚洲一区二区三区| 亚洲欧洲日产国产综合网| 日韩尤物视频| 888av在线视频| 日本道色综合久久| 亚洲一区二区图片| 欧美爱爱网站| 最新中文字幕亚洲| 黄色在线观看免费| 久久黄色网页| 91久久中文字幕| 国产三区四区在线观看| 亚洲欧美日韩久久| 久久久一本二本三本| 成人在线视频观看| 精品剧情在线观看| 精品少妇一区二区三区免费观| 午夜日本精品| 日韩暖暖在线视频| 99久久精品国产色欲| 久久亚洲二区三区| 亚洲色婷婷久久精品av蜜桃| 成人小电影网站| 日韩一级完整毛片| 亚洲永久精品ww.7491进入| 欧美日本国产| 国产免费一区视频观看免费 | 黄色日韩精品| 国产精品都在这里| 亚洲 欧美 自拍偷拍| 综合久久给合久久狠狠狠97色| 好吊妞无缓冲视频观看| 精品国模一区二区三区欧美 | 欧美特黄一级大片| 久久久久久国产免费 | 97精品一区二区| 国产91在线播放| 男人天堂手机在线观看| 中文字幕一区二区日韩精品绯色| 久久亚洲精品无码va白人极品| 日本中文字幕一区二区| 亚洲激情成人网| 青青青在线视频| 久久99热这里只有精品| 老牛影视免费一区二区| 国产丝袜在线播放| 日韩一区二区免费在线电影| 在线观看免费黄色网址| 亚洲一区免费| 国产欧美综合精品一区二区| av文字幕在线观看| 欧美日韩1区2区| 手机看片福利视频| 日韩精品电影一区亚洲| 成人欧美一区二区三区视频| 日本视频在线免费观看| 欧美日韩在线观看一区二区 | 国产精品国产三级国产专区51| 四虎精品永久免费| 日韩在线观看网站| 四虎精品永久在线| 国产欧美日韩视频一区二区| 欧美两根一起进3p做受视频| 美女少妇全过程你懂的久久| 51精品国产黑色丝袜高跟鞋| 欧美视频在线观看一区二区三区| 亚洲激情男女视频| 善良的小姨在线| 一区免费视频| 国产精品一区二区在线观看| 欧洲性视频在线播放| 精品毛片乱码1区2区3区| 久久久精品国产sm调教网站| 国产成人免费av在线| 激情六月天婷婷| 亚洲最好看的视频| 国产成人av网址| av资源种子在线观看| 欧美午夜精品久久久久久超碰| 国产7777777| 久久99精品国产麻豆不卡| 亚洲欧美国产一区二区| 欧美日韩五区| 欧美国产视频一区二区| 日本人妻熟妇久久久久久 | 国产一级视频在线| av午夜精品一区二区三区| 无罩大乳的熟妇正在播放| 亚洲国产国产| 国产欧美在线视频| 色婷婷av在线| 日韩一级片网址| 超碰超碰超碰超碰| 中文字幕久久午夜不卡| 伊人五月天婷婷| 在线观看视频日韩| 欧美在线一区二区三区四区| 成人福利片在线| 插插插亚洲综合网| 亚洲人妻一区二区| 欧美精品 国产精品| 久久免费黄色网址| 久久亚洲精华国产精华液| 亚洲天堂国产视频| 性欧美欧美巨大69| 欧美另类网站| 国产高清亚洲| 欧美在线播放视频| 免费不卡视频| 亚洲天堂成人在线视频| 黄色福利在线观看| 制服.丝袜.亚洲.另类.中文| 日日噜噜噜噜人人爽亚洲精品| 国产精品久久久久久久久图文区 | 欧美videos粗暴| 久久久亚洲福利精品午夜| 久久久久久女乱国产| 精品久久一区二区三区| 进去里视频在线观看| 亚洲综合视频在线| 妺妺窝人体色WWW精品| 国产sm精品调教视频网站| 免费一级特黄特色毛片久久看| 偷拍欧美精品| 久久草视频在线看| 95精品视频| 国产成人在线视频| 欧美黄色视屏| 久久国内精品一国内精品| 欧美欧美欧美| 亚洲第一网站免费视频| 国产剧情精品在线| 在线观看日韩电影| 国产精品变态另类虐交| 自拍偷自拍亚洲精品播放| 一本在线免费视频| 91亚洲精品久久久蜜桃网站| 日本精品一区在线| 日韩国产在线观看一区| 六月婷婷在线视频| 欧美a级在线| 日本精品福利视频| 久久久久免费av| 视频在线99re| 日本久久成人网| 国产精品乱码视频| 久久伊人久久| 91精品视频在线| 国产原创一区| 97超级碰碰人国产在线观看| bbw在线视频| 欧美肥婆姓交大片| 18videosex性欧美麻豆| 久久精品免费播放| 麻豆tv入口在线看| 亚洲网在线观看| 可以在线观看的黄色| 亚洲欧美日韩精品久久亚洲区| 日本免费一区视频| 亚洲国产精品福利| 免费观看a视频| 亚洲精品视频久久| 日本韩国精品一区二区| 日韩精品在线影院| 日韩一二三四| 国产午夜精品美女视频明星a级| 嫩草研究院在线观看| 亚洲天堂av在线免费| 国产鲁鲁视频在线观看免费| 国产亚洲精品高潮| av电影在线播放高清免费观看| 一区二区中文字幕| 欧美videos极品另类| 久久香蕉国产线看观看av| 黄网站免费在线播放| 久久久精品一区二区| 超碰在线免费公开| 欧美福利视频在线观看| 美女搞黄视频在线观看| 欧美亚洲另类视频| 欧美人体一区二区三区| 国产精品高潮呻吟久久av无限 | 91精品国产91久久久久| 亚洲色图官网| 国产精品国产三级国产aⅴ9色| 日本精品网站| 91啪国产在线| jazzjazz国产精品麻豆| 国产亚洲情侣一区二区无| 色综合www| 日韩亚洲一区在线播放| 亚欧美无遮挡hd高清在线视频| 正在播放一区二区三区| 激情久久婷婷| 三年中国国语在线播放免费| 久久精品国产精品亚洲红杏| 男人女人拔萝卜视频| 99精品视频在线免费观看| 久久亚洲AV成人无码国产野外| 国产精品乱码久久久久久| 全程偷拍露脸中年夫妇| 激情成人在线视频| 在线视频精品免费| 日韩区在线观看| youjizz在线播放| 欧美精品一区二区免费| 日韩欧美一中文字暮专区| 国产精品一区二区久久| 超碰精品在线| 四虎一区二区| 好看不卡的中文字幕| 成人亚洲视频在线观看| 国产成人自拍网| av电影网站在线观看| 天天综合天天做天天综合| 中文字幕在线观看视频一区| 精品成人一区二区三区| 91社区在线观看| 91国语精品自产拍在线观看性色| 国产亚洲一区二区手机在线观看 | 久草免费在线观看视频| 色综合天天综合在线视频| 国产三级小视频| 亚洲视频在线免费观看| 黄色小说在线播放| 成人h视频在线| 久久99国产精品视频| 精品成在人线av无码免费看| 免费成人在线观看视频| 成熟妇人a片免费看网站| 亚洲欧美日韩国产综合在线| 国产精品久久久久久久久夜色| 欧美v国产在线一区二区三区| yw193.com尤物在线| 热久久这里只有精品| 日韩精品亚洲aⅴ在线影院| 看一级黄色录像| 日本v片在线高清不卡在线观看| 久久福利小视频| 一区二区三区成人| 精品久久在线观看| 久久久av电影| 欧美性aaa| 日韩三级电影网站| 模特精品在线| 熟女俱乐部一区二区视频在线| 亚洲国产精品欧美一二99| 国产欧美久久久| 日韩一区二区福利| 日韩电影毛片| 欧美日韩在线精品| 久久久久久黄| 国内精品久久99人妻无码| 亚洲动漫第一页| 亚洲色图欧美视频| 91国在线精品国内播放| 六月丁香久久丫| 国产午夜大地久久| 成人18视频日本| 成年免费在线观看| 亚洲激情电影中文字幕| 美女视频在线免费| 久久久福利视频| 国产一区二区三区久久久久久久久| 亚洲最大视频网| 亚洲va国产天堂va久久en| 视频一区二区三区国产 | 日韩免费va| 欧洲成人一区二区| 久久精品卡一| 五月婷六月丁香| 欧美一区二区日韩一区二区| www.久久ai| 国产精品一区二| 亚洲深夜激情| www.涩涩爱| 欧美日韩成人一区| 超碰人人在线| 国产精品久久久久久久久婷婷 | 奇米一区二区三区av| 欧美日韩国产黄色| 欧美男同性恋视频网站| 在线观看wwwxxxx| 国产欧美日韩综合精品二区| 午夜一级在线看亚洲| av网站免费在线看| 在线这里只有精品| 精品麻豆一区二区三区| av资源站久久亚洲| 午夜在线精品| 国产探花视频在线| 亚洲成人久久一区| 三级成人黄色影院| 一区二区在线高清视频| 国产精品18久久久久| 欧美brazzers| 欧美乱妇40p| 一区二区三区日本久久久| 国产一线二线三线在线观看| 一区二区三区精品在线观看|