3

未捕获的错误:模块加载超时:order!libs/jquery/jquery-min order!libs/underscore/underscore-min order!libs/parse/parse-min libs/jquery/jquery-min libs/underscore/underscore-min libs /parse/parse-min 骨干网 http://requirejs.org/docs/errors.html#timeout

我在 Chrome 的“网络”选项卡下没有 404 请求,也没有脚本错误,所以我不属于该问题的常见错误/修复(根据 requirejs.org)。

当我查看我的网络时,我看到脚本按以下顺序加载:

require.js
main.js
app.js <-- required by main.js
order.js <-- used in main.js to require the next 4 scripts (which aren't AMD)
jquery-min.js <-- required by main.js
underscore-min.js <-- required by main.js
backbone-min.js <-- required by main.js
parse-min.js <-- required by main.js
router.js
login.js
text.js

这对我来说似乎是正确的。下面是我的main.js,app.js和代码router.js

主.js:

// Author: Thomas Davis <thomasalwyndavis@gmail.com>
// Filename: main.js

// Require.js allows us to configure shortcut alias
// Their usage will become more apparent futher along in the tutorial.
require.config( {
    paths : {
        jQuery : 'libs/jquery/jquery-min',
        Underscore : 'libs/underscore/underscore-min',
        Backbone : 'libs/backbone/backbone-min',
        Parse : 'libs/parse/parse-min',
        templates : '../templates'
    }
});

require( [
    // Load our app module and pass it to our definition function
    'app',

    // Some plugins have to be loaded in order due to their non AMD compliance
    // Because these scripts are not "modules" they do not pass any values to the
    // definition function below
    'order!libs/jquery/jquery-min',
    'order!libs/underscore/underscore-min',
    'order!libs/backbone/backbone-min',
    'order!libs/parse/parse-min'
],
function(App) {
    // The "app" dependency is passed in as "App"
    // Again, the other dependencies passed in are not "AMD" therefore
    // don't pass a parameter to this function
    App.initialize();
});

应用程序.js:

// Filename: app.js
define( [ 'jQuery', 'Underscore', 'Parse', 'router' ],
function($, _, Parse, Router) {
    var initialize = function() {

        Parse.$ = $;

        // Initialize Parse with your Parse application javascript keys
        Parse.initialize("HIDDEN", "ALSO HIDDEN");

        // Pass in our Router module and call it's initialize function
        Router.initialize();
    };

    return {
        initialize : initialize
    };
});

路由器.js:

// Filename: router.js
define( [ 'jQuery', 'Underscore', 'Backbone', 'Parse', 'views/home/login', ],
function($, _, Backbone, Parse, loginView) {
    var AppRouter = Backbone.Router.extend( {
        routes : {
            // Default
            '*actions' : 'defaultAction'
        },
        defaultAction : function(actions) {
            // We have no matching route, lets display the home page
            loginView.render();
        }
    });

    var initialize = function() {
        var app_router = new AppRouter;
        Backbone.history.start();
    };
    return {
        initialize : initialize
    };
});
4

3 回答 3

1

尝试使用 requirejs-jquery。它的 requirejs 版本已准备好与 jquery 一起使用并尝试使用 shim 配置。

请参阅此链接:https ://github.com/jrburke/require-jquery

垫片配置示例:

require.config({
  paths: {
    "jqueryUI": "libs/jquery-ui",
    "jquery": "libs/jquery-1.9.1",
    "underscore": "libs/underscore-min",
    "backbone": "libs/backbone-min"
  },
  shim: {
    jqueryUI:{
         deps: ["jquery"],
         exports:"$"
    },
    underscore: {
      exports: "_"
    },
    backbone: {
      deps: ["underscore", "jquery"],
      exports: "Backbone"
    }
  }

});
于 2013-08-29T17:01:58.170 回答
0

我刚刚发布了一个开源工具包,可以帮助解决此类问题。它是许多开源工具的组合,它为您提供了一个开箱即用的 requirejs 主干应用程序。

它提供单个命令来运行:dev web server、jasmine 单浏览器测试运行器、jasmine js-test-driver 多浏览器测试运行器,以及 JavaScript 和 CSS 的连接/缩小。它还输出应用程序的未缩小版本以进行生产调试,预编译您的车把模板,并支持国际化。

无需设置。它只是工作。

http://github.com/davidjnelson/agilejs

于 2013-02-16T19:49:52.053 回答
-8

我切换到main.js在我的外部和我的内部加载 JS 文件index.html

<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.3.3/underscore-min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript" src="http://www.parsecdn.com/js/parse-1.0.0.min.js"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/backbone.js/0.9.2/backbone-min.js"></script>
<script data-main="js/main" src="js/libs/require/require.js"></script>
于 2012-06-06T06:30:24.820 回答