Backbone.js 和 Require.js
Backbone.js and Require.js
我想用 Require.js 创建 Backbone.js 应用程序。
但是我在控制台中有一个错误:未捕获错误:尚未为上下文加载模块名称 "underscore":_。使用 require([])
require.config({
baseUrl: 'js/',
paths : {
'jquery' : 'jquery',
'underscore' : 'underscore',
'backbone' : 'backbone',
shim: {
'underscore': {
exports: '_'
},
'backbone': {
deps: ['underscore', 'jquery'],
exports: 'Backbone'
}
}
}
});
define('app', ['jquery','backbone', 'underscore'], function ($, Backbone, _){
var Model = Backbone.model.extend({});
var model = new Model;
});
require(['app','jquery', 'backbone', 'underscore']);
我该如何解决这个问题?
您需要 Underscore.js,如您的要求声明中所列。
路径对象中提到了垫片。我不确定这是否是问题所在,但想在这里提及。
您仍然需要将 underscore
列为 paths
的一部分,以便您可以在垫片中引用它。另外,不确定你的目录结构是什么样的,但我写这篇文章时假设库代码在 /js/libs
目录中)。最后,请注意,您不需要 require
app
的任何依赖项——RequireJS 的乐趣在于它会找出要加载的内容。
所以...
require.config({
baseUrl: 'js/',
paths : {
'jquery' : 'lib/jquery',
'underscore' : 'lib/underscore',
'backbone' : 'lib/backbone',
},
shim: {
'underscore': {
exports: '_'
},
'backbone': {
deps: ['underscore', 'jquery'],
exports: 'Backbone'
}
}
});
define('app', ['jquery','backbone', 'underscore'], function ($, Backbone, _){
var Model = Backbone.Model.extend({});
var model = new Model({
foo: 'bar'
});
var app = {
model: model
};
// ...
return app;
});
require(['app'], function(App) {
App.model.get('foo'); // <<=== returns 'bar'
});
我想用 Require.js 创建 Backbone.js 应用程序。 但是我在控制台中有一个错误:未捕获错误:尚未为上下文加载模块名称 "underscore":_。使用 require([])
require.config({
baseUrl: 'js/',
paths : {
'jquery' : 'jquery',
'underscore' : 'underscore',
'backbone' : 'backbone',
shim: {
'underscore': {
exports: '_'
},
'backbone': {
deps: ['underscore', 'jquery'],
exports: 'Backbone'
}
}
}
});
define('app', ['jquery','backbone', 'underscore'], function ($, Backbone, _){
var Model = Backbone.model.extend({});
var model = new Model;
});
require(['app','jquery', 'backbone', 'underscore']);
我该如何解决这个问题?
您需要 Underscore.js,如您的要求声明中所列。
路径对象中提到了垫片。我不确定这是否是问题所在,但想在这里提及。
您仍然需要将 underscore
列为 paths
的一部分,以便您可以在垫片中引用它。另外,不确定你的目录结构是什么样的,但我写这篇文章时假设库代码在 /js/libs
目录中)。最后,请注意,您不需要 require
app
的任何依赖项——RequireJS 的乐趣在于它会找出要加载的内容。
所以...
require.config({
baseUrl: 'js/',
paths : {
'jquery' : 'lib/jquery',
'underscore' : 'lib/underscore',
'backbone' : 'lib/backbone',
},
shim: {
'underscore': {
exports: '_'
},
'backbone': {
deps: ['underscore', 'jquery'],
exports: 'Backbone'
}
}
});
define('app', ['jquery','backbone', 'underscore'], function ($, Backbone, _){
var Model = Backbone.Model.extend({});
var model = new Model({
foo: 'bar'
});
var app = {
model: model
};
// ...
return app;
});
require(['app'], function(App) {
App.model.get('foo'); // <<=== returns 'bar'
});