RequireJS工作不一致

时间:2012-09-07 18:26:01

标签: javascript jquery backbone.js requirejs underscore.js

当我按F5重新加载我的应用程序时,有时会抛出错误,有时则不会。

我正在使用Chrome进行调试。有时控制台会报告此错误:

Uncaught ReferenceError: unit_directionals is not defined

有时会抛出一个引用没有像jquery那样被定义: "未捕获的ReferenceError:jQuery未定义"

如果我以正确的方式定义文件会出现什么问题?

这是我在主索引html中指向的main.js中的代码:

requirejs.config({
    baseUrl: 'js/lib',
    paths:{
        app:'../app',
        models: '../app/models',
        views: '../app/views'
    }
})

requirejs(
    [
        //load lib in this order
        'underscore', 'handlebars', 'jquery','backbone', 'uri',
        //load models, views...
        'app/models/items.model', 'app/models/results.model',
        'app/views/items.view', 'app/views/results.view',
        'app/index'
    ],
    function(jQuery,$,_....) {
        //init app
    }
);

1 个答案:

答案 0 :(得分:10)

requirejs加载模块异步并且它们可以无序加载 - 它们不能保证按require调用中指定的顺序加载。如果脚本是AMD模块,并且使用其依赖项调用define(),则这不是问题。

但是,如果脚本只使用浏览器全局和隐式依赖,例如主干和可能的把手,则需要shim config来正确表达依赖关系和导出值。