### 语法
~~~
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 function FunctionName() {...}
export class ClassName {...}
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导入)
### 命名导出
~~~js
// exports a function declared earlier
export { myFunction };
// exports a constant
export const foo = Math.sqrt(2);
~~~
### 默认导出(函数)
~~~js
export default function() {}
~~~
### 默认导出(类)
~~~js
export default class {}
~~~
命名导出对导出多个值很有用。在导入期间,必须使用相应对象的相同名称。
但是,可以使用任何名称导入默认导出,例如:
~~~
export default k = 12; // in file test.js
import m from './test' // note that we got the freedom to use import m instead of import k, because k was default export
console.log(m); // will log 12
~~~
**只能有一个默认的导出**
如果需要导出默认值,请使用下列代码:
~~~html
import mod from "mod";
export default mod;
~~~
### 示例:
标准导出
~~~js
// module "my-module.js"
function cube(x) {
return x * x * x;
}
const foo = Math.PI + Math.SQRT2;
export { cube,foo };
~~~
其他脚本引用
~~~js
import { cube, foo } from 'my-module.js';
console.log(cube(3)); // 27
console.log(foo); // 4.555806215962888
~~~
默认导出
如果我们要导出一个值或模块中的返回值,就可以使用默认导出:
~~~js
// module "my-module.js"
export default function cube(x) {
return x * x * x;
}
~~~
然后,在另一个脚本中,可以直接导入默认导出:
~~~js
// module "my-module.js"
import cube from 'my-module';
console.log(cube(3)); // 27
~~~
### 模块重定向
如果我们要从另一个模块(有效地创建“重定向”)中导出默认值(default)和 星标(\*):
~~~
// module "redirect-module.js"
export {default} from './other-module';
export * from './other-module';
~~~