在javascript中使用AMD的requirejs或commonjs模块有什么好处?

时间:2012-08-18 23:06:34

标签: javascript requirejs commonjs

我已经阅读了很多关于AMD解决方案的文章,例如在Javascript中遵循CommonJS风格的RequireJS或模块加载器。

假设我在此部分中分割了一个应用程序:

  • 依赖我使用的框架的应用程序定义
  • 依赖于App定义和框架的模型1
  • 模型2依赖于App定义,模型1和我的框架

我可以将每个部分编写为RequireJS模块或常见的JS模块,并将我的项目分成我想要的文件数量,但将每个部分编写为模块或将它们分成多个文件然后将它们加载到模块中的优点是什么?正确的顺序(以避免依赖问题)可能会将大文件中的所有文件连接起来以减少HTTP请求(由r.js优化器完成)?

1 个答案:

答案 0 :(得分:11)

在我看来,有三个相当重要的原因:

您可以在不污染全局命名空间的情况下创建和重用模块。您的全局命名空间污染越严重,功能/变量冲突的可能性就越大。这意味着您定义了一个名为“foo”的函数,另一个开发人员定义了函数“foo”=其中一个函数被覆盖。

您可以将代码构建到单独的文件夹和文件中,requirejs会在需要时异步加载它们,所以一切正常。

你可以为生产而构建。 RequireJS自带一个名为R.JS的构建工具,可以将你的javascript模块连接并整理成一个(或多个)软件包。这将提高您的页面速度,因为用户必须减少脚本调用并减少内容负载(因为您的JS已被证实)。

您可以查看这个简单的演示项目:https://c9.io/peeter-tomberg/requirejs(在cloud9ide中)。

要将模块构建到单个应用程序中,您所要做的就是安装requirejs npm软件包并运行命令:r.js -o build / build.properties.js

如果有任何问题,请随便提出。

修改

在开发中,将所有模块放在单独的文件中只是构建和管理代码的好方法。它还可以帮助您进行调试(例如,“Module.js第17行”而不是“scripts.js第5373行”的错误)。

对于生产,您应该使用构建工具将javascript连接并uglify为单个文件。这将有助于页面加载更快,因为您减少了请求。您为加载某些内容而提出的每个请求都会降低您的页面速度您的网页越慢,Google为您提供的积分就越少。页面越慢,用户就越沮丧。页面越慢,您获得的销售额就越少。

如果您想了解有关网页效果的更多信息,请查看http://developer.yahoo.com/performance/rules.html