在 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 資料夾中查詢,如果找不到匹配的模組,將丟擲錯誤。