ECMAScript模块与命名空间对象

时间:2019-06-28 14:22:41

标签: javascript ecmascript-6 module namespaces

一段时间以来,我一直在使用ES6随附的模块。虽然我(本能地)知道使用它们会更好,但我仍在努力解释原因。

带有模块;

  • 我可以进行依赖声明(不是注入)。我不必为加载的每个javascript文件使用脚本标签。
  • 在模块之前,对象用作名称空间。现在我们有了模块,我们有了命名空间,它是代码组织的更好范例。

除此之外,为什么还要使用模块?

与仅将对象用作名称空间相比,它们具有什么优势?

编辑:

多亏了Bergi和Randy Casburn的评论,我现在可以指出另外两件事。

  • 使用模块模式(我一直称其为命名对象空间),我们具有相同的功能。但是我们通过闭包得到它。在模块中,我们有单独的文件。单独文件的功能很难被侵犯。

  • 模块隐藏其内部功能。它促使我们思考更好的软件设计。

1 个答案:

答案 0 :(得分:0)

回答我自己的问题。感谢您的评论。

  • 模块化对于软件来说是必须的。在使用ES Modules之前,我们是通过 Module Pattern (只是将相关内容放入对象中)来实现模块的。在ES6中,模块是本机的。并且本地始终是更好的选择

  • 在模块模式中,我们制作了带有闭包的模块。在ES模块中,我们将它们编码在单独的文件中。

    • 单独的文件为防止代码违规增加了另一层保护。
  • 模块促使我们设计更好的软件。

    • 借助ES模块,我们具有export关键字,该关键字使我们可以自由选择要公开的内容。
    • 我们还有import关键字,可以从模块中选择所需的内容。
  • 借助ES6模块,我们现在可以将Javascript模块(这些文件位于单独的文件中)添加到我们的网络应用中,而无需将其包含在脚本标签中。