Ember.js 在新的路由器API中,路由和资源之间有什么区别?

Ember.js 在新的路由器API中,路由和资源之间有什么区别?,ember.js,ember-router,Ember.js,Ember Router,我试图理解路线和资源之间的区别。我对Resource的理解有助于将Route对象的子路径设置为另一个Route对象。但当我想到路径也会出现默认名称映射时,就不清楚了 请注意,从1.11.0开始,此.route仅用于代替此.resource。资料来源:* 请看一下这个以获得详细的解释 这是对这篇文章的粗略总结(我做了一些修改): 自从改变了资源和路线之后,很多人 对两者的含义以及它们如何影响命名感到困惑。 区别在于: 资源-一个事物(一个模型) 路线-与事物有关的东西 这意味着使用路由和资源的

我试图理解
路线
资源
之间的区别。我对
Resource
的理解有助于将
Route
对象的子路径设置为另一个
Route
对象。但当我想到路径也会出现默认名称映射时,就不清楚了

请注意,从1.11.0开始,
此.route
仅用于代替
此.resource
。资料来源:*

请看一下这个以获得详细的解释

这是对这篇文章的粗略总结(我做了一些修改):

自从改变了资源和路线之后,很多人 对两者的含义以及它们如何影响命名感到困惑。 区别在于:

  • 资源-一个事物(一个模型)
  • 路线-与事物有关的东西
这意味着使用路由和资源的路由器可能如下所示:

App.Router.map(function() {
  this.resource("posts", { path: "/" }, function() {
    this.route("new", { path: "/new" });
  });
  this.route("another", { path: "/another" });
});
这将导致创建/使用以下路由:

  • PostsRoute、PostsController、PostsView
  • PostsIndexRoute、PostsIndexController、PostsIndexView
  • PostsNewRoute、PostsNewController、PostsNewView
  • 另一条路线、另一个控制器、另一个视图
正如我们从这个示例中看到的,资源影响正在使用/创建的控制器、路由和视图的命名(“新”路由被视为从属于“POST”资源)。引用原始来源(我修改了它,因为正如Patrick M在评论中正确指出的那样,它令人恼火):

这意味着,无论何时创建一个资源,它都将创建一个全新的资源 命名空间。该名称空间以 资源和所有子路由都将插入其中

更新:更复杂的嵌套资源示例

考虑以下具有多个嵌套资源的更复杂示例:

App.Router.map(function() {
  this.resource("posts", { path: "/" }, function() {
    this.route("new", { path: "/new" });
    this.resource("comments", { path: "/comments" }, function() {
      this.route("new", { path: "/new" });
    });
  });
  this.route("another", { path: "/another" });
});
在本例中,资源
注释
创建一个全新的名称空间。这意味着在这种情况下产生的路由如下如您所见,comments资源的路由、控制器和视图没有以父路由的名称作为前缀。这意味着将资源嵌套在另一个资源中会重置名称空间(=创建新名称空间)

  • PostsRoute、PostsController、PostsView
  • PostsIndexRoute、PostsIndexController、PostsIndexView
  • PostsNewRoute、PostsNewController、PostsNewView
  • CommentsRoute、CommentsController、CommentsView
  • CommentsNewRoute、CommentsNewController、CommentsNewView
  • 另一条路线、另一个控制器、另一个视图

此行为也在。

中进行了解释。这在余烬指南中应该更清楚。一开始我肯定被这个概念弄糊涂了。一篇优秀文章的精彩总结。但是你最后的一句话没有意义:
这个名称空间将有一个“which[…]
是什么意思?这只是路线|控制器|视图的占位符吗?嘿,帕特里克,谢谢你指出这一点。我再也找不到线索了。因此,我添加了更复杂的带有嵌套资源的示例。我认为这一引文指的是这种情况,这一点更加清楚。谢谢你的额外示例,mavilein。你能详细说明一下你的示例和这个之间的区别吗:
App.Router.map(function(){this.route(“posts”),{path:/”},function(){this.route(“new”);this.route(“comments”},function(){this.route(“new”);});this.route(“other”),{path:“/另一个”});});