export
导出
export
语句用于创建JavaScript模块以从模块中导出函数,对象或原始值,以便其他程序可以使用import
语句。
此功能目前仅在Safari中本地实现。它在许多转译器中实现,如Traceur编译器,Babel或Rollup。
语法
export { name1, name2, …, nameN };
export { variable1 as name1, variable2 as name2, …, nameN };
export let name1, name2, …, nameN; // also var, function
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
另一个脚本导入)。
描述
有两种不同类型的出口。每种类型都对应于以上语法之一:
- Named exports: // exports a function declared earlier export { myFunction }; // exports a constant export const foo = Math.sqrt(2
命名导出对于导出多个值很有用。在导入过程中,可以使用相同的名称来引用相应的值。
关于默认导出,每个模块只有一个默认导出。默认导出可以是函数,类,对象或其他任何东西。此值将被视为“主”导出值,因为它将是最简单的导入值。
导出默认值:以下语法不会从导入的模块默认导出:
export * from …;
如果您需要导出默认值,请改为输入以下内容:
import mod from "mod";
export default mod;
例子
使用命名的导出
在模块中,我们可以使用下面的代码:
// module "my-module.js"
function cube(x) {
return x * x * x;
}
const foo = Math.PI + Math.SQRT2;
export { cube, foo };
这样,在另一个脚本(参见import
)中,我们可以:
import { cube, foo } from 'my-module';
console.log(cube(3) // 27
console.log(foo // 4.555806215962888
使用默认导出
如果我们想要导出单个值或为我们的模块设置回退值,我们可以使用默认导出:
// module "my-module.js"
export default function cube(x) {
return x * x * x;
}
然后,在另一个脚本中,将直接导入默认导出:
import cube from 'my-module';
console.log(cube(3) // 27
请注意,这是不可能使用var
,let
或const
与export default
。
规格
Specification | Status | Comment |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262)The definition of 'Exports' in that specification. | Standard | Initial definition. |
ECMAScript Latest Draft (ECMA-262)The definition of 'Exports' in that specification. | Living Standard | |
浏览器兼容性
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | 61 (60 w/ flag) | No support (54 w/ flag) | No support (15 w/flag) | No support | 10.1 |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | No support | No support | No support | No support | No support | 10.3 |