为什么Ember模型的命名不同于其他所有?

时间:2013-08-21 18:12:21

标签: javascript ember.js naming-conventions ember-data

在Ember中,所有内容都以其类型注册为名称的一部分。即:

App.FoobarController
App.FoobarView
App.FoobarRoute

Ember-Data模型除外,它们都是根据它们的根名称调用的。即。

App.User
App.Post
App.Comment

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

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

但是,我可以执行controllerName: 'Foobar'templateName: 'Foobar'之类的操作,而Ember会自动将它们分别解析为FoobarControllerFoobarTemplate。我也可以定义App.FoobarViewApp.FoobarController,而Ember知道它们会一起自动配对。也就是说,我希望将UserModel的AJAX请求重写为/users以及通过App.store.find( 'User', 123 )启用提取相同类型的魔术。

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

1 个答案:

答案 0 :(得分:2)

  

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

我认为惯例并没有那么多,因为它与你所期望的不同。在许多方面,ember正在构建rails和其他MVC框架使用的约定。通常,MVC应用程序围绕一组代表域模型的对象构建。例如:

User, Post, Comment, etc.

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

UserController, UserView, UserPresenter, UserMailer, UserTemplate, UserView

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