這篇文章主要介紹了Webpack 是如何載入模組的,內容還挺不錯的,現在分享給大家,也給大家做個參考。
Webpack 在前端開發中作為模組打包工具非常受開發者的青睞,豐富的 loader 使它可以實現各種各樣的功能。本文將透過 webpack 來打包一個 js 文件,看看 webpack 是如何載入各個模組的。
兩個簡單的原始檔
#為了方便分析webpack 載入模組的原理,我們準備了兩個檔案:
hello.js
const hello = { say: arg => { console.info('hello ' + arg || 'world'); } }; export default hello;
index.js
import Hello from './hello'; Hello.say('man');##index .js 作為入口文件,引用了hello.js 模組。
Webpack 打包
__webpack_require__( ) 函數
function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if (installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ 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; /******/ }#其中installedModules 是用來快取執行過的模組。透過 modules[moduleId].call() 來執行模組,最後返回模組的 exports。
模組接受的參數
(function (module, __webpack_exports__, __webpack_require__) { "use strict"; const hello = { say: arg => { console.info('hello ' + arg || 'world'); } }; /* harmony default export */ __webpack_exports__["a"] = (hello); /***/ })webpack 會傳遞給模組
module, __webpack_exports__, __webpack_require__ 三個參數,前兩者是用來導出模組內的變量,第三個參數為前面介紹的
__webpack_require__() 的引用,用來導入其它模組。
以上是如何使用Webpack來載入模組的詳細內容。更多資訊請關注PHP中文網其他相關文章!