我似乎对出现的东西越来越感到困惑,至少从表面上看,这是关于构建 ember 应用程序的非常基本的架构问题。
哪种控制器类型?
在过去一个月左右的时间里,我看到人们通过 Ember.Controller、Ember.ArrayController、Ember.ObjectController 和 Ember.ArrayProxy 实现控制器。移除 ArrayController 和 ArrayProxy(因为它们是相同的),每种类型之间的常见用例是什么?
到目前为止,我已经能够收集到:
- 当您打算控制的视图中有n 个元素时,应使用 ArrayControllers/Proxies
- 当视图足够简单以在单个对象中维护其状态或者是模型对象的单个实例时,应该使用 ObjectControllers。
- 控制器——?不知道。
控制器类型之间有哪些基本区别?似乎没有关于何时使用哪个以及用于哪个用例的具体信息。API 文档擅长告诉我它们每个的细节,但不告诉我何时使用它们。
View 和 Controller 之间的关系可能令人费解
当视图通过路由 ConnectOutlets 函数调用连接时,控制器和视图之间究竟发生了什么?
事件是否与视图本身相关联(似乎是这种情况),如果是这样,您到底在哪里与控制器单例交互以对其属性执行 CRUD-esq 操作?this.get('controllerName') 似乎没有奏效,几乎每篇文章、教程或代码示例都以不同的方式做到这一点。
没有的型号
我意识到 Ember Data 看起来有助于解决处理数据并保持同步的一些更烦人的部分,但从更大的角度来看,在“MVC”的概念中,ember 似乎并没有真正的模型任何一种。它只是一些对象,它从特定事物中获得子类,然后被跟踪....某处?不知何故?神奇?
@trek 足以让 Ember.Object 管理 ajax'ing 数据和处理客户端上的状态就好了,但如果你看一下 todomvc.com ember 应用程序之类的东西,它使用的 localStorage 范式在实现上完全不同,那么一切我看过了。
MVC 方程的“模型”部分应该如何在此处完成?
观点让我想谋杀孩子
在向用户显示标记方面,似乎有很多方法可以构建“视图”。
- ContainerViews,使用子视图/子视图
- 嵌套插座
- 车把模板 + 插座
- 在控制器中使用#each foo
- 通过文字(
template: Ember.Handlebars.compile('<h1>foo</h1>')
等)注入
考虑到这一点,使用 ember 构建模块化 UI 组件的“正确”方法是什么?这对我来说是采用这个框架的主要痛点。
我喜欢 Ember 在 Web 上进行应用程序开发的方向。这些概念看起来很简单,但冗长的是Objective-C(考虑到它的血统,这是有道理的),但我向上帝发誓,我觉得我正在与该死的框架作斗争,而不是我实际在我的应用程序上工作。语法的冗长和 API 文档之外的结构化文档的缺乏(让我们面对现实吧,300k 的 javascript 是大量的代码来抛出一些断点并尝试调试您的问题)。
我意识到你们面临的挑战,但希望这至少能让你停下来思考一下如何让那些使用其他框架(或者地狱,甚至在 MVC 框架中工作)的新开发人员的生活更轻松,如 rails 或 django 或骨干或 angular)并说“这就是我们认为应该使用 ember 的方式”。
做出一些固执己见的软件设计决策并将其应用于社区。如果你这样做,我们只会为你做拉拉队队长,保证。