我正在做一个相当复杂的 emberjs 应用程序,并将其绑定(bind)到 API 的后端。
API 调用通常不绑定(bind)到任何特定模型,但可能会在响应的不同部分返回各种类型的对象,例如对事件 API 的调用将返回事件,但也会返回媒体 Assets 和参与这些事件的个人。
我刚刚开始这个项目,我想获得一些专家指导,了解如何最好地分离关注点以拥有一个干净的可维护代码库。
我接近这个的方式是:
eventStore
会将到目前为止从服务器接收到的所有事件(可能来自不同的请求)存储在一个数组中,也存储在由 id
索引的事件哈希中.stores
供以后检索。一旦发送到商店,他们就不会保留回复。latestEventsView
除了有一个单独的事件页面外,在仪表板上。 很多时候,我的模板需要直接绑定(bind)到商店(例如
peopleView
想要在一个列表中列出 individualStore 中的所有个人,按某种顺序排序)。有时,它们绑定(bind)到计算属性
alivePeople: function () { ... }.property('App.individualStore.content.@each'),
View 中“选择”的各种过滤和排序选项应该从商店返回不同的列表。您可以在 what is the right emberjs way to switch between various filtering options? 看到我的最后一个问题
谁应该做这个过滤, View 本身还是商店?
这种跨层的绑定(bind)可以吗,还是有代码味道?关注点分离是好的,还是我错过了什么? Controller 不应该在这里做更多的事情吗?我的 View 应该直接绑定(bind)到商店吗?
MVC 的任何特殊情况更适合我的需求吗?
2012 年 4 月 17 日更新
我的研究还在继续,尤其是来自 http://vimeo.com/user7276077/videos和 http://jzajpt.github.com/2012/01/17/emberjs-app-architecture.html和 http://jzajpt.github.com/2012/01/24/emberjs-app-architecture-data.html
我发现的一些设计问题是:
这是一个很好的状态图示例:https://github.com/DominikGuzei/ember-routing-statechart-example
2013 年 1 月 9 日更新
是的,它已经很久了,但是这个问题最近得到了很多观点,这就是为什么我想编辑它,以便人们可以理解。
自从提出这个问题以来,Ember 的格局发生了很大变化,新的 guides有很大改善。 EmberJS 已经提出了约定(如 Rails),并且 MVC 现在定义得更好。
任何仍然困惑的人都应该阅读所有指南,并观看一些视频:
Seattle Ember.js Meetup
目前,我正在将我的应用程序升级到
Ember.js 1.0.0-pre2
.
最佳答案
一些东西,最后在浏览器中显示,这就是新的
Emberjs 的 API 试图强制执行。随着您的要求越来越多
详细说明您可以放入 View 、 Controller 或对象。每个
虽然回答了特定的需求。
您用于动画、样式设置的任何第 3 方 javascript 库..
信息,很可能模仿后端信息。
这就是它的全部。如果你学会了如何根据状态来设计你的应用程序,那么其余的都将落入正确的位置,前提是你使用的是最新的 api,并执行我之前提到的规则。
关于model-view-controller - EmberJS : Good separation of concerns for Models, 在相当复杂的应用程序中存储、 Controller 、 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10118466/