模块导入/导出的复合写法
# 模块导入/导出的复合写法
如果在一个模块之中,先输入后输出同一个模块,import
语句可以与 export
语句写在一起。
# 一. 模块整体转发
从 module
模块整体导入后,直接完整导出。
export * from 'module';
1
# 二. 模块部分接口转发
从 module
模块导入 foo
和 bar
,并直接导出这两个接口。
export { foo, bar } from 'module';
// 可以理解为
import { foo, bar } from 'module';
export { foo, bar };
1
2
3
4
5
2
3
4
5
实际上,这样的写法只是相当于对外转发了这两个接口,当前模块不能直接使用这两个接口。
# 三. 模块部分重命名转发
模块导入的接口重命名,从 module
导入 foo
接口,并以 newFoo
的名义导出。
export { foo as newFoo } from 'module';
1
# 四. 默认模块转发
export { default } from 'module';
1
# 五. 命名模块改默认模块
export { foo as default } from './module';
// 等同于
import { foo } from './module';
export default foo;
1
2
3
4
5
2
3
4
5
# 六. 默认模块改命名模块
export { default as foo } from './module';
1
# 七. 无对应写法场景
下面三种写法,没有对应的复合写法:
- 命名模块重命名转发
- 默认模块转发
- 整体和部分模块共同转发
// 命名模块重命名转发
import * as foo from './module';
// 默认模块转发
import foo from './module';
// 整体和部分模块共同转发
import foo, { namedFoo } from './module';
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
为了做到形式的对称,现在提案,提出补上这三种复合写法。
export * as foo from './module';
export foo from './module';
export foo, { namedFoo } from './module';
1
2
3
4
5
2
3
4
5
上次更新: 2022/07/01, 17:34:19