我正在使用requireJS构建一个网站.
这是我第一次使用requireJS.
我在main.js中为requireJS配置了路径:
require.config({
paths: {
'jquery': 'libs/jquery/1.7.2/jquery',
'underscore': 'libs/underscore/1.3.3-amdjs/underscore', // AMD support
'backbone': 'libs/backbone/0.9.2-amdjs/backbone', // AMD support
'marionette': 'libs/marionette/0.9.3-amd/backbone.marionette', // AMD support
'templates': '../templates'
}
});
在我正在使用的模型,视图,集合中;
define([
'jquery',
'backbone'
], function ($) {
var Geo = Backbone.Model.extend({});
return Geo;
});
我不清楚的是:为什么我要继续定义jquery&骨干作为依赖.
我的意思是这个项目和模型永远不会没有jquery / backbone.
那么为什么不将jquery和backbone作为脚本标记添加到index.html中,并在每个对象中保存引用它们.我知道它会污染全局命名空间但不合理吗?
任何建议appriciated.
干杯,
最佳答案 @Guy,定义它们是可选的,但如果你想保持一致,那就比你做得好.这是Require.JS建议的架构.这并不意味着每次将它们定义为deps时它都会尝试加载jQuery或Backbone.
此外,在您的示例中,您不需要在回调函数()参数中使用$. jQuery和$已经在窗口中了.
define([
'jquery',
'backbone'
], function ($) {
var Geo = Backbone.Model.extend({});
return Geo;
});
此外,在生产中,因为我们有时会使用很多依赖项,所以我们这样做:每次列出需要依赖项然后显式分配变量,因为某些依赖项没有AMD支持而且没有返回您期望的内容:
define([
'require'
'moduleA',
'moduleB'
], function (require) {
var moduleA = require('moduleA'),
moduleB = require('moduleB');
/* code */
return;
});