nodejs a和b文件相互引用


//取自於node中文網 http://nodejs.cn/api/modules.html

當循環調用 require() 時,一個模塊可能在未完成執行時被返回。

例如以下情況:

a.js:

console.log('a 開始'); exports.done = false; const b = require('./b.js'); console.log('在 a 中,b.done = %j', b.done); exports.done = true; console.log('a 結束'); 

b.js:

console.log('b 開始'); exports.done = false; const a = require('./a.js'); console.log('在 b 中,a.done = %j', a.done); exports.done = true; console.log('b 結束'); 

main.js:

console.log('main 開始'); const a = require('./a.js'); const b = require('./b.js'); console.log('在 main 中,a.done=%j,b.done=%j', a.done, b.done); 

當 main.js 加載 a.js 時,a.js 又加載 b.js。 此時,b.js 會嘗試去加載 a.js。 為了防止無限的循環,會返回一個 a.js 的 exports 對象的 未完成的副本給 b.js 模塊。 然后 b.js 完成加載,並將 exports 對象提供給 a.js 模塊。

當 main.js 加載這兩個模塊時,它們都已經完成加載。 因此,該程序的輸出會是:

$ node main.js main 開始 a 開始 b 開始 在 b 中,a.done = false b 結束 在 a 中,b.done = true a 結束 在 main 中,a.done=true,b.done=true 

需要仔細的規划, 以允許循環模塊依賴在應用程序內正常工作.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM