Javascript Backbone.js实用程序

Javascript Backbone.js实用程序,javascript,jquery,backbone.js,requirejs,amd,Javascript,Jquery,Backbone.js,Requirejs,Amd,我目前正在将主干网作为一种组织javascript文件和为代码创建干净结构的方法 我的问题主要是一个“最佳做法”问题 这个库工作得很好,我已经成功地用AMD和requirejs设置了我的结构。我的问题与我正在运行的几个实用程序文件有关。从XML文档中获取数据并将其转换为json数据对象(因此数据可以本地化)。另一个是加载并连接到Facebook的实用程序。我已经创建了这两个“模型” 可以说,这些模型在连接到服务时可能应该是“控制器”,但需要调用这些模型,而无需浏览路由器(或控制器)文件中的has

我目前正在将主干网作为一种组织javascript文件和为代码创建干净结构的方法

我的问题主要是一个“最佳做法”问题

这个库工作得很好,我已经成功地用AMD和requirejs设置了我的结构。我的问题与我正在运行的几个实用程序文件有关。从XML文档中获取数据并将其转换为json数据对象(因此数据可以本地化)。另一个是加载并连接到Facebook的实用程序。我已经创建了这两个“模型”

可以说,这些模型在连接到服务时可能应该是“控制器”,但需要调用这些模型,而无需浏览路由器(或控制器)文件中的hashbang

我应该为这两个实用程序文件扩展backbones模型,还是应该做些其他事情来实现这样的实用程序文件?

出于这个目的使用
主干.model
s在客观上没有什么问题,但不管怎样,它感觉可疑。该机型带有额外的行李,不属于“服务”或“实用”类

相反,我为功能定义了一个更通用、事件化的基类,它不太适合主干模型视图集合路由器范式

define(['backbone', 'underscore'], function(Backbone, _) {

  var Class = function() {
    this.initialize.apply(this, arguments);
  };

  //give Class events and a default constructor
  _.extend(Class.prototype, Backbone.Events, {initialize: function() {}});

  //copy the extend feature from one of the backbone classes
  Class.extend = Backbone.Model.extend;

  return Class;
});
该类的行为与其他主干对象类似,因为它可以
extend
ed,其实例具有
initialize
构造函数方法,并且它们支持事件。您的一个示例,本地化服务,可能类似于:

var LocalizationService = Class.extend({
  initialize: function(url) {
    this.url = url;
    this.fetch();
  },

  fetch: function({
    var self = this;
    $.ajax({
      url:this.url,
      success: function(response) {
        self.response = response;
        self.trigger('fetch:complete', self, response);
        //etc...
      }
    });
  }
});

有一本免费的backbone.js电子书“Developing backbone.js Applications” 作者:艾迪·奥斯马尼:

一开始就有一个


后来还有一个

这正是我要找的。非常感谢!:-)好问题!这正是我想要的。愚蠢的是它是关闭的。