jquery – requireJS与Backbone依赖

我正在使用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;
});
点赞