对于webapck,因为在工作中一直接触到,之前也有写过一些相关的文章。但是一直都是处于怎么用好它的阶段。今天突然好奇了一下,它的内部原理是怎么样的,故写下次文档,作为一点积累,后面会陆续更新。(一些概念因为在上面的文章中写过,就不再赘述)
为了方便阅读,本次是以mode = ‘none’的方式打包代码的。
代码打包出来长这个样子,整体为一个自执行函数
上面那个webpackUniversalModuleDefinition
方法是兼容各种规范的方法,可以忽略,不是重点
重点关注的应该是 webpackBootstrap
,这是webpack的入口。
由下图可知,每个函数对应一个模块,从而实现私有作用域。同时,数组中模块的下标即为模块的id,默认情况下id是随着打包的过程,自增的(遇到第一个模块记录id为0,第二个为1)。
接着看入口函数:为了方便展示,删除了一些工具函数以及一些添加辅助属性的方法:
继续看实参中的数组
最后导出的即为moduleid=0 对应的module.exports
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。