我正在学习require.js来组织backbone.js模板。我在网上搜索时得到了几个教程。我发现了不同的实现。这就是为什么我无法理解 main.js 文件的代码的原因。
//file name main.js
require.config({
paths: {
jquery: 'libs/jquery/jquery',
underscore: 'libs/underscore/underscore',
backbone: 'libs/backbone/backbone'
}
});
require([
'app',
], function(App)
{
App.initialize();
});
特别是我无法理解第二部分。那是
需要([ '应用&#39 ;, ],功能(App) { App.initialize(); });
App.initialize(); ?
是什么意思答案 0 :(得分:2)
require([ 'app', ], // this means you have a file called app.js,
// which is a require module
], function(App) // This means after loadind, App will be an alias
// for the module.exports object
{
App.initialize(); // This means the module exposes an initialize function
// (some will call it method), that is invoked
});
答案 1 :(得分:0)
该结构是异步模块定义或AMD的格式。它基本上是一个API,用于以异步方式在应用程序中加载模块(基本上是Javascript文件)。
过去,这通常是使用页面底部的<script>
标记完成的。问题是那些是同步加载的(一个接一个)并且处理文件之间的依赖关系可能是繁重的。 AMD是一种能够异步加载Javascript文件的标准。
基础知识是这样的(以您的代码为例):
您调用函数require
,它接受两个参数:
表示文件路径(或路径别名)的字符串数组。这些将是文件所需的依赖项(想想Java中的导入)
在加载第一个参数中指定的依赖项后,将由Require调用的回调函数。 Require将传入您在第一个参数中指定的实际文件。所以在你的例子中,你告诉要求'去加载app.js文件',当它被加载时,将该文件传递给我的回调函数
所以在这段代码中(这是你的回调函数):
function(App) {
App.initialize();
}
App
表示Javascript文件app.js
的公开API。所以当你看到App.initialize()
这样的东西时,所有这意味着文件app.js
正在暴露一个名为initialize的函数,该函数正在调用。