require.js没有加载任何模块

时间:2012-10-19 13:05:54

标签: javascript requirejs

我正在尝试使用require.js加载模块,我的app.js中有以下内容:

require.config({
baseUrl: "js"
});


alert("hello world"); // for debugging

require(['eh2'], function(eh2) {
    alert("nothing here"); // for debugging
});

当我运行我的应用程序时,尽管app.js正在加载,但我要求的模块从未加载 - “hello world”执行,但“此处没有”不会!

HTML页面中的我的脚本标记如下所示:

<script type="text/javascript" src="js/lib/require.js" data-main="app"></script>

eh2.js位于js文件夹中,它包含在一个define语句中:

define(["./screens/Screens"], function(screens) {
    return {
        // code here
    };
});

我做错了什么? require.js是否默默无法在screens.js下加载一些子模块,或许?

以下是Screens模块中的代码:

    define([ "screens/TitleScreen", "screens/GameScreen" ], function(titleScreen, gameScreen) {
    return {

        screenFuncs: {
            "TitleScreen" : titleScreen.TitleScreen,
            "GameScreen" : gameScreen.GameScreen,
        },

        buildScreen: function(data) {
            var func = screenFuncs[data.type];
            var screen = new func(data.params);
            return screen;
        },
    };
});

定义调用中的路径是否需要相对于我所在的js文件的当前位置,或者相对于app.js中定义的根目录?

1 个答案:

答案 0 :(得分:5)

替换这个:

define(["./screens/Screens"], function(screens) {
    ....
});

使用绝对路径变体:

define(["screens/Screens"], function(screens) {
    ....
});

或使用:

define(function(require) {
    var screens = require("./screens/Screens");
    ....
});

来自docs

  

define()中的相对模块名称:

     

对于require(“./ relative / name”)   调用可能发生在define()函数调用中,请务必询问   将“require”作为依赖项,以便解析相对名称   正确地:

define(["require", "./relative/name"], function(require) {
    var mod = require("./relative/name");
});
  

或者更好的是,使用可用于翻译CommonJS的缩短语法   模块:

define(function(require) {
    var mod = require("./relative/name");
});