基本的导出

你可以使用 export 关键字将已发布代码部分公开给其他模块。最简单方法就是将 export 放置在任意变量、函数或类声明之前,从模块中将它们公开出去,就像这样:

// export data
export var color = "red";
export let name = "Nicholas";
export const magicNumber = 7;

// export function
export function sum(num1, num2) {
    return num1 + num1;
}

// export class
export class Rectangle {
    constructor(length, width) {
        this.length = length;
        this.width = width;
    }
}

// this function is private to the module
function subtract(num1, num2) {
    return num1 - num2;
}

// define a function...
function multiply(num1, num2) {
    return num1 * num2;
}

// ...and then export it later
export { multiply };

此例中有几点需要注意。首先,除了 export 关键字之外,每个声明都与正常形式完全一样。每个被导出的函数或类都有名称,这是因为导出的函数声明与类声明必须要有名称。你不能使用这种语法来导出匿名函数或匿名类,除非使用了 default 关键字(在 “模块的默认值” 一节会论述)。

其次,细看一下 multiply() 函数,它并没有在定义时被导出。这是因为你不仅能导出声明,还可以导出引用(即代码最后一行)。

最后请注意,此例并未导出 subtract() 函数。此函数在模块外部不可访问,因为任意没有被显式导出的变量、函数或类都会在模块内保持私有。