JavaScript中的模块加载器和模块绑定器有什么区别?



有人能提供一些关于JavaScript中的模块加载器和模块捆绑器的信息吗?

  • 有什么不同?
  • 什么时候应该使用模块加载器,什么时候应该使用模块绑定器?
  • 我们为什么需要它们?

模块加载器和打包器都使编写模块化JavaScript应用程序更容易操作。让我给你介绍一些背景知识:

模块加载器

模块加载器通常是一些库,可以加载,解释和执行使用特定模块格式/语法定义的JavaScript模块,如AMD或CommonJS。

当您编写模块化JavaScript应用程序时,通常每个模块都有一个文件。因此,当编写由数百个模块组成的应用程序时,要确保所有文件都包含在其中并按正确的顺序排列,可能会非常痛苦。因此,加载器基本上会为你负责依赖管理,确保在应用程序执行时加载所有模块。看看一些流行的模块加载器,比如RequireJS和SystemJS。

<<p> 模块名打包机/strong>

模块绑定器是模块加载器的替代品。基本上,它们做同样的事情(管理和加载相互依赖的模块),但是作为应用程序构建的一部分而不是在运行时进行。因此,绑定器不是在执行代码时加载依赖项,而是在执行之前将所有模块缝合到一个文件(bundle)中。看看Webpack和Browserify这两个流行的选项吧。

何时使用什么?

哪个更好取决于你的应用程序的结构和大小。

捆绑器的主要优点是,它使浏览器必须下载的文件少得多。这可以为您的应用程序提供性能优势,因为它可以减少加载所需的时间。但是,根据您的应用程序拥有的模块的数量,并不总是必须这样。特别是对于大型应用程序,模块加载器有时可以提供更好的性能,因为加载一个巨大的单片文件也会阻碍应用程序的启动。所以这是你必须简单地测试和找出的东西。

ES6/ES2015更新

请注意,ECMAScript 2015(或ES6)自带了自己的本地模块实现。你可以在这里和这里看到一个简短的介绍

最新更新