requireJS:骨干的垫片或amd版本,下划线

时间:2013-10-16 07:06:28

标签: jquery backbone.js requirejs underscore.js

我正在阅读this backbone教程。这里使用了下划线和骨干的shim和amd版本来加载脚本文件。

背后的原因是shim不会异步加载脚本文件,但是amd版本允许异步加载jquery,下划线和主干。

我也在萤火虫中看到它是真的。所以我的问题是:哪种方法实际上对实际/生产应用程序有益。

1 个答案:

答案 0 :(得分:1)

使用 require.js 。它在管理大型JavaScript应用程序中的依赖项方面非常强大。

<强> AMD

异步模块定义( AMD )API指定了一种定义模块的机制,以便可以异步加载模块及其依赖项。这特别适用于浏览器环境,其中模块的同步加载会导致性能,可用性,调试和跨域访问问题。

define.amd属性

为了明确指示全局定义函数(根据脚本src浏览器加载所需)符合AMD API,任何全局定义函数应该都有一个名为&#34; amd&#34;的属性。其值是一个对象。这有助于避免与可能已定义不符合AMD API的define()函数的任何其他现有JavaScript代码冲突。

此时未指定define.amd对象内的属性。它可以由想要通知实现支持的基本API之外的其他功能的实现者使用。

带有对象值的define.amd属性的存在表示与此API的一致性。如果有另一个版本的API,它可能会定义另一个属性,如define.amd2,以指示符合该API版本的实现。

如何为允许在环境中加载模块的多个版本的实现定义它的示例:

 define.amd = {
    multiversion: true
  };

最低定义:

 define.amd = {};

管理从属文件的顺序

RequireJS使用Asynchronous Module Loading (AMD)加载文件。每个依赖模块将按给定顺序开始通过异步请求加载。即使考虑了文件顺序,由于异步性质,我们无法保证第一个文件在第二个文件之前加载。因此,RequireJS允许我们使用shim配置来定义需要以正确顺序加载的文件序列。让我们看看我们如何在RequireJS中创建配置选项。

requirejs.config({
  shim: {
    'source1': ['dependency1','dependency2'],
    'source2': ['source1']
  }
});

RequireJS允许我们使用config()函数提供配置选项。它接受一个名为shim的参数,我们可以使用它来定义必需的依赖序列。您可以在RequireJS API documentation.

中找到完整的配置指南

参考1)http://www.sitepoint.com/understanding-requirejs-for-effective-javascript-module-loading/

2)https://github.com/amdjs/amdjs-api/wiki/AMD