export 与 import 的复合写法

如果在一个模块之中,先输入后输出同一个模块,import语句可以与export语句写在一起。

  1. export { foo, bar } from 'my_module';
  2. // 可以简单理解为
  3. import { foo, bar } from 'my_module';
  4. export { foo, bar };

上面代码中,exportimport语句可以结合在一起,写成一行。但需要注意的是,写成一行以后,foobar实际上并没有被导入当前模块,只是相当于对外转发了这两个接口,导致当前模块不能直接使用foobar

模块的接口改名和整体输出,也可以采用这种写法。

  1. // 接口改名
  2. export { foo as myFoo } from 'my_module';
  3. // 整体输出
  4. export * from 'my_module';

默认接口的写法如下。

  1. export { default } from 'foo';

具名接口改为默认接口的写法如下。

  1. export { es6 as default } from './someModule';
  2. // 等同于
  3. import { es6 } from './someModule';
  4. export default es6;

同样地,默认接口也可以改名为具名接口。

  1. export { default as es6 } from './someModule';

ES2020 之前,有一种import语句,没有对应的复合写法。

  1. import * as someIdentifier from "someModule";

ES2020补上了这个写法。

  1. export * as ns from "mod";
  2. // 等同于
  3. import * as ns from "mod";
  4. export {ns};