日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Vue 打包體積優化方案小結

瀏覽:43日期:2023-01-19 15:02:25

Vue-cli3 打包體積優化方案

前言:

公司項目完成后 ,打包完成后有1.18MB,其實感覺還行了,但是還可以有優化的地方,對于咱們有精益求精(有沒有還是有點*數的)的精神下再去優化,可以先在項目中安裝webpack-bundle-analyzer可以看到各個文件的大小

npm install webpack-bundle-analyzer -save-dev

在vue.config.js中進行配置

module.exports = { chainWebpack: config => { config .plugin(’webpack-bundle-analyzer’) .use(require(’webpack-bundle-analyzer’).BundleAnalyzerPlugin) }}

執行npm run build 或者 npm run serve 會出現這花里胡哨的界面用來分析文件大小

Vue 打包體積優化方案小結

分析

還沒進行優化前vendor~app.xxxx.js 有1.18MB,咱們可以查看各個bundle大小,針對性的進行優化

Vue 打包體積優化方案小結

優化

CDN加載

對于vue、vue-router、vuex、axios等都可以在生產環境用CDN加載

const externals = { ’vue’: ’Vue’, ’vue-router’: ’VueRouter’, ’vuex’: ’Vuex’, ’axios’: ’axios’}const cdn = { css: [], js: [ ’https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.min.js’, ’https://cdn.jsdelivr.net/npm/vue-router@3.0.1/dist/vue-router.min.js’, ’https://cdn.jsdelivr.net/npm/vuex@3.0.1/dist/vuex.min.js’, ’https://cdn.jsdelivr.net/npm/axios@0.18.0/dist/axios.min.js’, ]}module.exports = { chainWebpack: config => { config .plugin(’webpack-bundle-analyzer’) .use(require(’webpack-bundle-analyzer’).BundleAnalyzerPlugin) config.plugin(’html’).tap(args => { if (process.env.NODE_ENV === ’production’) { args[0].cdn = cdn } return args }) },configureWebpack: config => { if (process.env.NODE_ENV === ’production’) { return { externals: externals, }; } },}

接著修改pubilc/index.html文件

<!DOCTYPE html><html lang='en'><head> <meta charset='utf-8'> <meta http-equiv='X-UA-Compatible' content='IE=edge'> <meta name='viewport' content='width=device-width,initial-scale=1.0'> <link rel='icon' href='http://www.b3g6.com/bcjs/<%= BASE_URL %>favicon.png' rel='external nofollow' > <!-- 使用CDN的CSS文件 --> <% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.css) { %> <link href='http://www.b3g6.com/bcjs/<%= htmlWebpackPlugin.options.cdn.css[i] %>' rel='external nofollow' rel='external nofollow' rel='preload' as='style'> <link href='http://www.b3g6.com/bcjs/<%= htmlWebpackPlugin.options.cdn.css[i] %>' rel='external nofollow' rel='external nofollow' rel='stylesheet'> <% } %> <!-- 使用CDN的JS文件 --> <% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.js) { %> <link href='http://www.b3g6.com/bcjs/<%= htmlWebpackPlugin.options.cdn.js[i] %>' rel='external nofollow' rel='preload' as='script'> <% } %> <title>上海比戶</title></head><body> <noscript> <strong></strong> </noscript> <div id='app'></div> <% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.js) { %> <script src='http://www.b3g6.com/bcjs/<%= htmlWebpackPlugin.options.cdn.js[i] %>'></script> <% } %></body></html>

路由懶加載

當打包應用的時候,JavaScript包會變的特別大,影響頁面加載,如果這時我們在訪問路由的時候去加載該模塊,那會變的十分高效,把靜態引入方式改為動態引入方式

import ComponentA from ’../page/components/ComponentA’;routeList = [ { path: ’/comA’, component: ComponentA },]//改為routeList = [ { path: ’/comA’, component: () => import(’../page/components/ComponentA’) },]

由于我的項目一開始就用了路由懶加載,所以在打包文件上看不出體積大小的變化,但是大概會有個300k的大小減少

在vue cli3中,我們還需要手動移除prefetch,Preload,因為在vue cli 官方文檔上提到,可以去了解下,我這大致概括了下

就是當首屏加載的時候,會一次性下載完所以的路由文件,這會導致首屏的時候請求內容變多,首屏加載變慢,修改如下

module.exports = { chainWebpack: config => { config .plugin(’webpack-bundle-analyzer’) .use(require(’webpack-bundle-analyzer’).BundleAnalyzerPlugin) config.plugin(’html’).tap(args => { if (process.env.NODE_ENV === ’production’) { args[0].cdn = cdn } return args }) // 移除 prefetch 插件 config.plugins.delete(’prefetch’) // 移除 preload 插件 config.plugins.delete(’preload’); }, configureWebpack: config => { if (process.env.NODE_ENV === ’production’) { return { externals: externals, }; } },}

element-ui 按需加載

看element-ui/lib 這個包就占了總包大小的三分之二,554k,總包也就700多k,所以如果把element-ui 按需加載,那就可以減少體積,按需加載這就不說了吧,都會~:stuck_out_tongue_closed_eyes:

但是需要在 babel.config.js文件中添加(vue cli3 中需要安裝 babel-plugin-component)

module.exports = { presets: [’@vue/app’], //加上這~ plugins: [ [ ’component’, { libraryName: ’element-ui’, styleLibraryName: ’theme-chalk’ } ] ]};

gzip

安裝 compression-webpack-plugin

nmp i compression-webpack-plugin -D

在vue.config.js中引入

const CompressionPlugin = require(’compression-webpack-plugin’);module.exports = { chainWebpack: config => { config .plugin(’webpack-bundle-analyzer’) .use(require(’webpack-bundle-analyzer’).BundleAnalyzerPlugin) config.plugin(’html’).tap(args => { if (process.env.NODE_ENV === ’production’) { args[0].cdn = cdn } return args }) // 移除 prefetch 插件 config.plugins.delete(’prefetch’) // 移除 preload 插件 config.plugins.delete(’preload’); }, configureWebpack: config => { if (process.env.NODE_ENV === ’production’) { return { externals: externals, plugins: [ //gzip壓縮 new CompressionPlugin({ test: /.js?¨E92E.html|.html?¨E92E.html|.css/, //匹配文件名 threshold: 10240, //對超過10k的數據壓縮 deleteOriginalAssets: false //不刪除源文件 }) ], performance: { hints: false } }; } },}

可以在上面的圖看到,進行gzip壓縮后的文件最大的也只有140k了

但是還需要在服務端配置

scss文件引入

我們通常會把scss文件抽離出來,一些共用樣式,主題等,然后會在每個需要的組件中引入會顯得繁瑣,我們可以借助scss-loader進行預處理

例如我們有 resetTable.scss 文件,可以在vue.config.js中引入

module.exports = { chainWebpack: config => { config .plugin(’webpack-bundle-analyzer’) .use(require(’webpack-bundle-analyzer’).BundleAnalyzerPlugin) config.plugin(’html’).tap(args => { if (process.env.NODE_ENV === ’production’) { args[0].cdn = cdn } return args }) // 移除 prefetch 插件 config.plugins.delete(’prefetch’) // 移除 preload 插件 config.plugins.delete(’preload’); }, configureWebpack: config => { if (process.env.NODE_ENV === ’production’) { return { externals: externals, plugins: [ //gzip壓縮 new CompressionPlugin({ test: /.js?¨E92E.html|.html?¨E92E.html|.css/, //匹配文件名 threshold: 10240, //對超過10k的數據壓縮 deleteOriginalAssets: false //不刪除源文件 }) ], performance: { hints: false } }; } }, // scss設置 css: { loaderOptions: { sass: { //我是放在 assets/commcss 目錄下 data: ’@import '@assets/commcss/resetTable.scss';’ } }, },}

上面這圖就是完整的vue.config.js配置啦~

總結:

​ 以上就是目前我在項目中優化的點,但肯定還有其他的優化地方,可以相互討論

到此這篇關于Vue 打包體積優化方案小結的文章就介紹到這了,更多相關Vue 打包體積優化內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Vue
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩在线免费| 免费视频亚洲| 久久最新视频| 亚洲免费在线| 99精品视频精品精品视频| 麻豆精品蜜桃| 好看不卡的中文字幕| 免费在线观看视频一区| 日韩精品亚洲专区| 国产精品亚洲二区| 欧美xxxx中国| 蜜桃成人av| 亚洲一区中文| 91精品国产经典在线观看 | 亚洲精品国产嫩草在线观看| 国产91精品对白在线播放| 麻豆久久精品| 91午夜精品| 精品三区视频| 国产高清久久| 欧美片网站免费| 亚洲精品在线影院| 久久午夜影视| 欧美成人一二区| 激情视频一区二区三区| 五月亚洲婷婷| 国产99在线| 视频在线在亚洲| 久久99免费视频| 亚洲性视频h| 91精品丝袜国产高跟在线| 黄色aa久久| 国产精品普通话对白| 7777精品| 亚洲性图久久| 国产精品2区| 黄色日韩在线| 老司机精品视频网| 精品久久久亚洲| 国产农村妇女精品一二区| 美女视频网站久久| 麻豆成人在线| 特黄毛片在线观看| 日本精品一区二区三区在线观看视频| 国产在线一区不卡| 中文字幕日韩亚洲| 五月激情久久| 国产精品一区二区三区美女| 日韩一区二区三区在线免费观看| 婷婷综合成人| 欧美精品一区二区久久| 国产精品黄网站| 日韩影院在线观看| 免费福利视频一区二区三区| 日本精品在线播放| 五月天综合网站| 国内精品伊人| 91麻豆精品激情在线观看最新 | 午夜视频一区二区在线观看| 欧美精品日日操| 日本成人手机在线| 偷拍欧美精品| av高清不卡| 国产图片一区| 日韩中文字幕区一区有砖一区 | 国产99精品| 成人精品视频| 国产精品久久久久毛片大屁完整版 | 影音先锋国产精品| 国内一区二区三区| 国产日韩精品视频一区二区三区| 欧美中文字幕| 色婷婷久久久| 久久亚洲精品中文字幕| 日本久久一区| 日本一区二区三区视频在线看| 欧美日韩日本国产亚洲在线| 日韩精品1区| 免费亚洲婷婷| 国产精品久久久久久久久免费高清 | 四虎精品一区二区免费| 国产精品普通话对白| 极品日韩av| 999国产精品| 日韩欧美一区免费| 国产精品丝袜在线播放| 欧美午夜三级| 日本精品久久| 亚洲欧洲美洲国产香蕉| 红桃视频国产精品| 欧美另类专区| 最新亚洲一区| 欧美综合二区| 国产综合激情| 91精品啪在线观看国产18| 日韩一区欧美| 91亚洲自偷观看高清| 成人亚洲一区二区| 日韩在线综合| 桃色一区二区| 亚洲综合电影| 日韩成人综合| 极品日韩av| 午夜久久免费观看| 亚洲一区日本| 视频一区日韩精品| 国产日韩欧美三区| 久久精品亚洲一区二区| 精品资源在线| 97精品一区二区| 久久人人精品| 99国内精品| 亚洲bt欧美bt精品777| 欧美久久香蕉| 欧美aⅴ一区二区三区视频| 久久激情综合网| 久久精品国产网站| 亚洲成人精品| 久久不射中文字幕| 日本成人中文字幕| 久久精品一区二区国产| 韩国久久久久久| 国产二区精品| 日韩精品一区二区三区中文字幕| 国产欧美一区二区三区国产幕精品| 国产精品magnet| 中文一区一区三区高中清不卡免费| 国产精品99一区二区| 亚洲精品系列| 卡一卡二国产精品| 欧美日韩中文字幕一区二区三区| 午夜国产精品视频| 日本va欧美va瓶| 麻豆成全视频免费观看在线看| 女同性一区二区三区人了人一| 日本va欧美va精品发布| 成人黄色av| 蜜臀久久99精品久久久久久9| 国产精品入口久久| 国内精品福利| 国产日韩欧美一区二区三区在线观看| 亚洲最新无码中文字幕久久| 亚洲一区二区三区高清| 国产精品theporn| 99re国产精品| 国产精品任我爽爆在线播放| 99久久久久| 久久国产精品免费一区二区三区| 国产精品13p| 亚洲欧洲免费| 久久精品导航| 欧美日一区二区在线观看| 久久久久久网| 日韩激情啪啪| 激情婷婷综合| 精品国产一区二区三区性色av| 国产精品视区| 国产一区福利| 97久久亚洲| 偷拍欧美精品| 久久福利在线| 久久电影一区| 日韩精品一区二区三区免费观影| 97久久亚洲| 香蕉成人久久| 欧洲一区二区三区精品| 国产视频网站一区二区三区| 极品日韩av| 福利一区二区免费视频| 97久久亚洲| 中文一区一区三区免费在线观 | 高清久久精品| 日韩国产91| 国产农村妇女精品一二区| 亚洲精品永久免费视频| 国产日韩精品视频一区二区三区| 尹人成人综合网| 97视频热人人精品免费| 国产亚洲一卡2卡3卡4卡新区| 久久福利影视| 亚洲精品2区| 精品久久亚洲| 久久99影视| 国产精品一二| 亚洲精品免费观看| 国产午夜久久| 久久亚洲在线| 综合日韩av| 精品亚洲免a| 国产精品久久久久久久久久齐齐| 日本不卡不码高清免费观看| 一二三区精品| 99在线观看免费视频精品观看| 成人羞羞在线观看网站| 天堂а√在线最新版中文在线| 精品黄色一级片| 青青国产91久久久久久| 日本一区二区三区中文字幕| 日韩制服丝袜av| 久久av一区二区三区|