在Ember中,所有内容都以其类型注册为名称的一部分。即:
App.FoobarController
App.FoobarView
App.FoobarRoute
Ember-Data模型除外,它们都是根据它们的根名称调用的。即。
App.User
App.Post
App.Comment
为什么ember-data模型会破坏这种模式而不是分别被称为App.UserModel
,App.PostModel
,App.CommentModel
?
我意识到我可以将我的模型命名为任何我想要的,但是如果我继续命名我的用户模型App.UserModel
,那么我的所有AJAX请求都会被发送到/user_models
并期望响应JSON user_model
/ user_models
的根元素。我也意识到可以注册别名/复数以使这种模式成为可能。
但是,我可以执行controllerName: 'Foobar'
和templateName: 'Foobar'
之类的操作,而Ember会自动将它们分别解析为FoobarController
和FoobarTemplate
。我也可以定义App.FoobarView
和App.FoobarController
,而Ember知道它们会一起自动配对。也就是说,我希望将UserModel
的AJAX请求重写为/users
以及通过App.store.find( 'User', 123 )
启用提取相同类型的魔术。
这个约定在处理模型时是否有理由被破坏,或者这只是与Ember-Data的疏忽/错误/不一致?
答案 0 :(得分:2)
这个约定在处理模型时是否有理由被破坏,或者这只是与Ember-Data的疏忽/错误/不一致?
我认为惯例并没有那么多,因为它与你所期望的不同。在许多方面,ember正在构建rails和其他MVC框架使用的约定。通常,MVC应用程序围绕一组代表域模型的对象构建。例如:
User, Post, Comment, etc.
现在,对于每个模型,可能还需要其他特定于框架的对象,例如:
UserController, UserView, UserPresenter, UserMailer, UserTemplate, UserView
因此遵循此约定UserModel是没有意义的。我可以看到一个论点UserModel
会更清楚,但会建议选择你的战斗。试图对抗框架(无论是ember,rails还是其他任何东西)并使用您自己的命名约定将导致大量额外的工作。建议使用默认值,除非你有钱烧钱或者是一个非常好的理由。