webapck 打包文件解析 Posted on 2020-08-05 | In webpack | | webapck 打包出的文件解析原始程式碼12345// a.js的內容module.exports = 'HAHAHA'// index.js的內容let aExports = require('./a');console.log("Hello" + aExports); 打包後程式碼1234567891011121314151617181920212223242526272829303132333435363738394041424344(function (modules) { // webpackBootstrap // 2.The module cache (定義了一個緩存) var installedModules = {}; // 3.the require function 配置了一個require方法(因為瀏覽器不能運行require) // 甚麼時候調用呢(27行會return) function __webpack_require__(moduleId) { // 5."./src/index.js"傳入 // Check if module is in cache (6.不在緩存中) if (installedModules[moduleId]) { return installedModules[moduleId].exports; } // Create a new module (and put it into the cache) // 7.定義了一個新的module把入口模塊傳進來 var module = installedModules[moduleId] = { i: moduleId, l: false, exports: {} }; // Execute the module function // 執行(call)並把下面這些傳入(跑到第39行) modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); // Flag the module as loaded module.l = true; // Return the exports of the module return module.exports; } // Load entry module and return exports // 4.把index傳進來了 return __webpack_require__(__webpack_require__.s = "./src/index.js"); //入口模塊})({ // 1. 傳入一個對象給modules "./src/a.js": // key (function (module, exports) { //value eval("module.exports = 'HAHAHA'\r\n\n\n//# sourceURL=webpack:///./src/a.js?"); // 9.最後跑到這的時候發現我們把module.exports 定義成了'HAHAHA',因此回到第30行回傳了一個module.exports給aExports然後回到8.aExports = module.exports 就是HAHAHA並執行console.log(\"Hello\" + aExports);n所以生成出HelloHAHAHA }), "./src/index.js": (function (module, exports, __webpack_require__) { eval("let aExports = __webpack_require__(/*! ./a */ \"./src/a.js\");\r\nconsole.log(\"Hello\" + aExports);\r\n\r\n\n\n//# sourceURL=webpack:///./src/index.js?"); // 8. __webpack_require__(/*! ./a */ \"./src/a.js\") //執行了 __webpack_require__("./src/a.js\"),因為遞歸原因所以又跑了上面跑過的流程 })}); 自