在 javascript es6 命名导出中使用 ... 传播语法
using the ... spread syntax in javascript es6 named exports
我正在尝试将库中的所有内容作为散列导入,修改它,然后重新导出修改后的散列,但不知道库中所有命名的导出。例如:
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的理解是规范不允许以下内容。有人可以确认吗?
显然,循环是不可能的,因为导出和导入语句必须是顶级的。
对象剩余分布是 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 模块的好处,例如摇树。
我正在尝试将库中的所有内容作为散列导入,修改它,然后重新导出修改后的散列,但不知道库中所有命名的导出。例如:
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的理解是规范不允许以下内容。有人可以确认吗?
显然,循环是不可能的,因为导出和导入语句必须是顶级的。
对象剩余分布是 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 模块的好处,例如摇树。