Nodejs模块加载器与客户端AMD加载器如Requirejs

时间:2015-06-21 16:02:15

标签: javascript node.js requirejs npm amd

这个问题是关于在客户端加载Javascript模块。两种流行的方法是使用:

  1. RequireJS
  2. 要导出和需要文件的NPM(节点包管理器)
  3. 第一种选择对我来说总是很有用。但是,最近我注意到越来越多的人使用第二种选择。

    当我使用构建工具(browserify)尝试第二个选项时,我注意到构建的文件包含许多冗余代码,就像我自己的代码的包装器一样。现在我不确定这是否是最好的选择,因为如果我的所有javascript文件都以这种方式修改,我的项目的整体大小将增加,加载时间也将增加。这是我应该担心的吗?这两个选项之间是否还有其他差异?

1 个答案:

答案 0 :(得分:0)

在我看来,使用CommonJS(Node.js模块系统)的主要原因是:

  1. 您喜欢Node.js生态系统 - 尤其是NPM(简易依赖管理,出色的模块化设计),还有像CommonJS / Node.js代码(mocha等)这样的框架。
  2. 它允许您轻松地在客户端和服务器之间共享代码(它是完全相同的代码)。对于requirejs,情况并非如此(至少不是直接)。这通常没有用,但在极少数情况下会有所帮助。
  3. CommonJS + Browserify和requirejs之间的巨大差异,是前者将所有代码捆绑成一个大文件。您不能像requirejs那样异步加载模块。这并不总是坏事(人们可能会争辩说,对JS的单个请求比多个请求更好,即使单个请求导致某些代码实际上没有使用)。

    关于大小问题:使用requirejs,你也有一些开销(例如,你必须包含require.js脚本,这类似于你在Browserify中创建的添加内容)。在大多数情况下,两者都可以忽略不计,但这取决于你当然正在建设什么。