1

对于webapck,因为在工作中一直接触到,之前也有写过一些相关的文章。但是一直都是处于怎么用好它的阶段。今天突然好奇了一下,它的内部原理是怎么样的,故写下次文档,作为一点积累,后面会陆续更新。(一些概念因为在上面的文章中写过,就不再赘述)

为了方便阅读,本次是以mode = ‘none’的方式打包代码的。
代码打包出来长这个样子,整体为一个自执行函数

image.png

上面那个webpackUniversalModuleDefinition 方法是兼容各种规范的方法,可以忽略,不是重点
重点关注的应该是 webpackBootstrap,这是webpack的入口。
由下图可知,每个函数对应一个模块,从而实现私有作用域。同时,数组中模块的下标即为模块的id,默认情况下id是随着打包的过程,自增的(遇到第一个模块记录id为0,第二个为1)。
image.png

接着看入口函数:为了方便展示,删除了一些工具函数以及一些添加辅助属性的方法:
image.png
继续看实参中的数组
image.png
最后导出的即为moduleid=0 对应的module.exports
image.png


notself
134 声望13 粉丝