了解require.js以实现backbone.js

时间:2014-09-26 13:07:55

标签: javascript backbone.js requirejs

我正在学习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();

是什么意思

2 个答案:

答案 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,它接受​​两个参数:

  1. 表示文件路径(或路径别名)的字符串数组。这些将是文件所需的依赖项(想想Java中的导入)

  2. 在加载第一个参数中指定的依赖项后,将由Require调用的回调函数。 Require将传入您在第一个参数中指定的实际文件。所以在你的例子中,你告诉要求'去加载app.js文件',当它被加载时,将该文件传递给我的回调函数

  3. 所以在这段代码中(这是你的回调函数):

     function(App) {
      App.initialize();                    
    }
    

    App表示Javascript文件app.js的公开API。所以当你看到App.initialize()这样的东西时,所有这意味着文件app.js正在暴露一个名为initialize的函数,该函数正在调用。