在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