在 ES6 中使用匯入
Node.js 是針對現代版本的 V8 構建的。通過及時瞭解該引擎的最新版本,我們確保及時向 Node.js 開發人員提供 JavaScript ECMA-262 規範的新功能,以及持續的效能和穩定性改進。
所有 ECMAScript 2015(ES6)
功能分為三組,用於發貨,暫存和進行中的功能:
V8 認為穩定的所有運輸功能在 Node.js 上預設開啟,不需要任何型別的執行時標誌。分階段的功能,幾乎完成的功能,V8 團隊認為不穩定,需要執行時標誌: - 和諧。正在進行的功能可以通過各自的和聲標誌單獨啟用,但除非出於測試目的,否則這是非常不鼓勵的。注意:這些標誌由 V8 公開,並且可能會在沒有任何棄用通知的情況下更改。
目前 ES6 原生支援 import 語句。請參閱此處
所以,如果我們有一個名為 fun.js
的檔案……
export default function say(what){
console.log(what);
}
export function sayLoud(whoot) {
say(whoot.toUpperCase());
}
…如果有另一個名為 app.js
的檔案,我們想要使用我們之前定義的函式,有三種方法可以匯入它們。
匯入預設值
import say from './fun';
say('Hello Stack Overflow!!'); // Output: Hello Stack Overflow!!
匯入 say()
函式,因為它被標記為原始檔中的預設匯出(export default …
)
命名為匯入
import { sayLoud } from './fun';
sayLoud('JS modules are awesome.'); // Output: JS MODULES ARE AWESOME.
命名匯入允許我們準確匯入我們實際需要的模組部分。我們通過明確命名它們來做到這一點。在我們的例子中,通過在 import 語句中用大括號命名 sayLoud
。
繫結匯入
import * as i from './fun';
i.say('What?'); // Output: What?
i.sayLoud('Whoot!'); // Output: WHOOT!
如果我們想要擁有一切,那麼這就是要走的路。通過使用語法* as i
,我們有 import
語句為我們提供了一個物件 i
,它將我們的 fun
模組的所有匯出儲存為相應命名的屬性。
路徑
請記住,即使要匯入的檔案與使用 ./
匯入的檔案位於同一目錄中,也必須將匯入路徑明確標記為相對路徑。從沒有固定的路徑匯入,如
import express from 'express';
將在本地和全域性 node_modules
資料夾中查詢,如果找不到匹配的模組,將丟擲錯誤。