我试图从库中导入所有内容作为哈希,修改它,并重新导出修改后的哈希,而不知道库中的所有命名导出。例如:
import * as reactBootstrap from 'react-bootstrap';
wrappedReactBootstrap = doFunnyThingsTo(reactBootstrap);
export {
...wrappedReactBootstrap
};
// or
export wrappedReactBootstrap;
我对https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export的理解是规范不允许以下内容。有人可以证实吗?
显然,循环是不可能的,因为导出和导入语句必须是顶级的。
答案 0 :(得分:21)
对象休息传播为stage 3 proposal,而不是任何规范的一部分(可能会包含在ES2018中)。
更重要的是,export
具有模仿现有JS语法的语法,但不会将{ ... }
解释为表达式。 export
syntax was strictly defined因为ES2015模块应该进行静态分析。这是它们的一个好处,但它要求开发人员明确指定导出和导入。
由于{ ...wrappedReactBootstrap }
引入了动态导出(在此处使用它完全用于此目的),ES2015模块export
不支持它,并且它不太可能出现。
如果需要为导出提供动态行为,可以将其导出并导入为命名或默认对象。
import * as reactBootstrap from 'react-bootstrap';
export default doFunnyThingsTo(reactBootstrap);
和
一样使用import wrappedReactBootstrap from '...';
const { funny, thing } = wrappedReactBootstrap;
显然,wrappedReactBootstrap
对象不会以这种方式获得ES2015模块的好处,例如树摇动。