CommonJS 規範 與 ES6 規範
阿新 • • 發佈:2020-12-21
CommonJS規範即AMD:require, exports,module.exports
ES6: export / import
遵循規範
require
是 AMD規範引入方式import
是es6的一個語法標準,如果要相容瀏覽器的話必須轉化成es5的語法
呼叫時間
- require是執行時呼叫,所以require理論上可以運用在程式碼的任何地方(雖然這麼說但是還是一般放開頭)
- import是編譯時呼叫,所以必須放在檔案開頭
require / exports :
遵循 CommonJS/AMD,只能在執行時確定模組的依賴關係及輸入/輸出的變數,無法進行靜態優化。
用法只有以下三種簡單的寫法:
const fs = require('fs') exports.fs = fs module.exports = fs
import / export:
遵循 ES6 規範,支援編譯時靜態分析,便於JS引入巨集和型別檢驗。動態繫結。
寫法就比較多種多樣。
本質
- require是賦值過程,其實require的結果就是物件、數字、字串、函式等,再把require的結果賦值給某個變數。
- require的話他是匯出的物件,不管你裡面定義的是物件還是number或者字串都是 匯出物件
- import是解構過程,但是目前所有的引擎都還沒有實現import,我們在node中使用babel支援ES6。
- 然而import的話,你定義的是什麼就匯出什麼,你定義number匯出就是number,定義字串就是字串