Requirejs模块回调

时间:2012-12-10 10:24:44

标签: requirejs

我非常困扰ATM与Requirejs。我无法访问我所需的文件。

我告诉你我的代码,你会看到问题:

的index.html

<script src="libs/jquery/requirejs.js"></script>
<script src="js/boot.js"></script>
<script src="home/init.js"></script>

boot.js

require.config({
    paths: {
        jquery: 'libs/jquery/jquery',
        home: 'home/home'   
    }
});

// my main module
define('common', [
    'jquery'
], function($){

  $('body').append('boot loaded ');

  return { }
});

// require the main module
require(['common']);

在这里,没关系。

home.js

// simple object
var home = {
    syl: 88
}

init.js

// home module
define('init_home', [
    'jquery',
    'home'
], function($, home){

  $('body').append('init loaded');

  return home;
});

require(['init_home'], function(home) {
  console.log(home.syl); // Uncaught TypeError: Cannot read property 'syl' of undefined 
});

检查错误。

如何访问我的home.js?请问是什么语法?

任何提示都表示赞赏。

谢谢,问候。

1 个答案:

答案 0 :(得分:0)

从我看到的,你还没有设置基本URL。 Requirejs加载相对于基本URL的所有文件。

我建议您重新构建代码路径,以便所有JS文件都驻留在公共文件夹中,例如:

<script src="scripts/libs/requirejs.js"></script>
<script src="scripts/boot.js"></script>
<script src="scripts/home/init.js"></script>

如您所见,现在基本URL是“scripts”文件夹。将属性添加到“requirejs.config”:

require.config({
    baseUrl: "scripts",
    .....
    .....
});

现在requirejs知道必须从相对于脚本文件夹的路径加载代码。

阅读此documentation以获得进一步说明。

此外,您只需定义:

即可返回对象
define("module_name", {
    name: "value"
});