require&import區分?
CommonJS中,我們用module.exports和require來導出和導入模塊,而到了ES6卻變成了export和import了,這兩者到底有什么區別呢?
一句話總結:CommonJS模塊是運行輸出(加載)一個值(或對象)的拷貝,而ES6模塊則是編譯時輸出(加載)一個值的引用(或者叫做連接).
這樣的差異在平常使用是不易被察覺的,可是一旦出現循環引用,兩者的差異就很明顯了。直接的循環引用(a引用b,b又引用a)一般不會有,但在依賴關系復雜的大項目中,很容易出現a引用b,b引用其它模塊,在若干次引用后,模塊n又引用回a這樣的情況。為了講解的方便我們直接構造出一個a,b相互引用的項目。
require OR importrequire OR import
NodeJS和CommonJS之間的關系?
CommonJS是一種規范,NodeJS是這種規范的實現。
CommonJS規范
為什么模塊規范的設計會有不同區別
模塊規范發展歷史