当前位置: 首页 > wzjs >正文

建筑网站开发yandex搜索引擎

建筑网站开发,yandex搜索引擎,新手做网站流程,郑州做网站那webpack 中 chunks详解 在 Webpack 项目中,webpack.config.js 是核心配置文件,而非 webpack.json。chunks 的概念与 Webpack 的代码分割(Code Splitting)功能密切相关,通过 optimization.splitChunks 配置项可以实现对…

webpack 中 chunks详解


在这里插入图片描述

在 Webpack 项目中,webpack.config.js 是核心配置文件,而非 webpack.jsonchunks 的概念与 Webpack 的代码分割(Code Splitting)功能密切相关,通过 optimization.splitChunks 配置项可以实现对代码块的分类和优化。以下是 Webpack 中 chunks 的分类和配置使用详解:


一、Chunks 的分类

在 Webpack 中,chunks 通常分为以下三类:

  1. Initial Chunks(初始块)

    • 入口文件(entry)直接引入的代码。
    • 默认情况下,每个入口文件会生成一个独立的初始块。
  2. Async Chunks(异步块)

    • 通过动态导入(import())方式加载的代码。
    • 异步块会在运行时按需加载,减少初始包体积。
  3. Runtime Chunks(运行时块)

    • 包含 Webpack 运行时代码的块,例如模块加载逻辑和模块缓存。
    • 通过 optimization.runtimeChunk 配置可以提取运行时代码到单独的文件。

二、SplitChunks 配置详解

optimization.splitChunks 是 Webpack 4+ 提供的代码分割优化配置项,用于控制如何拆分代码块。

1. 基础配置
module.exports = {optimization: {splitChunks: {chunks: 'all', // 可选值:'all' | 'async' | 'initial'minSize: 20000, // 生成块的最小体积(字节)maxSize: 0, // 生成块的最大体积(字节),超出会尝试拆分minChunks: 1, // 被引用次数达到多少时才提取为单独块maxAsyncRequests: 30, // 异步请求的最大并行数maxInitialRequests: 30, // 入口点的最大并行请求数automaticNameDelimiter: '~', // 块名称的分隔符cacheGroups: { // 缓存组配置defaultVendors: {test: /[\\/]node_modules[\\/]/, // 匹配第三方库priority: -10, // 优先级filename: 'vendors.js', // 自定义输出文件名},default: {minChunks: 2, // 被引用至少2次时提取priority: -20,reuseExistingChunk: true, // 复用已存在的块},},},},
};
2. 配置项说明
  • chunks

    • 'all':对同步和异步代码都进行分割。
    • 'async':仅对异步代码进行分割(默认值)。
    • 'initial':仅对同步代码进行分割。
  • minSize

    • 生成块的最小体积,小于该值的块不会被分割。
  • maxSize

    • 生成块的最大体积,超出该值的块会尝试进一步拆分。
  • cacheGroups

    • 用于定义代码块的提取规则,例如将第三方库提取到 vendors.js

三、Chunks 配置示例

1. 提取第三方库

node_modules 中的代码提取到单独的文件:

cacheGroups: {vendors: {test: /[\\/]node_modules[\\/]/,name: 'vendors',chunks: 'all',},
},
2. 提取公共代码

将多个入口文件中共享的代码提取到 common.js

cacheGroups: {common: {name: 'common',minChunks: 2, // 被至少2个入口文件引用chunks: 'initial',priority: 5, // 优先级低于 vendors},
},
3. 动态导入(按需加载)

使用 import() 动态加载模块,Webpack 会自动生成异步块:

// 示例代码
button.addEventListener('click', () => {import('./analytics.js').then(({ trackEvent }) => {trackEvent('click');});
});
4. 提取运行时代码

将 Webpack 运行时代码提取到单独的文件:

module.exports = {optimization: {runtimeChunk: 'single', // 提取为单个文件 runtime.js},
};

四、优化策略

  1. 减少初始加载体积

    • 将第三方库和公共代码提取到单独的文件。
    • 使用 import() 实现按需加载。
  2. 提高缓存利用率

    • 为提取的块设置唯一的 contenthash 名称,确保文件内容变化时才更新缓存。
  3. 控制并行请求数

    • 调整 maxAsyncRequestsmaxInitialRequests,避免过多的并行请求。
  4. 分析打包结果

    • 使用 webpack-bundle-analyzer 插件可视化分析打包结果,优化分块策略。

五、示例配置文件

const path = require('path');
const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');module.exports = {entry: {main: './src/index.js',admin: './src/admin.js',},output: {filename: '[name].[contenthash].js',path: path.resolve(__dirname, 'dist'),clean: true,},optimization: {splitChunks: {chunks: 'all',cacheGroups: {vendors: {test: /[\\/]node_modules[\\/]/,name: 'vendors',},common: {name: 'common',minChunks: 2,priority: -10,},},},runtimeChunk: 'single',},plugins: [new BundleAnalyzerPlugin(), // 分析打包结果],
};

六、总结

  • chunks 的分类:初始块、异步块、运行时块。
  • splitChunks 配置:通过 chunksminSizecacheGroups 等选项控制代码分割。
  • 优化目标:减少初始加载体积、提高缓存利用率、按需加载非关键代码。

通过合理配置 splitChunks,可以显著提升 Webpack 打包的性能和用户体验。

http://www.dtcms.com/wzjs/176026.html

相关文章:

  • 聊城市东昌府区建设局网站外贸网站建站和推广
  • 厦门北京网站建设公司哪家好外链代发2分一条
  • 织梦通用企业网站模板佛山快速排名seo
  • 网站业务怎么做的百度统计怎么用
  • dw动态网站怎么做搜索框东莞seo托管
  • 网站开发项目教程笔记域名解析ip地址
  • 电子商务网站建设的策划书网络营销案例ppt课件
  • 怎么样免费做网站推广引流吸引人的标题
  • php做的网站首页是什么文件杭州seo俱乐部
  • php做学校网站免费下载seo实战密码在线阅读
  • 房产如何做网站百度收录的网站
  • 黄骅做网站价格互联网广告怎么做
  • 做网站销售说辞百度开户代理商
  • wordpress相册轮播搜索引擎优化是指
  • 佛山营销网站开发怎么选百度检索入口
  • 张家界网站定制网址域名查询ip地址
  • 成都市建设工程施工安监站网站友情链接网站
  • 网站建设丶金手指花总12抖音推广合作方式
  • 站长工具平台博客网
  • WordPress仿站培训seo诊断报告
  • 邢台移动网站建设免费seo教程分享
  • 深圳市交易建设工程交易服务中心网站品牌推广方案策划书
  • 哪里有做网站app的sem竞价专员是干什么的
  • 中国做网站的公司360指数官网
  • 如何做网站流量分析报表郑州seo顾问外包公司
  • 哪个网站可以做视频片头网络营销发展方案策划书
  • wordpress响应式主板鞍山seo公司
  • 做一个网站开发项目有哪些阶段百度竞价什么时候开始的
  • 织梦网站怎么做伪静态企业网址搭建
  • 龙岗建站费用如何做品牌运营与推广