国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

前端項目優(yōu)化:減少webpack打包體積

這篇具有很好參考價值的文章主要介紹了前端項目優(yōu)化:減少webpack打包體積。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

最近自己買個云服務(wù)器,把之前搭建的webpack-vue項目進行了部署,現(xiàn)在項目已經(jīng)成功了。

項目地址:GitHub - wjt162286793/webpack----vue: 使用webpack配置一個腳手架,對照文檔,純手打

?線上地址:IAM架構(gòu)資產(chǎn)管理系統(tǒng)

不過是沒有經(jīng)過任何優(yōu)化的,雖然項目體積和業(yè)務(wù)不是很復(fù)雜,但是實際上打完包后體積也是比較大,首次加載也是需要請求大資源文件,導(dǎo)致項目加載很慢,而且還有很多console.log的內(nèi)容在控制臺上,效果如下

前端項目優(yōu)化:減少webpack打包體積,webpack,webpack,前端

前端項目優(yōu)化:減少webpack打包體積,webpack,webpack,前端

前端項目優(yōu)化:減少webpack打包體積,webpack,webpack,前端

我這個項目最多算一個中小型,現(xiàn)在的包就87MB那么大,我在線上部署了一下,白屏16秒......

本文主要針對webpack進行優(yōu)化,版本為webpack5,并不對業(yè)務(wù)代碼本身進行優(yōu)化,因為本身業(yè)務(wù)代碼也不是特別的多,編寫的時候也是注重代碼的結(jié)構(gòu)的

優(yōu)化

1.拆包

用webpack打包后,vendors.js是所有當前項目中所有的依賴包和業(yè)務(wù)代碼的綜合,我們就要想辦法讓vendors包的提交大大縮減

(1)將每個業(yè)務(wù)組件分成單獨的js文件

在配置路由時,我們可以使用懶加載和webpackChunkName,將每個路由組件都生成小包,脫離掉vendors.js

 {
   path: '/dashboard/business/businessList',
   name: 'businessList',
   meta: {
       name: '列表'
    },
   component: () => import(/* webpackChunkName:'businessList'*/ 'pages/business/components/businessList.vue')
    },

(2)使用externals篩除依賴包,改用cdn服務(wù)加載

注意:如果用戶是可以連接到互聯(lián)網(wǎng)的情況下,可以這樣使用。如果用戶是無法訪問互聯(lián)網(wǎng)和對應(yīng)cdn地址的,就不可以這樣去做了。

externals配置

當你使用了externals之后,里面配置的包就不會出現(xiàn)在打包中

  externals: {
    'vue': 'Vue',
    'axios': 'axios',
    'vue-router': 'VueRouter',
    'vuex': 'Vuex',
    'html2canvas': 'html2canvas',
    'lodash': '_'
  },

在項目中,我們引入的方式必須要要和這里面的一致

key是包名,value是這個包默認導(dǎo)出的名字(!!!一定要寫對)

例如:vue3就沒有導(dǎo)出vue,而是import {creatApp} from 'vue'

我們這里就要寫成這個樣子

//原來的寫法
//import {createApp} from 'vue'

const Vue = require('vue')
import Main from './main.vue'
export const mainVue = Vue.createApp(Main)

其他同理

cdn的使用

如果我們使用externals排除了某個包,就需要在index.html中引入cdn地址。

這里注意,cdn的包地址一定要引對。

    <script src="https://cdn.bootcdn.net/ajax/libs/vue/3.3.4/vue.global.prod.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/axios/1.3.5/axios.min.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/vuex/4.1.0/vuex.global.prod.min.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue-router/4.0.16/vue-router.global.prod.min.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/html2canvas/1.4.1/html2canvas.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>

這里有一個很簡單的測試方法,你去cdn地址上將代碼復(fù)制下來,在本地去測一下,看能不能成功使用你在externals中使用的包類名

前端項目優(yōu)化:減少webpack打包體積,webpack,webpack,前端

?前端項目優(yōu)化:減少webpack打包體積,webpack,webpack,前端

?如果不能對的上,那你發(fā)到生產(chǎn)上就會報錯

所以,找cdn的地址一定要找對

2.ui組件庫的處理

大部分項目都會用到ui組件庫,如element-ui或者element-plus,echarts等等

這里有一個原則,如果你的項目中基本把這個組件庫的絕大多數(shù)組件都用了,那你就可以直接將這個組件庫也用cdn的形式引用了。如果沒有的話,那你就是用按需引入的方式去引入該ui組件庫

大部分的組件庫都給提供了按需引入的方式,對照著文檔操作就可以了

3.依賴包的抽取

比如一個包在多個文件中使用,我們只需要抽取一次就可以了,這樣也可以減除很多的冗余代碼

    optimization: {
        moduleIds: 'deterministic',
        runtimeChunk: 'single',
        splitChunks: {
            cacheGroups: {
                vendor: {
                    test: /[\\/]node_modules[\\/]/,
                    name: 'vendors',
                    chunks: 'all',
                },
            },
        },
    },

