需要依赖(按顺序加载以防止错误)

时间:2012-12-12 07:57:11

标签: backbone.js requirejs

我在我的应用程序和某些Android设备上使用require,并且每次在网络上我都会收到错误,例如jQuery未定义或Backbone未定义]

我的索引页面很简单,并且有一个指向我需要的链接

<script data-main="js/main" src="js/vendor/require/require.js"></script>

在这里我设置所有路径并调用路由器以及关闭JQM的路由

require.config({

paths: {
    jquery:     'vendor/jqm/jquery_1.7_min',
    jqm:     'vendor/jqm/jquery.mobile-1.1.0', 
    underscore: 'vendor/underscore/underscore_amd',
    backbone:   'vendor/backbone/backbone_amd',
    text:       'vendor/require/text',
    templates:  '../templates',
    views:    '../views',
    models:       '../models'
}

});

define(['router','jqm-config'], function(app) {
});

然后在我的路由器页面上我定义了那里需要的东西..

define(['jquery', 'underscore', 'backbone','views/home/home',
        'models/products/productCollection',
        'views/products/productTypes',   
        'jqm'], 
function($, _, Backbone,HomeView,ProductsType,ProductListView ) {

       var AppRouter = Backbone.Router.extend({
        //code here
        });

$(document).ready(function () {
    console.log('App Loaded');
    app = new AppRouter();
    Backbone.history.start();
    });

    return AppRouter;
});

如何阻止发生这些错误?

1 个答案:

答案 0 :(得分:1)

在require.config中,您可以添加一个shim部分来定义这些依赖项:

require.config({
  // The shim config allows us to configure dependencies for
  // scripts that do not call define() to register a module
  shim : {
    'underscore' : {
      exports : '_'
    },
    'backbone' : {
      deps : [ 'underscore', 'jquery' ],
      exports : 'Backbone'
    },
    'dataTables' : {
      deps : [ 'jquery' ],
      exports : 'dataTables'
    }
  },
  paths : {
...