Javascript 是否可以导出“的结果?”;导入*as";在2015年?
在ES2015中,可以将整个模块作为属性为模块导出的对象导入:Javascript 是否可以导出“的结果?”;导入*as";在2015年?,javascript,ecmascript-6,es6-module-loader,Javascript,Ecmascript 6,Es6 Module Loader,在ES2015中,可以将整个模块作为属性为模块导出的对象导入: import * as name from 'module'; 我发现这对于名称空间非常有用,并且一直在使用它 还可以重新导出其他模块的导出: export { name } from 'module'; // selectively export * from 'other-module'; // indiscriminately 现在我正试图用这种风格编写一个具有名称空间的库。在顶级模块中收集所有内容的直观方式如下: exp
import * as name from 'module';
我发现这对于名称空间非常有用,并且一直在使用它
还可以重新导出其他模块的导出:
export { name } from 'module'; // selectively
export * from 'other-module'; // indiscriminately
现在我正试图用这种风格编写一个具有名称空间的库。在顶级模块中收集所有内容的直观方式如下:
export * as name from 'module';
但这似乎不起作用;Babel和Rollup都拒绝接受它
我可以将模块作为一个对象导入,通过迭代其键创建一个克隆,然后将其导出,但这样它将只是一个普通的旧动态对象,因此我将失去Rollup提供的巨大优势
那么,使用声明性模块语法真的没有办法做到这一点吗?在我看来,这是没有理由的。不,这在ES6中被忽略了。不过,还有一些需要补充的地方 在此之前,您将需要使用两个声明和一个本地绑定,尽管不需要克隆对象:
import * as name from 'module';
export { name };
我不明白你想用“模块”中的
export*作为名称来完成什么代码>。您打算如何使用这种出口产品?导入*
始终需要命名空间为X
,因此在导出语句中指定的任何名称都是无关的——对吗?@torazaburoname
是导出模块对象时使用的名称。例如,如果模块“abc”包含从“xyz”
导出*为xyz,而您从“abc”导入*为abc,则您将能够通过abc.xyz
访问“xyz”的导出。可能是重复的哦,太棒了!这正是我需要的!我不知道你需要花括号来做这件事,因为MDN不包括它们。MDN哪里不使用花括号?当然,在许多其他导出声明(默认值、变量等)中不需要它们代码>不带大括号。此外,在描述中,它给出了以下示例:export myFunction;//导出前面声明的函数
呃,那些文档似乎很少。最好看一下(我会去修复MDN)。顺便说一句,如果你检查后没有发现问题,那是因为我刚刚更改了它。第一次编辑,希望我没有搞砸。