2

在 Ember 中,所有内容都使用其类型作为名称的一部分进行注册。IE:

App.FoobarController
App.FoobarView
App.FoobarRoute

除了 Ember-Data 模型,它们都只是用它们的根名称来调用。IE

App.User
App.Post
App.Comment

为什么 ember-data 模型会打破这种模式,而不是分别被称为App.UserModel, ?App.PostModelApp.CommentModel

我意识到我可以为我的模型命名任何我想要的名称,但是如果我继续命名我的用户 model App.UserModel,那么我的所有 AJAX 请求都将发送到/user_models并期望响应 JSON 带有user_model/的根元素user_models。我也意识到可以注册别名/复数以使这种模式成为可能。

但是,我可以做类似controllerName: 'Foobar'and之类的事情templateName: 'Foobar',Ember 会自动将它们分别解析为FoobarControllerand FoobarTemplate。我还可以定义App.FoobarViewandApp.FoobarController并且 Ember 知道它们会一起自动配对。也就是说,我希望 AJAX 请求会发生相同类型的魔法,UserModel以便被重写/users并启用通过App.store.find( 'User', 123 ).

在处理模型时是否有理由打破这个约定,或者这只是与 Ember-Data 的疏忽/错误/不一致?

4

1 回答 1

2

在处理模型时是否有理由打破这个约定,或者这只是与 Ember-Data 的疏忽/错误/不一致?

我认为约定并没有被破坏,因为它与您的期望不同。在许多方面,ember 都建立在 rails 和其他 MVC 框架使用的约定之上。通常,MVC 应用程序是围绕一组表示域模型的对象构建的。例如:

User, Post, Comment, etc.

现在,对于每个模型,可能还需要其他特定于框架的对象,例如:

UserController, UserView, UserPresenter, UserMailer, UserTemplate, UserView

所以遵循这个约定 UserModel 是没有意义的。我可以看到一个更清楚的论点,UserModel但建议选择你的战斗。尝试与框架(无论是 ember、rails 还是任何其他框架)并使用您自己的命名约定会导致大量额外的工作。除非您有钱烧钱或有很好的理由,否则建议您使用默认值。

于 2013-08-22T05:03:47.300 回答