commonJS 和 ES6 模塊的區別
commonJS 和 ES6 模塊的區別
- CommonJS 輸出的模塊是一個值的拷貝,ES模塊輸出的是一個模塊的引用;
- CommonJS 模塊輸出的是值的拷貝,一旦輸出之後,無論模塊內部怎麼變化,都無法影響之前的引用,
- commonJS 會緩存加載的模塊,後面直接從緩存裏面取值;
- ESModule import一個模塊後生成一個引用鏈接,在腳本真正執行時才會根據這個引用鏈接去模塊裏面取值,模塊內部的原始值變了import加載的模塊也會變。
- CommonJS運行時加載,ESModule編譯階段引用。
- CommonJS在引入時是加載整個模塊,生成一個對象,然後再從這個生成的對象上讀取方法和屬性。
- ESModule 不是對象,而是通過export暴露出要輸出的代碼塊,在import時使用靜態命令的方法引用指定的輸出代碼塊,並在import語句處執行這個要輸出的代碼,而不是直接加載整個模塊。
- 暴露方式的區別,commonJS modules.exports = {module};ES6 export default module 或者 export module
- 引入方式 commonJS require("module") es6 import {moduleName} from "module"
0 位用戶收藏了這個故事!