mai*_*ard 6 ecmascript-6 es6-modules
我不时想做一件事,但我无法弄清楚:
假设module1.js导出 3 个值:
//module1.js
export const a = 'a';
export const b = 'b';
export const c = 'c';
Run Code Online (Sandbox Code Playgroud)
然后,在module2.js,我想将其中的两个导入一个对象(作为一种命名空间的东西):
//module2.js
import { a, c } as constants from './module1'; //<-WRONG!
Run Code Online (Sandbox Code Playgroud)
所以我最终做的是这样的:
//module2.js
import { a, c } from './module1';
const constants = { a, c };
Run Code Online (Sandbox Code Playgroud)
这是有效的,但现在a并且c存在constants于模块范围内,也直接存在于模块范围内。
有没有办法避免这种情况?
根据MDN 文档,您可以为整个模块内容(例如)设置别名* as constants,也可以为单个内容(例如)设置别名b as constants。但您无法为特定内容设置别名。因此解决方案之一是使用 *.
import * as constants from './module1';
Run Code Online (Sandbox Code Playgroud)
另一种可能的解决方案是{ a, c }作为默认值传递。
//module1.js
export const a = ...
export const b = ...
export const c = ...
export const d = ...
export default { a, b, c };
/module2.js
import contants from './someModule';
doStuff(constatns);
Run Code Online (Sandbox Code Playgroud)
最后,如果您不想默认传递这些常量,您可以创建一个对象并传递该对象。
//module1.js
export const a = ...
export const b = ...
export const c = ...
export const b = ...
export const myCustomConstants = { a, c };
//module2.js
import { myCustomConstants } from './someModule';
doStuff(myCustomConstants);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1870 次 |
| 最近记录: |