欢迎来到码农权的博客 MaNongGeGe.|

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 中国大陆许可协议进行许可。

posted @   HuangBingQuan  阅读(43)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2022-04-19 移动端vant input框点击时禁止弹出手机键盘
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 不将就 码农权
  2. 2 Bleeding Love 码农权
  3. 3 想你念你 码农权
想你念你 - 码农权
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

Not available