Webpack运行时runtime做了什么事情
webpack 的 runtime,也就是 webpack 最后生成的代码,实现了一个自定义的模块加载系统,替代浏览器原生的模块机制
webpack_modules
维护一个所有模块的数组。将入口模块解析为 AST,根据 AST 深度优先搜索所有的模块,并构建出这个模块数组。每个模块都由一个包裹函数 (module, module.exports, webpack_require) 对模块进行包裹构成。
webpack_require(moduleId)
手动实现加载一个模块。对已加载过的模块进行缓存,对未加载过的模块,执行 id 定位到
webpack_modules
webpack_modules中的包裹函数,执行并返回 module.exports,并缓存
webpack_require(0)
webpack_require_(0)运行第一个模块,即运行入口模块,另外,当涉及到多个 chunk 的打包方式中,比如 code spliting,webpack 中会有 jsonp 加载 chunk 的运行时代码。