RequireJS + Backbone 没有 jQuery?
RequireJS + Backbone without jQuery?
我正在尝试使用 RequireJS,这是我的配置文件:
require.config({
baseUrl: "/scripts",
paths: {
zepto: "zepto.min",
underscore: "underscore.min",
backbone: "backbone.min"
},
shim: {
zepto: {
exports: "$"
},
underscore: {
exports: "_"
},
backbone: {
deps: ["underscore", "zepto"],
exports: "Backbone"
}
}
});
这是我的 app.js :
require(['backbone'], function(Backbone) {
console.log('loaded!');
});
这工作正常,但我不知道为什么 RequireJS 试图加载 jQuery。
因为 Backbone 需要名为 jquery 的模块(查看 backbone.js
的顶部)文件。
// Set up Backbone appropriately for the environment. Start with AMD.
if (typeof define === 'function' && define.amd) {
define(['underscore', 'jquery', 'exports'], function(_, $, exports) {
// Export global even in AMD case in case this script is loaded with
// others that may still expect a global Backbone.
root.Backbone = factory(root, exports, _, $);
});
并且您还没有定义这个模块。
要破解这个使用 zepto
作为 jquery
:
require.config({
baseUrl: "/scripts",
paths: {
jquery: "zepto.min",
underscore: "underscore.min",
backbone: "backbone.min"
},
shim: {
jquery: {
exports: "$"
},
underscore: {
exports: "_"
}
}
});
其次:shim
仅适用于 非 amd 模块。 Backbone 是 AMD 模块。
我正在尝试使用 RequireJS,这是我的配置文件:
require.config({
baseUrl: "/scripts",
paths: {
zepto: "zepto.min",
underscore: "underscore.min",
backbone: "backbone.min"
},
shim: {
zepto: {
exports: "$"
},
underscore: {
exports: "_"
},
backbone: {
deps: ["underscore", "zepto"],
exports: "Backbone"
}
}
});
这是我的 app.js :
require(['backbone'], function(Backbone) {
console.log('loaded!');
});
这工作正常,但我不知道为什么 RequireJS 试图加载 jQuery。
因为 Backbone 需要名为 jquery 的模块(查看 backbone.js
的顶部)文件。
// Set up Backbone appropriately for the environment. Start with AMD.
if (typeof define === 'function' && define.amd) {
define(['underscore', 'jquery', 'exports'], function(_, $, exports) {
// Export global even in AMD case in case this script is loaded with
// others that may still expect a global Backbone.
root.Backbone = factory(root, exports, _, $);
});
并且您还没有定义这个模块。
要破解这个使用 zepto
作为 jquery
:
require.config({
baseUrl: "/scripts",
paths: {
jquery: "zepto.min",
underscore: "underscore.min",
backbone: "backbone.min"
},
shim: {
jquery: {
exports: "$"
},
underscore: {
exports: "_"
}
}
});
其次:shim
仅适用于 非 amd 模块。 Backbone 是 AMD 模块。