繁体   English   中英

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

[英]what are the advantages of using an AMD like requirejs or commonjs modules in javascript?

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

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

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

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

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

您可以创建和重用模块,而不会污染全局命名空间。 您的全局命名空间污染越严重,函数/变量冲突的可能性就越大。 这意味着您定义了一个名为“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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM