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

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

Vue 打包體積優化方案小結

瀏覽:48日期: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://m.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://m.b3g6.com/bcjs/<%= htmlWebpackPlugin.options.cdn.css[i] %>' rel='external nofollow' rel='external nofollow' rel='preload' as='style'> <link href='http://m.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://m.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://m.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久久,三上悠亚国产精品一区二区三区
伊人精品一区| 国产麻豆久久| 午夜在线视频一区二区区别| 国产一区二区中文| 美女网站一区| 亚洲欧洲一区二区天堂久久| 免费视频一区三区| 午夜国产一区二区| 视频一区在线视频| 日韩极品在线观看| 国产精品sm| av在线最新| 日韩专区精品| 欧美女激情福利| 免费不卡在线观看| 国产亚洲精品精品国产亚洲综合| 国产精品视频一区二区三区 | 久久精品国产成人一区二区三区| 久久av免费看| av在线最新| 精品91久久久久| 爽好久久久欧美精品| 少妇精品在线| 久久不卡国产精品一区二区| 水蜜桃精品av一区二区| 亚洲一级高清| 综合激情婷婷| 国产毛片一区二区三区| 精品国产欧美| 久久网站免费观看| 石原莉奈在线亚洲三区| 欧美午夜三级| 亚洲黄色免费av| 免费不卡中文字幕在线| 另类激情亚洲| 久久69成人| 蜜桃国内精品久久久久软件9| 亚洲一二av| 欧美激情aⅴ一区二区三区 | 国产精品magnet| 91精品亚洲| 日韩一区二区三区高清在线观看| 久久精品 人人爱| 亚洲最新无码中文字幕久久 | 精品日韩毛片| 国产日韩一区二区三区在线播放| 最新中文字幕在线播放| 日av在线不卡| 国产伦久视频在线观看| 视频在线观看一区二区三区| 免费在线亚洲欧美| 激情丁香综合| 国产精品玖玖玖在线资源| 久久久成人网| 日韩精品五月天| 日韩深夜视频| 亚洲毛片在线| 91精品啪在线观看国产18| 日本午夜免费一区二区| 久久精品动漫| 国产日韩一区| 日韩视频免费| 国产不卡av一区二区| 一二三区精品| 久久久久国产精品一区三寸 | 国产精品日韩| 精品一区二区三区中文字幕| 国产精品嫩草99av在线| 国产一区二区三区探花| 亚洲三区欧美一区国产二区| 91精品韩国| 欧美日本不卡高清| 99riav国产精品| 中文字幕在线视频久| 日韩精品免费视频一区二区三区| 天堂日韩电影| 欧美交a欧美精品喷水| 亚洲一区二区三区高清| 天堂√中文最新版在线| 久久狠狠亚洲综合| 99国产精品一区二区| 国产精品分类| 亚洲精品成人一区| 在线观看免费一区二区| 动漫av一区| 久久激情五月激情| 综合色就爱涩涩涩综合婷婷| 精品一区在线| bbw在线视频| 美女性感视频久久| 日本久久二区| 久久成人国产| 久久伦理在线| 日韩激情一区| 欧美激情另类| 国产精品最新| 日韩国产欧美三级| 中文字幕一区二区三区在线视频| 精品91久久久久| 欧美日韩一区二区三区视频播放| 国产一区二区色噜噜| 欧美aa在线视频| 国产精品一在线观看| 欧美一级网址| 欧美日韩1区| 久久国产精品色av免费看| 日本一区福利在线| 亚洲网址在线观看| 免费在线观看精品| 午夜在线精品| 欧美在线网站| 黑丝美女一区二区| 午夜久久影院| 亚洲神马久久| 99热免费精品| 亚洲一区二区网站| 亚洲一区区二区| 日韩在线a电影| 喷白浆一区二区| 一区二区三区四区日韩| 免费成人在线影院| 亚州av一区| 日韩av二区在线播放| 日本高清久久| 国产欧美日韩精品高清二区综合区| 日韩高清在线不卡| 日韩av一二三| 国产亚洲一区二区三区不卡| 国产精品手机在线播放| 久久中文字幕一区二区| 精品午夜久久| 成人国产精品一区二区免费麻豆| 久久精品国产亚洲一区二区三区| 精品视频国产| 日韩成人亚洲| 欧美日韩少妇| 一区二区国产在线观看| 日本aⅴ精品一区二区三区| 国产精品色婷婷在线观看| 精品九九久久| 成人免费网站www网站高清| 欧美日韩在线二区| 美女精品在线观看| 91综合久久爱com| 麻豆久久久久久| 一本一道久久a久久精品蜜桃| 亚洲激情不卡| 日本成人中文字幕| 精品免费av一区二区三区| 久久久精品网| 久久成人精品| 国产精品videosex极品| 日韩影院二区| 午夜在线精品| 国产精区一区二区| 日韩1区2区| 亚洲午夜电影| 日本在线成人| 欧美激情视频一区二区三区免费 | 亚洲精品一区三区三区在线观看| 蜜桃视频欧美| 少妇精品在线| 国产一区福利| 成人av二区| 国产一卡不卡| 久久精选视频| 亚洲另类黄色| 国产69精品久久| 亚洲欧美高清| 国产精品2023| 一区在线视频观看| 久久久噜噜噜| 日本午夜精品| 久久人人88| 国产伦精品一区二区三区视频 | 欧美激情91| 免费观看不卡av| 国产精品亚洲人成在99www| 99精品小视频| 欧美日韩中出| 欧美1区免费| 国产剧情在线观看一区| 激情欧美一区二区三区| 欧美伊人久久| 久久婷婷一区| 日韩动漫一区| 亚洲91久久| 国产精品成人3p一区二区三区| 久久九九电影| 国产精品一区二区三区美女| 视频福利一区| 久久国内精品视频| 精品一区在线| 精品国产午夜肉伦伦影院 | 欧美日韩国产一区精品一区| 免费一级欧美片在线观看网站| 丝袜美腿高跟呻吟高潮一区| 国产精品蜜芽在线观看| 日韩精品社区| 午夜久久美女|