4.使用gzip壓縮

const CompressionPlugin = require('compression-webpack-plugin');
  plugins: [
    new CompressionPlugin({
      algorithm: 'gzip', // 使用gzip算法進行壓縮
      test: /\.(js|css)$/, // 需要壓縮的文件類型
      threshold: 10240, // 文件大小大于10KB才會被壓縮
      minRatio: 0.8, // 壓縮比例達到0.8才會被壓縮
      deleteOriginalAssets: false, // 是否刪除原始文件
    }),
    //...
  ],

使用了gzip之后,打包后的文件就會生成.gz的壓縮文件,也是常見有效的優(yōu)化,能是構(gòu)建包更輕量

5.生產(chǎn)環(huán)境去掉debug,注釋,打印語句

const TerserPlugin = require('terser-webpack-plugin');
  optimization: {
    //生產(chǎn)環(huán)境上干掉所有的js注釋和日志
    minimize: true,
    minimizer: [
      new TerserPlugin({
        terserOptions: {
          format: {
            comments: false,   //刪除注釋
          },
          compress: {
            drop_debugger: true,
            drop_console: true,
            pure_funcs: ['console.log']//刪除打印語句
          }
        },
        extractComments: false,

      }),
    ],
  },

6.生產(chǎn)環(huán)境去除sourceMap

在開發(fā)的時候,我們?yōu)榱朔奖悴檎义e誤,配置了soureMap。

但是在打包構(gòu)建的時候,就需要關(guān)閉sourceMap了。其一是可以不打包map文件減少體積,其二是可以避免源碼泄露。

在配置中加一行

devtool: false

7.對其他靜態(tài)資源的壓縮

在打包時,js文件會默認壓縮。但是很多靜態(tài)文件之類的不會,特別是圖片等資源。

這里我就不在文檔中寫具體怎么操作了,網(wǎng)上一搜一大把。后續(xù)我會在webpack系列中對各種plugin進行演示

結(jié)果

現(xiàn)在我在打包一次,可以看看效果

前端項目優(yōu)化:減少webpack打包體積,webpack,webpack,前端

?前端項目優(yōu)化:減少webpack打包體積,webpack,webpack,前端

?效果也是很明顯的

前端項目優(yōu)化:減少webpack打包體積,webpack,webpack,前端

項目地址

特意說明一下:現(xiàn)在項目也只是完成了初版的,后續(xù)還有東西要往里面寫。優(yōu)化還有一些提升的空間

業(yè)務(wù)也都是模擬的假業(yè)務(wù),是為了技術(shù)練習,沒有任何的實際意義,也沒有侵犯任何單位的行為。

項目地址:GitHub - wjt162286793/webpack----vue: 使用webpack配置一個腳手架,對照文檔,純手打

線上地址:IAM架構(gòu)資產(chǎn)管理系統(tǒng)

感覺有用的在github上給個star吧!文章來源地址http://www.zghlxwxcb.cn/news/detail-812553.html

