繁体   English   中英

在javascript es6中使用... spread语法命名为exports

[英]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的理解是规范不允许以下内容。 有人可以证实吗?

显然,循环是不可能的,因为导出和导入语句必须是顶级的。

对象休息传播是第3阶段提案,而不是任何规范的一部分(可能会包含在ES2018中)。

更重要的是, export具有模仿现有JS语法的语法,但不会将{ ... }解释为表达式。 export语法是严格定义的,因为ES2015模块应该进行静态分析。 这是它们的一个好处,但它要求开发人员明确指定导出和导入。

由于{ ...wrappedReactBootstrap }引入了动态导出(它在这里用于此目的),ES2015模块export不支持它,并且它不太可能。

如果需要为导出提供动态行为,则可以将其导出和导入为命名或默认对象。

import * as reactBootstrap from 'react-bootstrap';

export default doFunnyThingsTo(reactBootstrap);

并使用像

import wrappedReactBootstrap from '...';

const { funny, thing } = wrappedReactBootstrap;

显然, wrappedReactBootstrap对象不会以这种方式获得ES2015模块的好处,例如树木抖动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM