如何将ES6模块存储在多个文件中?

时间:2019-05-29 12:17:43

标签: es6-modules

这声明了一个ES6模块:

<script type="module" src="animals.js"></script>

我的问题是:这在模块和源文件之间建立了一对一的连接。

我想将“ animals.js”分为“ dogs.js”和“ cats.js”。 ES6模块可以做到这一点吗?

我想以这种方式定义模块:

<script type="module" name="animals" src="dogs.js" src="cat.js"></script>

1 个答案:

答案 0 :(得分:1)

ES模块受单个导出上下文的约束,而恰好与每个文件一个自动创建的导出上下文相关。所以你不能。但是,您可以引入一个新模块,它将是它自己的文件/脚本块。

或者,您可以使用捆绑器,该捆绑器将接受多个输入文件并生成一个ES模块输出文件。 Webpack可能是一个不错的选择。

或者,您可以引入一个模块,该模块可以导入和导出其他模块的内容,如果可以的话,可以用作包装或外观。

此外,请记住,脚本文件和ES模块之间的一对一连接是ES模块以及许多其他捆绑和命名间隔系统的整体设计所固有的。这是一项合法的功能,每个模块需要一个以上的源文件可能会在您的软件中指定有缺陷的体系结构设计。

如果您想要类似Java的模块行为,则一定要签出Typescript namespaces。尽管您最终会意识到有多少种不同的类型推断警告和并行模块可见性问题,因此将完全不再使用它们来支持ES2015模块,但是它们可能对适应现代技术很有用。