如何分离骨干/余烬组件?

时间:2012-02-09 23:57:09

标签: javascript backbone.js ember.js

我有一个涉及三个前端开发人员的项目。我们将使用backbone或ember.js,但我有一个问题。

我一直在使用全局变量的骨干,如下所示。

Window.mymodel = Backbone.Model.extend({});

由于我们是一个团队,我不认为这是最好的方式。此外,backbone或ember.js不提供事件系统(发布或订阅模式..)。

在这种情况下,最佳做法是什么?或者你是如何在这样的项目中工作的?

2 个答案:

答案 0 :(得分:2)

我建议使用嵌套的命名空间模式,如下所示:

var App =  App || {};
App.Model = App.Model || {};

App.Model.MyModel = Backbone.Model.extend({});

(请参阅https://github.com/addyosmani/backbone-fundamentals#namespacing以获取有关此内容的更多信息)

或使用像require.js

这样的AMD加载程序
define(['Backbone'], 
    function ( Backbone ) {

    MyModel = Backbone.Model.extend({});

    return MyModel ;
});

...

require('MyModel', function(MyModel) {
   var myModel = new MyModel();
});

对于使用Backbone的事件,您可以捎带Backbone.Events

// Declare globally or pass around
var app = _.extend({}, Backbone.Events);

// Trigger an event
app.trigger("myEvent", model);

// Catch an event
app.bind("myEvent", function(model) {
});

答案 1 :(得分:1)

Ember开箱即用的关注点非常出色。默认情况下,所有内容都是命名空间如果您更喜欢使用模块而不是Ember的默认全局变量,请查看ember-app-kit。 https://github.com/stefanpenner/ember-app-kit

关于Ember的活动,我建议你查看我给出的有关动作和演讲的演讲。 Ember活动:http://www.lukemelia.com/blog/archives/2013/09/19/events-actions-in-ember-js/