Webpack编译结果分析
编译结果分析
观察编译结果后,模拟打包模块
// 改对象中保存了所有的模块,以及模块对应的代码
var modules =
((modules)=> {
var moduleExports = {}; // 用于缓存模块的导出结果
// require函数相当于是运行一个模块,得到模块导出结果
function __webpack_require(moduleId) { // moduleId 就是模块的路径
if(moduleExports[moduleId]) {
// 检查是否有缓存
return moduleExports[moduleId];
}
var func = modules[moduleId] // 得到该模块对应的函数
var module = {
exports: {}
}
func(module, module.exports, __webpack_require); // 运行模块
var result = module.exports; // 得到模块到处的结果
moduleExports[moduleId] = result; // 缓存起来
return result;
}
// 执行入口模块
__webpack_require("./src/index.js") // require函数相当于是运行一个模块,得到模块导出结果。
__webpack_require('./src/a.js');
__webpack_require('./src/a.js');
__webpack_require('./src/a.js');
})({ // 该对象保存了所有的模块,以及模块对应的代码
"./src/a.js": function(module, __webpack_require) {
eval("console.log(\"module a\")\nmodule.exports = \"a\";\n //# sourceURL=webpack:/// ./src/a.js");
// console.log('module a')
// module.exports = 'a'
},
"./src/index.js": function(module, exports, __webpack_require) {
eval("console.log(\"index module\");\nvar a = __webpack_require('./src/a.js');console.log(a);\n //# sourceURL=webpack:/// ./src/index.js");
// console.log("index module");
// var a = __webpack_require('./src/a.js');
// console.log(a);
}
})
本文作者:HuangBingQuan
本文链接:https://www.cnblogs.com/bingquan1/p/17333853.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2022-04-19 移动端vant input框点击时禁止弹出手机键盘