定義一個模組

在 ECMAScript 6 中,當使用模組語法(import / export)時,每個檔案都成為具有私有名稱空間的自己的模組。頂級函式和變數不會汙染全域性名稱空間。要公開要匯入的其他模組的函式,類和變數,可以使用 export 關鍵字。

// not exported
function somethingPrivate() {
    console.log('TOP SECRET')
}

export const PI = 3.14;

export function doSomething() {
    console.log('Hello from a module!')
}

function doSomethingElse(){ 
    console.log("Something else")
}

export {doSomethingElse}

export class MyClass {
    test() {}
}

注意:不使用 import / export 時,通過 <script> 標籤載入的 ES5 JavaScript 檔案將保持不變。

只有顯式匯出的值才可在模組外部使用。其他一切都可以被視為私人或無法進入。

匯入此模組將產生(假設前面的程式碼塊在 my-module.js 中):

import * as myModule from './my-module.js';

myModule.PI;                 // 3.14
myModule.doSomething();      // 'Hello from a module!'
myModule.doSomethingElse();  // 'Something else'
new myModule.MyClass();      // an instance of MyClass
myModule.somethingPrivate(); // This would fail since somethingPrivate was not exported