我正在重写backboneJS中的web应用程序,我想知道与我以前的方法相比的一般体系结构。Backbone web应用程序体系结构 - 最佳实践
请让我知道如果你认为这个问题应该在CodeReview而不是StackOverflow。
这是我怎样努力构建网络应用MVC风格不一样骨干或有角的任何框架:
var App = function() {
// ...
};
每一个主要的物体,像App
,Page
,Product
或任何有它自己的model
属性,通常可以保存数据从RESTful API接口和一个包含所有HTML和事件处理程序的jQuery对象的view
属性接收。一旦需要,它被克隆到DOM中。
var Page = function(model) {
this.model = model;
this.view = this.render();
}
Page.prototype.render = function() {
//get template, render it return jQuery object
return $(html)
}
window.Shop = {
app: new App({}),
pages: {
home: new Page({}),
products: new Page({})
}
}
这是我对很多网络应用程序的传统方法。它的结构很好,我总是知道在哪里可以找到我的数据和我的观点。更重要的是,它们是同一对象的一部分,所以我可以轻松处理视图和模型数据之间的承诺和/或延迟对象(hbs模板,API数据等)。
但与骨干,它似乎像View
和Model
是他们自己的,单独的对象,我不知道我是否应该处理视图作为模型的子对象,其他方式或甚至在同一水平。
这是一种方法
var PageView = Backbone.View.extend({});
var Page = Backbone.Model.extend({
initialize: function() {
this.view = new PageView();
}
});
window.Shop = {
pages: {
home: new Page({}),
products: new Page({})
}
}
这是另一种方法,我看到的问题,因为我不能从模型或周围的其他方式访问视图(它们之间没有关系)。
var PageView = Backbone.View.extend({});
var Page = Backbone.Model.extend({});
window.Shop = {
pages: {
home: {
view: new PageView({}),
model: new Page({})
},
products: {
view: new PageView({}),
model: new Page({})
}
}
}
还有很多其他的可能性,我不确定什么是最好的前进方式。
例如,您可能想了解[Marionette.js](http://marionettejs.com/),它是一个构建在Backbone之上的框架。 – moonwave99