0

我在我的应用程序和某些 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;
});

我如何阻止这些错误的发生?

4

1 回答 1

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 : {
...
于 2012-12-12T09:05:51.457 回答