export

 

export 语句 用于从给定的文件 (或模块) 中导出函数,对象或原语。

注意: 此功能目前无法在任何浏览器中实现。它在许多转换器中实现,例如  Traceur CompilerBabel or Rollup.

语法

export { name1, name2, …, nameN };
export { variable1 as name1, variable2 as name2, …, nameN };
export let name1, name2, …, nameN; // also var
export let name1 = …, name2 = …, …, nameN; // also var, const
export default expression;
export default function (…) { … } // also class, function*
export default function name1(…) { … } // also class, function*
export { name1 as default, … };
export * from …;
export { name1, name2, …, nameN } from …;
export { import1 as name1, import2 as name2, …, nameN } from …;
nameN
导出的标识符(用来被其他脚本的 import 导入)

描述

有两种不同的导出方式,每种方式对应于上述的一种语法:

  • 命名导出:
    export { myFunction }; // 导出一个函数声明
    export const foo = Math.sqrt(2); // 导出一个常量
  • 默认导出 (每个脚本只能有一个):
    export default myFunctionOrClass // 或者 'export default class {}'
    // 这里没有分号

对于只导出一部分值来说,命名导出的方式很有用。在导入时候,可以使用相同的名称来引用对应导出的值。

关于默认导出方式,每个模块只有一个默认导出。一个默认导出可以是一个函数,一个类,一个对象等。当最简单导入的时候,这个值是将被认为是”入口”导出值。

示例

命名导出

在这个模块里,我们可以这么导出:

// module "my-module.js"
export function cube(x) {
  return x * x * x;
}
const foo = Math.PI + Math.SQRT2;
export { foo };

这样的话,在其它脚本 (cf. import),我们可以这样使用:

import { cube, foo } from 'my-module.js';
console.log(cube(3)); // 27
console.log(foo);    // 4.555806215962888

默认导出

如果我们只想导出一个简单的值或者想在模块中保留一个候选值,就可以使用默认导出:

// module "my-module.js"
export default function cube(x) {
  return x * x * x;
}

然后,在另一个脚本中,默认的导出值就可以被简单直接的导入:

// module "my-module.js"
import cube from 'my-module';
console.log(cube(3)); // 27​​​​​

规范

Specification Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)
Exports
Standard Initial definition.
ECMAScript Latest Draft (ECMA-262)
Exports
Living Standard  

浏览器支持

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 未实现 未实现
(Netscape 4 until Firefox 3.5)
未实现 未实现 未实现
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support 未实现 未实现 未实现 未实现 未实现 未实现

参见

文档标签和贡献者