webpack:代码分割

webpack中文文档地址:https://www.webpackjs.com
从webpack4开始官方移除了commonchunk插件,改用了optimization属性进行更加灵活的配置

// 配置项 (注意:webpack4及以上才支持optimization配置项,4以下请使用commonchunk插件)

optimization: {
  splitChunks: {
    chunks: 'all',  // async: 异步代码分割。initial:同步代码分割。all:同步、异步都分割。默认值:'async'
    minSize: 30000, // 表示只有大于30kb的文件才会被分割
    maxSize: 50000, // 一般不需要配。这里表示如果文件超过50kb,就会尝试将文件拆分成多个50kb文件,如果拆分不了还是会以原文件大小打包
    minChunks: 2,  // 表示一个文件被引用2次才会进行代码分割
    maxAsyncRequests: 5, // 同时加载的请求对多为5个
    maxInitialRequests: 3, // 入口文件引入的库最多分割成3个文件
    automaticNameDelimiter: '~', // 组和文件的默认连接符,组中配置了filename之后失效
    name: true, // 开启之后,组中配置的filename才会生效
    cacheGroups: { // 打包同步代码时进行缓存分组,每个组都可配置:chunks、minSize、minChunks、maxAsyncRequests、maxInitialRequests、 name等等
        vendors: {    
            test: /[\\/]node_modules[\\/]/,  // 凡是从node_modules引入的文件都打包到vendors组下面
            priority: -10, // 分组优先级。当一个文件同时满足多个组的打包条件时,会被打包到priority值大(优先级高)的组中
            filename: 'vendors.js '  // vendors组文件的自定义文件名,不写默认:'vendors~main.js'
        },
        default: {   // 其他文件走这个默认配置,如果default为false,不会生成其他文件的分割文件 
            minChunks: 2,
            priority: -20,
            reuseExistingChunk: true // 为true表示一个模块已经被打包过了,再次遇到的时候就直接使用之前打包的而不再二次打包了
        }
    }
  }
}


splitChunks详细配置文档:https://www.webpackjs.com/plugins/split-chunks-plugin/

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Webpack可以通过代码分割来将应用程序的代码拆分成更小的块,以便在需要时按需加载。这有助于减小初始的加载时间,并提高应用程序的性能。下面是一些常用的代码分割方法: 1. 使用动态导入(Dynamic Import):动态导入是一种在运行时按需加载代码块的方法。你可以使用import()函数来实现动态导入。例如,你可以在React组件中使用动态导入来按需加载所需的代码块。例如: ```javascript import('./module').then(module => { // 使用导入的模块 }); ``` 2. 使用webpack的splitChunks配置项:Webpack 4及以上版本提供了一个名为splitChunks的配置项,可用于自动代码分割。你可以在webpack配置文件的optimization选项中配置splitChunks来实现代码分割。例如: ```javascript optimization: { splitChunks: { chunks: 'all' } } ``` 上述配置将会根据一些默认策略将代码拆分成多个块。你也可以根据需要自定义splitChunks的配置,例如指定拆分的最小块大小、最小引用次数等。 3. 使用webpack的动态导入和splitChunks的结合:你还可以将动态导入与splitChunks配置项结合使用,以更精细地控制代码分割。例如,你可以使用动态导入来按需加载某个模块,同时使用splitChunks配置项来将该模块提取为一个单独的代码块。例如: ```javascript import(/* webpackChunkName: "module" */ './module').then(module => { // 使用导入的模块 }); ``` 并在webpack配置中配置splitChunks: ```javascript optimization: { splitChunks: { cacheGroups: { module: { chunks: 'async', name: 'module', test: /[\\/]module
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值