webpack之性能优化

今天先来看两种性能优化的方式:
第一:抽离css代码并压缩
在没有配置之前,css是一起被打包到js文件里面的,像这样子
在这里插入图片描述
因此我们需要将css文件单独抽离出来

npm i mini-css-extract-plugin -D

我们是需要在打包的时候去抽离它,在开发阶段不需要,因此webpack.common.js中还是保留
在这里插入图片描述
在webpack.prod.js中

const MiniCssExtractPlugin =require('mini-css-extract-plugin')

plugins:[
 {
    new MiniCssExtractPlugin({
      filename:'css/main.[contentHash:8].css'
    })
 }
]

module:{
 rules:[
   {
     test:/\.css$/,
     loader:['MiniCssExtractPlugin.loader','css-loader']
   }
 ]
}

现在已经可以单独把css文件抽离出来了,但是还需要对css文件进行压缩。

npm i optimize-css-assets-webpack-plugin -D
npm i terser-webpack-plugin -D

webpack.prod.js

const TerserJSPlugin =require('terser-webpack-plugin')
const OptimizeCSSAssetsPlugin =require('optimize-css-assets-webpack-plugin')
optimization:{
 minimizer:[new TerserJSPlugin({}),new OptimizeCSSAssetsPlugin({})]
}

npm run build
在这里插入图片描述
打包好的index.html中,link标签引入了打包的css文件
在这里插入图片描述
第二:抽离公共代码
想象一下这种场景,A文件引入了一个common.js文件,B文件也引入了,那么打包以后两个文件中都有common里面的代码,其实是没有必要的,我们只需要把common的代码单独抽离出来,然后只是在A和B文件中用script标签引入。
webpack官网里是这样说的:
在这里插入图片描述
webpack.prod.js

optimization:{
 splitChunks:{
   cacheGroups:{
    common:{
      chunks:'initial',
      minSize:0,//生成 chunk 所需的主 chunk(bundle)的最小体积(以字节为单位)缩减
      minChunks:2//拆分前必须共享模块的最小 chunks 数。也就是common这个文件被引用的次数
     }
   }
 }
}

拆分以后打包
在这里插入图片描述
common这个文件从index.js和other.js中被抽离了出来,成为一个单独的文件。

除了这种我们自己写的公共文件,也可以将引入的第三方模块抽出来。
抽离node_modules
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值