我正在学习this backbone教程。这里,下划线和backbone的shim和amd版本都用于加载脚本文件。
背后的原因是shim不异步加载脚本文件,但amd版本允许异步加载jquery、下划线和主干。
我在firebug中也看到了这是真的。所以我的问题是:对于实际/生产应用程序,哪种方法更好。
发布于 2013-10-16 15:09:51
使用。它在管理大规模JavaScript应用程序中的依赖项方面非常强大。
AMD
异步模块定义( Asynchronous Module Definition,AMD)指定了一种定义模块的机制,以便可以异步加载模块及其依赖项。这特别适合于同步加载模块会导致性能、可用性、调试和跨域访问问题的浏览器环境。
define.amd属性
为了明确指示全局定义函数(如脚本源浏览器加载所需)符合AMD API,任何全局定义函数都应该有一个名为"amd“的属性,该属性的值是一个对象。这有助于避免与可能定义了不符合API的JavaScript ()函数的任何其他现有定义代码发生冲突。
此时未指定define.amd对象内的属性。实现者可以使用它,这些实现者希望告知该实现所支持的基本API之外的其他功能。
具有对象值的define.amd属性的存在表示符合此接口。如果有其他版本的应用程序接口,它可能会定义另一个属性,如define.amd2,以指示符合该版本的应用程序接口的实现。
下面是如何为允许在环境中加载模块的多个版本的实现定义它的示例:
define.amd = {
multiversion: true
};最低清晰度:
define.amd = {};管理从属文件的顺序
RequireJS使用Asynchronous Module Loading (AMD)加载文件。每个依赖模块将按照给定的顺序通过异步请求开始加载。即使考虑了文件顺序,由于异步性质,我们也不能保证第一个文件在第二个文件之前加载。因此,RequireJS允许我们使用shim配置来定义需要以正确顺序加载的文件序列。让我们看看如何在RequireJS中创建配置选项。
requirejs.config({
shim: {
'source1': ['dependency1','dependency2'],
'source2': ['source1']
}
});配置允许我们使用RequireJS ()函数提供配置选项。它接受一个名为shim的参数,我们可以用它来定义强制的依赖序列。您可以在RequireJS API documentation.中找到完整的配置指南
参考文献1) http://www.sitepoint.com/understanding-requirejs-for-effective-javascript-module-loading/
https://stackoverflow.com/questions/19397160
复制相似问题