Webpack高级配置(干货2)

39.CodeSplit 优化代码运行性能

entry由字符串变成对象,里面的key是chunk的name,值是入口文件
output中输出打包名字"[name].js"

当 index和index1里面都 引入a.js 和 jquery.js等时,打包后每一个bundle里都会有a和juery,使得体积变大,所以需要提炼出来,分包满足以下配置,就会单独打包
例如:引用次数超过2次,超过5万kb一定打包等等

如果不配置 miniChunks ,会把所有的modules都打包到一个里面

拆分第三方库和业务代码 vendors

拆分指定文件: locallib(diy)

分包需要配置
module.exports = {
    //...
    optimization: {
        // 分包的默认配置
        splitChunks: {
            chunks: 'all', 
            // 以下是默认值
            minSize: 20000, // 分割代码最小的大小
            minRemainingSize: 0, // 类似于miniSize,最后确保提取的文件大小不能为0
            minChunks: 1, // 至少被引用的次数,满足条件才会代码分割
            maxAsyncRequests: 30, // 按需加载时并行加载的文件的最大数量(数量多,请求会变多)
            maxInitialRequests: 30, // 入口js文件最大并行请求数量
            enforceSizeThreshold: 50000, // 超过50000kb一定会单独打包(此时会忽略minRemainingSize,maxAsyncRequests, maxInitialRequests)也就是总数,可能超过30
            cacheGroups: { // 组 那些模块要打包到一个组
                <!-- defaultVendors: { // 组名
                    test: /[\\/]node_modules[\\/]/, // 需要打包到一起的模块
                    priority: -10, // 权重(越大越高)
                    reuseExistingChunk: true, // 如果当前 chunk 包含已从主 bundle 中拆分出的模块,则它将被重用,而不是生成新的模块
                }, -->
                default: { // 其他没有写的配置会使用上面的默认值
                    minChunks: 2, // 这里的minChunks圈中更大
                    priority: -20,
                    reuseExistingChunk: true,
                },
                vendors: { //拆分第三方库(通过npm|yarn安装的库)
                    test: /[\\/]node_modules[\\/]/,
                    name: 'vendor',
                    chunks: 'initial',
                    priority: -10
                },
                locallib: { //拆分指定文件
                    test: /(src\/locallib\.js)$/,
                    name: 'locallib',
                    chunks: 'initial',
                    priority: -9
                }
            },
        },
    },
};

40.CodeSplit按需加载,性能优化

一些依赖在点击操作后才会加载,初始化时无需import加载
可以在使用时动态import
import('./src/xxx.js').then((res) => {

}).catch((err) => {

})

41.eslint 不支持动态倒入语法,需要引入import的plugin

webpack.config.js
plugin: [
    'import'
]

42.图片,字体等命名规则,可以提取复用

outPut里加assetModuleFilename: "static/media/[hash:10][ext][query]"

43.preload/prefatch

preload: 告诉浏览器立即加载资源
prefetch:告诉浏览器空闲时才开始加载资源

共同点:
都只会加载资源,并不执行
都有缓存

区别:
preload 加载优先级高,prefetch加载优先级低
preload 只能加载
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
webpack的完整配置包括以下几个方面: 1. 安装webpackwebpack-cli:首先,你需要在项目中安装webpackwebpack-cli。你可以使用以下命令来安装它们:`npm install --save-dev webpack webpack-cli`。这样可以确保在项目中使用webpack。 2. 创建webpack配置文件:接下来,你需要创建一个名为`webpack.config.js`的文件,并在其中编写webpack配置。这个配置文件是一个JavaScript模块,它需要导出一个包含配置选项的对象。在这个配置文件中,你可以定义入口文件、输出文件、加载器和插件等。 3. 配置入口文件和输出文件:在webpack配置中,你需要指定一个或多个入口文件和一个输出文件。入口文件是你项目中的主要文件,它将作为webpack的起点。输出文件是webpack生成的打包文件,它将包含所有的模块和依赖关系。 4. 配置加载器和插件:webpack提供了丰富的加载器和插件,用于处理不同类型的文件和执行其他任务。加载器用于处理非JavaScript文件,比如将CSS转换为JavaScript模块,或者将ES6代码转换为ES5代码。插件可以用于执行额外的任务,比如压缩代码、提取公共模块或生成HTML文件。 5. 配置开发服务器和热模块替换:webpack还提供了开发服务器和热模块替换功能,以便在开发过程中实时预览和更新代码。你可以在配置中指定服务器的地址、端口和代理等选项,以及启用热模块替换。 6. 配置其他选项:除了上述内容之外,你还可以配置其它选项,比如优化输出、指定模块查找路径、设置环境变量等。 总结起来,webpack的完整配置包括安装webpackwebpack-cli、创建配置文件、配置入口文件和输出文件、配置加载器和插件、配置开发服务器和热模块替换,以及其他选项的配置。你可以根据你的项目需求和具体情况来编写和调整这些配置项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值