1.bundle.js
(function (modules) { // webpack的启动函数 //模块的缓存 var installedModules = {}; function __webpack_require__(moduleId) {} //加载入口模块并且返回导出对象 return __webpack_require__((__webpack_require__.s = "./src/index.js"));})({ "./src/index.js": function (module, exports, __webpack_require__) { var title = __webpack_require__("./src/title.js"); console.log(title); }, "./src/title.js": function (module, exports) { module.exports = "title"; },});
2.webpack_require
//定义在浏览器中使用的require方法 function __webpack_require__(moduleId) { //检查模块是否在缓存中 if (installedModules[moduleId]) { return installedModules[moduleId].exports; } //创建一个新的模块并且放到模块的缓存中 var module = (installedModules[moduleId] = { i: moduleId, l: false, exports: {}, }); //执行模块函数 modules[moduleId].call( module.exports, module, module.exports, __webpack_require__ ); //把模块设置为已经加载 module.l = true; //返回模块的导出对象 return module.exports; }
2.1webpack_require.m
2.2webpack_require.c
2.3webpack_require.d
2.4webpack_require.r
2.5webpack_require.n
2.6webpack_require.o
2.7webpack_require.p
3.兼容ESModule和COMMONJS
3.1commonJS加载commonJS
3.1commonJS加载ESModule
3.1ESModule加载commonJS
3.1ESModule加载ESModule
4.异步加载实现(重写push方法和JSONP载入)