一段时间以来,我一直在使用 ES6 提供的模块。虽然我(本能地)知道最好使用它们,但我很难解释为什么。
带模块;
我可以做依赖声明(不是注入(inject))。我不必为我加载的每个 javascript 文件使用脚本标记。 在模块之前,对象充当命名空间。现在我们有了模块,我们有了命名空间,这是一个更好的代码组织范例。 除此之外,我为什么要使用模块?
与仅使用对象作为命名空间相比,它们有什么优势?
编辑:
感谢 Bergi 和 Randy Casburn 的评论,我现在可以再指出两件事。
使用模块模式(我将其称为命名空间对象),我们具有相同的功能。但是我们通过闭包来获得它。在模块中,我们有单独的文件。单独文件的特性更难被侵犯。 模块隐藏了它们的内部特征。它驱使我们思考更好的软件设计。
回答我自己的问题。感谢您的评论。
模块化是软件的必要条件。在 ES Modules 之前,我们通过 实现了模块模块模式 (这只是将相关的东西放在一个对象中)。通过 ES6,模块是原生的。和 原生总是更好的选择 . 在模块模式中,我们制作了带有闭包的模块。在 ES 模块中,我们将它们编码在单独的文件中。
单独的文件增加了另一层防止代码违规的保护。 模块驱使我们设计更好的软件。
使用 ES 模块,我们有 export 关键字,这使我们可以自由选择要公开的内容。 我们还有 import 关键字可以从模块中选择我们想要的任何东西。 使用 ES6 模块,我们现在可以将单独文件中的 Javascript 模块包含到我们的 Web 应用程序中,而无需将它们包含在脚本标签中。