我有一个涉及三个前端开发人员的项目。我们将使用backbone或ember.js,但我有一个问题。
我一直在使用全局变量的骨干,如下所示。
Window.mymodel = Backbone.Model.extend({});
由于我们是一个团队,我不认为这是最好的方式。此外,backbone或ember.js不提供事件系统(发布或订阅模式..)。
在这种情况下,最佳做法是什么?或者你是如何在这样的项目中工作的?
答案 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/