2015-06-21 120 views
0

这个问题是关于在客户端加载Javascript模块。实现这一目标的两种流行的方法是采用:Nodejs模块加载器与客户端AMD加载器如Requirejs

  1. RequireJS
  2. NPM(节点包管理器)的出口,并要求文件

第一个选项一直对我很好工作。但是,最近我注意到越来越多的人使用第二种选择。

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

回答

0

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

  1. 您享受Node.js的生态系统 - 特别是NPM(易扶养管理,极大的模块化设计)而且还包括仅适用于CommonJS/Node.js代码(摩卡等)的框架。
  2. 它允许您轻松地在客户端和服务器之间共享代码(代码完全相同)。有了requirejs,情况并非如此(至少不是直接)。这通常不是很有用,但它在一些极少数情况下可以提供帮助。

CommonJS + Browserify和requirejs之间有一个很大的区别,就是前者将所有代码捆绑到一个大文件中。您不能像使用requirejs那样异步加载模块。这并不总是一件坏事(有人可能会争辩说,对JS的单个请求比多个请求更好,即使单个请求导致某些实际未使用的代码)。

关于大小的问题:使用requirejs,你也有一些开销(例如,你必须包含require.js脚本,它类似于你已经看到的由Browserify创建的添加)。在大多数情况下,这两者都是微不足道的,但这取决于你正在建造的东西。