我正在阅读this backbone教程。这里使用了下划线和骨干的shim
和amd版本来加载脚本文件。
背后的原因是shim
不会异步加载脚本文件,但是amd版本允许异步加载jquery,下划线和主干。
我也在萤火虫中看到它是真的。所以我的问题是:哪种方法实际上对实际/生产应用程序有益。
答案 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/