我在我的应用程序和某些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;
});
如何阻止发生这些错误?
答案 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 : {
...