精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美一级在线视频| 久久精品视频一区二区三区| 欧美黑人国产人伦爽爽爽| 国产成人av免费观看| 24小时免费看片在线观看| 2欧美一区二区三区在线观看视频| 日韩美女免费视频| 翔田千里88av中文字幕| 国产精品超碰| 欧美喷潮久久久xxxxx| 久久久久久免费看| 在线播放毛片| 99九九99九九九视频精品| 国产精品美乳在线观看| 久久成人在线观看| 国产精品探花在线观看| 日韩免费一区二区| 校园春色 亚洲色图| 久草在线新免费首页资源站| 国产欧美一区二区精品忘忧草| 精品一区毛片| 亚洲精品菠萝久久久久久久| 欧美男人的天堂| 成 人片 黄 色 大 片| 玖玖在线精品| 777777777亚洲妇女| 久久高清内射无套| 久久99国产成人小视频| 亚洲第一区在线| 一级片黄色免费| 成人日韩av| 一本大道久久a久久综合婷婷| 成人av在线播放观看| 日本中文字幕电影在线免费观看| 2023国产一二三区日本精品2022| 人九九综合九九宗合| 国产亚洲精品久久久久久打不开| 99久久99热这里只有精品| 亚洲欧美国产精品专区久久| 日韩无码精品一区二区| 免费精品一区| 欧美一区二区三区四区高清| 亚洲一区日韩精品| 日本综合久久| 欧美日韩美女在线| 欧美久久久久久久久久久久久| 成人日韩欧美| 亚洲美女视频一区| 天天综合五月天| 久草免费在线| 中文字幕在线不卡| 亚洲午夜精品久久| 91xxx在线观看| 亚洲国产精品激情在线观看| 日本一区二区三区视频在线观看| 日本午夜在线视频| 久久网这里都是精品| 欧美不卡三区| 国产免费av高清在线| 久久久久国产精品厨房| 明星裸体视频一区二区| 九色在线播放| 国产欧美日韩在线| 亚洲一区二区精品在线| 婷婷免费在线视频| 亚洲欧洲av在线| 午夜欧美2019年伦理| 成人情视频高清免费观看电影| 99这里有精品视频| 国产不卡视频一区| 国产精品视频一区二区三区经| 韩国av免费在线| 91丨porny丨中文| 日韩欧美精品在线不卡| 最新电影电视剧在线观看免费观看| 欧美国产激情一区二区三区蜜月| 亚洲人久久久| 2021国产在线| 婷婷一区二区三区| av片中文字幕| 久久亚洲人体| 精品国产乱码久久久久久久 | 日韩电影免费观| 欧美亚一区二区| 国产又粗又长又爽又黄的视频| 日韩精品一区二区三区中文在线| 亚洲福利视频网| 国产在线观看h| 亚洲成人国产| 国产91成人video| 在线视频免费观看一区| 国产高清亚洲一区| 精品一区在线播放| 快射av在线播放一区| 亚洲高清免费在线| 91n.com在线观看| 日本一区二区三区视频在线看| 日韩成人高清在线| 黑人狂躁日本娇小| 日韩午夜一区| 国产欧美在线看| 天堂av2024| 国产精品久久久久天堂| wwwwww欧美| 高清成人在线| 欧美精品一区二区不卡| 久草福利资源在线| 99精品免费网| 91成人理论电影| 国产在线视频你懂得| 亚洲最大成人网4388xx| 性欧美极品xxxx欧美一区二区| 日韩在线成人| 欧美成熟视频| 日韩hd视频在线观看| 91ts人妖另类精品系列| 国产精品美女| 国产精品二区二区三区| 老司机精品影院| 色婷婷精品久久二区二区蜜臀av | 久久国产黄色片| 国产一区二区在线视频| 欧洲av一区| 国产中文在线播放| 欧美xxxxxxxxx| 性欧美疯狂猛交69hd| 三级欧美在线一区| 国产一区二区三区高清视频| 91黄色在线| 欧美区在线观看| 91狠狠综合久久久久久| 美女视频一区免费观看| 精品欧美日韩在线| 草莓视频丝瓜在线观看丝瓜18| 欧美日韩在线精品一区二区三区激情| 三级黄色片网站| 亚洲人体偷拍| 国产原创精品| xxx.xxx欧美| 精品少妇一区二区三区日产乱码 | av片在线观看| 在线成人小视频| 男人av资源站| 韩国v欧美v亚洲v日本v| 亚洲天堂av免费在线观看| 日韩漫画puputoon| 伊人亚洲福利一区二区三区| 国产成人无码专区| 久久久精品蜜桃| 青青草av网站| 久久精品国产68国产精品亚洲| 国产精品久久久久久久一区探花| 国产视频精品久久| 在线免费不卡视频| 亚洲精品视频网址| 精品一区二区三区视频在线观看| 制服国产精品| 日韩有吗在线观看| 欧美精品激情| 欧美成人免费网| 国产喷水吹潮视频www| 成人欧美一区二区三区1314| 少妇愉情理伦片bd| 欧美人成网站| 久久99欧美| 欧美日韩精品免费观看视完整| 亚洲无限av看| 夜夜躁很很躁日日躁麻豆| 1区2区3区欧美| 国产精品欧美性爱| 99精品免费| 亚洲不卡1区| 草莓视频成人appios| 北条麻妃久久精品| 亚洲国产精品久久人人爱潘金莲| 亚洲不卡一区二区三区| 亚洲狠狠婷婷综合久久久久图片| 久久成人在线| 老汉色影院首页| 人人精品亚洲| 国产美女直播视频一区| 肉体视频在线| 国产一区二区三区日韩欧美| 国产又黄又粗又长| 亚洲国产一二三| 无码少妇一区二区| 国产精品影音先锋| 女性隐私黄www网站视频| 99久久婷婷| 久久99精品久久久久久久久久| 九七电影院97理论片久久tvb| 久久99国产精品自在自在app| 日韩精品视频在线观看一区二区三区| 欧美日韩成人激情| 日韩手机在线观看| 中文字幕亚洲欧美在线不卡| 精品中文字幕在线播放 | 中文字幕一区二区在线观看视频 | 欧美亚洲第一页| 久久久久久久久免费视频| 亚洲电影免费观看| 在线播放一级片| 欧美日韩美女在线| 日本天堂中文字幕| 国产精品视频一区二区三区不卡| 无码人妻丰满熟妇区毛片蜜桃精品| 视频在线观看一区| 欧美大黑帍在线播放| 成人在线免费视频观看| 精品国产一区二区三区四区精华| 亚洲 欧美 成人| 欧美伦理在线视频| 国产精品日韩欧美一区二区三区| 精品久久在线| 欧美一级视频在线观看| 成人av免费| 在线观看精品自拍私拍| 亚洲欧美自偷自拍| 日韩欧美国产精品一区| 亚洲一区精品在线观看| 色视频欧美一区二区三区| 久久久国产精品黄毛片| 日韩一区欧美一区| 中文字幕第二区| 久久久综合九色合综国产精品| 无码人妻久久一区二区三区蜜桃| 日韩精品国产精品| 人妻少妇被粗大爽9797pw| 欧美特黄一区| 久久久成人精品一区二区三区| 色综合99久久久无码国产精品| 国内视频精品| 欧美少妇一区二区三区| 国产精品久久久久久影院8一贰佰| 欧美成人第一区| 欧美激情网址| 国内精品视频在线播放| 成功精品影院| 国产精品乱子乱xxxx| 日韩精品成人| 91pron在线| 91久久精品无嫩草影院| 亚洲一区免费网站| 97精品资源在线观看| 国产日韩欧美视频| 亚洲国产天堂| 国产一区二区色| 亚洲影视资源| 5g国产欧美日韩视频| 国产精品一区二区三区av| 成人免费看片视频| 精品一区二区三区在线观看视频| 成人免费激情视频| 涩爱av色老久久精品偷偷鲁| 91精品天堂| 哺乳挤奶一区二区三区免费看| 国产传媒一区| 日韩av中文字幕一区| 欧美日韩亚洲一区二区三区四区| 久久不见久久见中文字幕免费| 日本精品一区二区三区高清 久久| 国产一区二区区别| 视频二区一区| 欧美激情aⅴ一区二区三区| 国产精品视频一二三四区| 在线日本高清免费不卡| 久久久久久久中文| 丝袜美腿亚洲色图| 少妇网站在线观看| 国产一区二区不卡在线| 丰满少妇xbxb毛片日本| 99v久久综合狠狠综合久久| 中文字幕一二三四区| 欧美激情一二三区| 中文字幕在线观看2018| 亚洲午夜激情av| 久久精品视频7| 欧美日韩精品二区第二页| 国产同性人妖ts口直男| 亚洲国语精品自产拍在线观看| 国产在线观看免费网站| 久久在线观看视频| 理论不卡电影大全神| 国产精品福利片| 成人在线视频国产| 精品1区2区| 天天插综合网| 男人和女人啪啪网站| 美女在线一区二区| 日批视频免费看| 国产亚洲人成网站| 九九热精品免费视频| 午夜视频一区二区三区| 无码人妻av一区二区三区波多野| 91 com成人网| 丝袜+亚洲+另类+欧美+变态| 日韩中文字幕精品| 蜜桃av在线播放| 成人久久一区二区| 豆花视频一区二区| 日本一区二区在线视频| 欧美日韩国产精品一区二区亚洲| 日韩毛片在线免费看| 国产风韵犹存在线视精品| 免费在线观看a视频| 午夜精品成人在线| 国产又粗又猛又爽| 亚洲欧美在线一区| 123区在线| 亚洲综合小说区| 色婷婷热久久| caopor在线视频| 成人精品免费看| 极品久久久久久| 欧美三级欧美一级| 同心难改在线观看| 色综合视频网站| av一级久久| 日韩欧美精品在线不卡| 国产欧美三级| www.啪啪.com| 一区二区三区日韩欧美| 中文字幕在线2018| 亚洲精品一区二区网址| wwwww亚洲| 91传媒免费看| 91精品国产视频| 天天综合网日韩| 国产欧美一区二区精品久导航 | 欧美一区二区三区免费在线看| 久久免费看视频| 91国内在线视频| 超碰精品在线| 欧美日韩不卡在线视频| 国产成人在线看| 九九精品在线观看视频| 欧美一区二区视频网站| 免费a级在线播放| 成人性生交xxxxx网站| 欧美残忍xxxx极端| 国产精品久久a| 国产精品免费视频网站| 一级久久久久久| 一区二区三区四区精品| 欧美电影免费观看| 欧美一二三区| 久久只有精品| 亚洲天堂最新地址| 欧美日韩免费高清一区色橹橹| h视频网站在线观看| 国产精品女人久久久久久| 色狮一区二区三区四区视频| 三上悠亚av一区二区三区| 国产精品美女久久久久aⅴ国产馆| 中文字幕精品一区二区精| 中文字幕av日韩| 亚洲精品三区| 99热这里只有精品免费| www.亚洲色图.com| 日韩精品久久久久久免费| 亚洲欧美制服第一页| 久久福利在线| www.黄色网址.com| 成人爽a毛片一区二区免费| 日本最新中文字幕| 日韩精品视频免费| 成人免费毛片嘿嘿连载视频…| 亚洲最新在线| 国产91精品精华液一区二区三区 | 亚洲午夜精品一区二区| 狠狠色综合播放一区二区| 久久久精品视频免费观看| 亚洲成人av在线| 免费亚洲电影| 在线观看日韩片| 成人午夜看片网址| 青青青国产在线| 色婷婷综合成人av| 一区二区日韩| 不要播放器的av网站| 亚洲人一二三区| 欧美拍拍视频| 亚洲999一在线观看www| 日韩亚洲国产精品| 国产精品1区2区3区4区| 日韩一区二区三区在线| 免费在线小视频| 中文字幕久精品免| av一区二区三区| 中文字幕一区二区三区四区免费看 | 国产日产欧美a一级在线| 国产精品v日韩精品v欧美精品网站| 好吊日免费视频| 欧美一区二区三区喷汁尤物| 成人免费影院| 精品国产一区二区三区在线| 久久久久久久久久久久久久久99 | 欧美成人精品不卡视频在线观看| 色综合久久中文| 午夜激情影院在线观看|