es6標準: 模組以export/export detault指令匯出介面,以import引入模組。
commonjs規範: 使用require引入模組,使用module.exports/exports匯出介面。
在開發中一般使用babel,將es6轉成commonjs。
commonjs允許你動態載入require
模組。甚至不需要賦值給某個變數之後再使用,比如:
require('./a')(); //a模組是乙個函式,立即執行a模組函式
var data = require('./a').data; //
a模組匯出的是乙個物件
var a = require('./a')[0]; //
a模組匯出的是乙個陣列
你在使用時,完全可以忽略模組化這個概念來使用require,僅僅把它當做乙個node內建的全域性函式,它的引數甚至可以是表示式:
require(process.cwd() + '/a');
但是es6的import
的則不同,它必須放在檔案開頭。它不會將整個模組執行後賦值給某個變數,而是只選擇import的介面進行編譯,這樣在效能上比require好很多。
import
具有宣告提公升效果,會首先執行。所以最好不要混用import
和require
。 import 是 es6 標準,如果可能,首先使用 import, 如果不行,就用require
。
因為es6 模組是標準,所以現在還是推薦使用import
,避免未來不必要的更改。
參考**:
import和require的區別
node程式設計中最重要的思想就是模組化,import和require都是被模組化所使用。遵循規範 呼叫時間 本質 require exports 遵循 commonjs amd,只能在執行時確定模組的依賴關係及輸入 輸出的變數,無法進行靜態優化。用法只有以下三種簡單的寫法 const fs req...
import和require的區別
遵循規範 require 是 amd規範引入方式 import是es6的乙個語法標準,如果要相容瀏覽器的話必須轉化成es5的語法 呼叫時間 require是執行時呼叫,所以require理論上可以運用在 的任何地方 import是編譯時呼叫,所以必須放在檔案開頭 本質require是賦值過程,其實r...
import和require的區別
node程式設計中最重要的思想就是模組化,import和require都是被模組化所使用。遵循規範 require 是 amd規範引入方式 import是es6的乙個語法標準,如果要相容瀏覽器的話必須轉化成es5的語法呼叫時間 require是執行時呼叫,所以require理論上可以運用在 的任何地...