不会还有人不知道module、bundle和chunk的区别吧?

article/2025/8/27 23:49:27
  • module

非连续的功能块——提供了更小的表面积而不是整个程序。书写良好的modules提供了可靠的抽象及封装边界,组成了统一的设计和清晰的目的;模块解析(ModuleResolution)一个模块可以作为另一个模块的依赖模块,resolver是一个库(libary)用于帮助找不到模块的绝对路径,模块将在resolve.modules中指定的所有目录内搜索。
换句话说就是将一个个js、css拆分成一个个小模块。对于 webpack 来说,项目源码中所有资源(包括 JS、CSS、Image、Font 等等)都属于 module 模块。可以配置指定的 Loader 去处理这些文件。

如图所示:从main.js为入口文件,根据模块的依赖,一个一个的往上找,最后生成bundle。

在这里插入图片描述

下面是webpack与模块化之间的关系:

在这里插入图片描述

  • chunk

该webpack专业术语用于webpack内部管理bundling的过程中。bundles由许多的chunks组成——这些chunk有不同的类型(比如entry或child)。通常,chunks直接与bundles相对应。然而,有一些配置可以使其不是一对一的关系;

产生chunk的三种途径:
1:entry入口
2:异步加载模块
3:代码分割(code spliting)

1.entry产生Chunk

  • 传递一个字符串
entry: './src/js/main.js',
  • 传递数组
entry: ['./src/js/main.js','./src/js/other.js'],
  • 传递对象
entry: {main: './src/js/main.js',other: './src/js/other.js'
}

2.异步产生Chunk

