前言
采用了 Commonjs 規范,通過 module.exports、require 來導出和導入模塊。模塊加載機制中,采用了延遲加載的策略。就是說在用到的情況下,系統模塊才會被加載,等加載完成后會放到 binding_cache 中。
分類(模塊類型)
系統模塊
第三方模塊
文件形式
加載機制
加載步驟
經歷 路徑分析、文件定位和編譯執行。
加載順序
關于緩存問題
模塊緩存后,可以通過 require.cache 查看已緩存的模塊。
// 模塊文件 require.module.jsmodule.exports = { name: 'pr', say(){ }}
// 引用模塊文件 require.cache.jsrequire('./require.module');console.log('require.cache ----- ');console.log(require.cache);
對象引用
1.exports 與 module.exports 關系
const exports = module.exports;
所以就不能改變 exports 的指向,可以這樣
exports.info = { name: 'pr', age: 30}module.exports = { name: 'pr', age: 30}
模塊循環引用
模塊 moduleA.js 和 moduleB.js 兩個模塊互相引用,會怎樣?
// moduleA.jsconsole.log('模塊 moduleA');exports.name = 'moduleA name';age = 27;const moduleB = require('./moduleB.js');console.log('moduleA require moduleB =>', moduleB.name);
// moduleB.jsconsole.log('模塊 moduleB');exports.name = 'moduleB name';const moduleA = require('./moduleA.js');console.log('moduleB require moduleA =>', moduleA.name);
很有意思的是,在代碼執行前,會用一個封裝器將執行代碼段封裝起來
(function(exports, require, module, __filename, __dirname) { // something});
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。
新聞熱點
疑難解答