JavaScript 定义模块

示例

在ECMAScript 6中,使用模块语法(import/ export)时,每个文件都将成为具有私有名称空间的自己的模块。顶级函数和变量不会污染全局名称空间。要公开其他模块要导入的函数,类和变量,可以使用export关键字。

// 不出口
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() {}
}

注意:<script>不使用import/时,通过标签加载的ES5 JavaScript文件将保持不变export。

只有显式导出的值将在模块外部可用。其他所有内容都可以视为私有或不可访问。

导入此模块将产生(假设先前的代码块在中my-module.js):

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

myModule.PI;                 // 3.14
myModule.doSomething();      // “您好,来自模块!”
myModule.doSomethingElse();  // '还有别的'
new myModule.MyClass();      // MyClass的实例
myModule.somethingPrivate(); // 这将失败,因为未导出somethingPrivate