{entry: {"index": "pages/index.jsx"},output: {filename: "[name].min.js",chunkFilename: "[name].min.js" // 为异步加载的chunk命名}
}
const myModel = r => require.ensure([], () => r(require('./myVue.vue')), 'myModel')

3.代码分割产生Chunk

module.exports = {entry: {main: __dirname + "/app/main.js",other: __dirname + "/app/two.js",},output: {path: __dirname + "/public",//打包后的文件存放的地方filename: "[name].js", //打包后输出文件的文件名chunkFilename: '[name].js',},optimization: {runtimeChunk: "single",splitChunks: {cacheGroups: {commons: {chunks: "initial",minChunks: 2,maxInitialRequests: 5, // The default limit is too small to showcase the effectminSize: 0 // This is example is too small to create commons chunks},vendor: {test: /node_modules/,chunks: "initial",name: "vendor",priority: 10,enforce: true}},}}
}

我们一起看看上面的代码会产生多少个chunk?
答案是5个,两个入口分别产生一个, runtimeChunk: "single"会将Webpack在浏览器端运行时需要的代码单独抽离到一个文件,commons下的配置会产生一个Chunk,vendor下的配置会产生一个Chunk。如下图。
在这里插入图片描述

  • bundle

由多个不同的模块生成,bundles 包含了早已经过加载和编译的最终源文件版本。
通常我们会弄混这两个概念,以为Chunk就是Bundle,Bundle就是我们最终输出的一个或多个打包文件。确实,大多数情况下,一个Chunk会生产一个Bundle。但有时候也不完全是一对一的关系,比如我们把 devtool配置成’source-map’。然后只有一个入口文件,也不配置代码分割:

 // webpack配置entry: {main: __dirname + "/app/main.js",},output: {path: __dirname + "/public",//打包后的文件存放的地方filename: "[name].js", //打包后输出文件的文件名},devtool: 'source-map',

这样的配置,会产生一个Chunk,但是会产生两个bundle,如下图
在这里插入图片描述
总流程图:
在这里插入图片描述

module,chunk 和 bundle 其实就是同一份逻辑代码在不同转换场景下的取了三个名字:

我们直接写出来的是 module,webpack 处理时是 chunk,最后生成浏览器可以直接运行的 bundle。


http://chatgpt.dhexx.cn/article/WcZkQSMT.shtml

相关文章

torch.chunk

torch.chunk(tensor, chunk_num, dim)与torch.cat()原理相反,它是将tensor按dim(行或列)分割成chunk_num个tensor块,返回的是一个元组。 a torch.Tensor([[4,5,7], [3,9,8], [9,6,7]]) b torch.chunk(a, 3, dim 1) print(a) pri…

webpack中的chunk

Webpack 理解 Chunk - 掘金 Webpack 理解 Chunk 期望 希望读过本篇文章,你在看Webpack配置的时候,能在脑中形成Chunk的生成过程。 Chunk Chunk不同于entry、 output、module这样的概念,它们对应着Webpack配置对象中的一个字段&#xff0…

什么是chunk?

本文借鉴《自己动手实现Lua:虚拟机、编译器和标准库》,算是对自己学习的总结,也希望分享下所学知识~~ 什么叫Chunk? 一段可以被Lua解释器解释执行的代码就叫做chunk 可以很小,小到只有一两条语句;可以很大…

生日悖论matlab模拟

概率论课堂小作业 要求用matab模拟生日悖论 条件:30人||100次 本来想白嫖网上的解答 结果竟然找不到用matlab模拟仿真的 所幸不难 自己动手,也为后人铺路。 话不多说,直接上代码 clc clear m100; %仿真次数 N30;%学生人数 for j 1:mB zero…

Python关于生日悖论分析

生日悖论指如果一个房间里有23人或以上,那么至少有两个人生日相同的概率大于50%。编写程序,输出在10000例随机样本数量下,n个人中至少两个人生日相同的概率。(n从10到50,不考虑闰年) 代码: imp…

男孩女孩问题 生日悖论 三门问题

上篇文章 洗牌算法详解 讲到了验证概率算法的蒙特卡罗方法,今天聊点轻松的内容:几个和概率相关的有趣问题。 计算概率有下面两个最简单的原则: 原则一、计算概率一定要有一个参照系,称作「样本空间」,即随机事件可能…

生日悖论问题

生日悖论是指,如果一个房间裡有23个或23个以上的人,那么至少有两个人的生日相同的概率要大于50%。这就意味着在一个典型的标准小学班级(30人)中,存在两人生日相同的可能性更高。对于60或者更多的人,这种概率要大于99%。从引起逻辑…

生日悖论MATLAB仿真

生日悖论MATLAB仿真 终于熬过了这学期!不知不觉大学的3/8已经过去了。回顾以下本学期让我印象最深刻,也最有成就感的事情是写出了我人生中第一个MATLAB程序!由于先前零基础,所以从idea到code实现的整个过程是非常坎坷的QAQ那么话…

生日悖论 Birthday Paradox 至少有两人同一天生日概率

首先我们来看下生日悖论: 假设有n个人,365天的时间,假设所有人生日不相同的概率为(1-P) 第一个人可选择365 天中的任意365天,人数为1时所有人生日不相同的概率为365/365; 第二个人可选择365天…

【密码学/密码分析】生日悖论及生日攻击

生日悖论及生日攻击 鸽巢原理:给定n个鸽巢,至少存在n1只鸽子,那总是会发生碰撞。 概率环境:我们需要多少个物体(鸽子)使得发生碰撞的概率大于1/2? 答案是n1/2,而不是n/2。 举个例…

生日悖论的泛化问题的讨论

著名的生日悖论,不多言。 见维基百科: http://zh.wikipedia.org/wiki/%E7%94%9F%E6%97%A5%E6%82%96%E8%AE%BA 见百度百科: http://baike.baidu.com/view/859474.htm 摆渡、喂鸡,排名不分先后。 维基里面提到了泛化推广。生日…

关于生日悖论问题的验证

昨天在网上看到一个非常有意思的问题: 数学老师和体育老师打赌,数据老师认为在他们有50个人的班级里有两个生日是同一天的同学的概率远超没有的概率,反之是体育老师的观点。 第一次看到的时候我觉得这特数学老师才是教体育的吧, 我…

python生日悖论分析_生日悖论

python生日悖论分析 If you have a group of people in a room, how many do you need to for it to be more likely than not, that two or more will have the same birthday? 如果您在一个房间里有一群人,那么您需要多少个才能使两个或两个以上的人有相同的生日…

Birthday Paradox(生日悖论)(概率)

Birthday Paradox(生日悖论)(概率) judge:LightOJ - 1104 vjudge:vjudge Time limit:2000 ms Memory limit:32768 kB OS:Linux Source:Problem Setter: Jane…

用python整个活(3)——生日悖论:birthday paradox

🏆一、前言 别问我为啥题目是英文,因为…高大上(bushi。 刷视频的时候偶然刷到了一个关于生日悖论的,当场就觉得不可思议,直到上网查了查…… 诶,怎么是真的? 这玩意儿居然还被设置到了密码…

【算法导论】生日悖论

生日悖论问题: 不考虑出生年份,问:一个房间中至少多少人,才能使其中两个人生日相同的概率达到50%? 解: 假设一年有 n 天,屋子中有 k 人,用整数 1, 2, …, k 对这些人进行编号。假定每个人的生日…

反直觉的「生日悖论」问题

点击蓝色“五分钟学算法”关注我哟 加个“星标”,一起学算法 作者 | labuladong 来源 | labuladong 生日悖论是由这样一个问题引出的:一个屋子里需要有多少人,才能使得存在至少两个人生日是同一天的概率达到 50%? 给你 5 秒钟随便…

浏览器不能展开全部内容/界面(展开更多点击无效果)

win10浏览器不能展开全部界面 1、按下“WinR”组合键,在框中输入“inetcpl.cpl”,点击确定打开“internet 选项”; 2、点击“高级”选卡,点击底部的“重置”按钮; 3、在“重置 Internet Explorer 设置”界面将“删除个人设置”选项勾选&…

CSDN文章自动展开全文无需登录插件(仅限Chrome)!

为什么80%的码农都做不了架构师?>>> 众所周知csdn里所有blog都记录了程序员们多年的技术积累,他们不吝啬技术,免费分享经验,随着资料的丰富,那些踩过的坑,报过的错,全被前人当成树种…

VSCode 代码块/全文 折叠/展开 快捷键

需求 && 操作 常用的两类场景(注意要操作的范围): 要操作光标所在文件中的所有代码块: 折叠所有 CtrlK0展开所有 CtrlKJ 仅仅操作光标所处代码块内的代码: 折叠 CtrlShift[展开 CtrlShift] 更多操作 如果你有更多需求的话&#…