到了這里,關(guān)于前端項目優(yōu)化:減少webpack打包體積的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 前端項目體積優(yōu)化策略

    在前端開發(fā)中,項目體積優(yōu)化是一個重要的環(huán)節(jié),它直接影響到網(wǎng)頁的加載速度和用戶體驗。隨著前端項目越來越復(fù)雜,引入的依賴也越來越多,如何有效地減少最終打包文件的大小,成為了前端工程師需要面對的挑戰(zhàn)。以下是一些常見的前端項目體積優(yōu)化策略: 1. 代碼分割

    2024年04月13日
    瀏覽(32)
  • 前端性能優(yōu)化——包體積壓縮插件,打包速度提升插件,提升瀏覽器響應(yīng)的速率模式

    前端性能優(yōu)化——包體積壓縮插件,打包速度提升插件,提升瀏覽器響應(yīng)的速率模式

    –其他的優(yōu)化可以具體在網(wǎng)上搜索 壓縮項目打包后的體積大小、提升打包速度,是前端性能優(yōu)化中非常重要的環(huán)節(jié),結(jié)合工作中的實踐總結(jié),梳理出一些 常規(guī)且有效 的性能優(yōu)化建議 ue 項目可以通過添加–report命令: \\\"build\\\": \\\"vue-cli-service build --report\\\" ,打包后 dist 目錄會生成

    2024年02月12日
    瀏覽(24)
  • vue項目打包優(yōu)化:縮小體積productionSourceMap設(shè)置,使用cdn加速

    一、vue項目打包體積大優(yōu)化之productionSourceMap設(shè)置 1、productionSourceMap 的作用 productionSourceMap 在構(gòu)建時生成完整的 SourceMap 文件,默認情況下開啟。生產(chǎn)環(huán)境中啟用 productionSourceMap 有助于開發(fā)者調(diào)試代碼,可以在瀏覽器的調(diào)試工具中查看到源文件中錯誤的代碼位置,而不是編譯后

    2024年02月21日
    瀏覽(25)
  • Unity減少發(fā)布打包文件的體積(二)——設(shè)置WebGL發(fā)布時每張圖片的壓縮方式

    Unity減少發(fā)布打包文件的體積(二)——設(shè)置WebGL發(fā)布時每張圖片的壓縮方式

    一個項目在發(fā)布成WebGL后,其體積至關(guān)重要,體積太大,用戶加載會經(jīng)歷一個漫長的等待…輕則罵娘,重則用腳把電腦踢爛(扣 質(zhì) 保 金 )… 那么如何減少發(fā)布后的體積呢,本文從圖片的壓縮開始入手。 前傳回顧: Unity減少發(fā)布打包文件的體積(一)——獲取精靈圖片的信息限

    2024年02月04日
    瀏覽(21)
  • 用webpack做一些前端打包時的性能優(yōu)化

    一.webpack 的五個核心概念 1.Entry:入口指示,webpack以哪個文件為入口起點開始打包,分析構(gòu)建內(nèi)部依賴圖 2.output:輸出指示,webpack打包后的資源bundles輸出到哪里去,以及如何命名 3.loader :loader讓webpack能夠去處翻譯理那些非js文件(img css…) 4.Plugins :Plugins插件可以用于執(zhí)行范圍

    2024年02月12日
    瀏覽(19)
  • 【vite+vue3.2 項目性能優(yōu)化實戰(zhàn)】打包體積分析插件rollup-plugin-visualizer視圖分析

    【vite+vue3.2 項目性能優(yōu)化實戰(zhàn)】打包體積分析插件rollup-plugin-visualizer視圖分析

    rollup-plugin-visualizer 是一個用于Rollup構(gòu)建工具的插件,它可以生成可視化的構(gòu)建報告,幫助開發(fā)者更好地了解構(gòu)建過程中的文件大小、依賴關(guān)系等信息。 使用 rollup-plugin-visualizer 插件,可以在構(gòu)建完成后生成一個交互式的HTML報告,其中包含了構(gòu)建過程中的各種統(tǒng)計信息,如文

    2024年02月07日
    瀏覽(39)
  • 前端Vue項目webpack打包部署后源碼泄露解決

    前端Vue項目webpack打包部署后源碼泄露解決

    前端項目使用nuxt框架(基于Vue),采用Webpack打包,部署到服務(wù)器后,進行漏洞檢測。 經(jīng)Webpack打包部署到服務(wù)器后,訪問并打開開發(fā)者模式,在Source下出現(xiàn)[name]路徑,內(nèi)部包含(webpack)buildin文件夾。(做漏洞分析時,會認為該內(nèi)容涉及源碼泄露) 1.首先考慮源碼泄露的問題 打

    2024年02月03日
    瀏覽(26)
  • node.js+NPM包管理器+Webpack打包工具+前端項目搭建

    node.js+NPM包管理器+Webpack打包工具+前端項目搭建

    javascript運行環(huán)境(無需依賴html文件) BFF,服務(wù)于前端的后端 官網(wǎng)下載安裝,node -v查看是否安裝成功 ①、創(chuàng)建一個01.js文件 ②、通過CMD命令執(zhí)行(或者通過工具的集成終端) node 01.js 如果出現(xiàn)權(quán)限原因,可以通過管理員方式打開工具 ③、通過瀏覽器訪問http://127.0.0.1:8888 如

    2024年02月07日
    瀏覽(44)
  • vite配置cdn優(yōu)化打包體積

    vite配置cdn優(yōu)化打包體積

    大家都知道前端性能優(yōu)化的方法,cdn外部引入的方法可以使項目打包后體積大大縮小,所以是前端性能優(yōu)化方面非常推薦的方法之一。 本文關(guān)于 vite2 vue3 + Ts 項目如何cdn引入 element plus 做一個簡單教程,我們可以通過兩種方式引入配置cdn。 由于 vite 的核心基于 rollup 和 webpac

    2024年02月05日
    瀏覽(25)
  • webpack打包優(yōu)化指南

    前言 目前所有公司項目的代碼量都比較大,打包出來的文件會很大,甚至導(dǎo)致打包壓縮代碼時內(nèi)存不足,頁面加載速度也較慢。為了優(yōu)化加載速度,下面提供一些編碼指導(dǎo)建議: 一、瀏覽器(chrome)運行指標 瀏覽器請求并發(fā)數(shù)量, chrome 請求并發(fā)數(shù)量為 6 個 webpack 優(yōu)化目的是為

    2024年02月16日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包