路由器在单页面应用程序中的作用是什么

时间:2013-03-18 08:55:52

标签: ember.js single-page-application

我是Ember-js的新手,我最近浏览了一些博客文章,还看到了Tom Dale介绍的Ember-js视频。

总结他们说新推出了Router Api,它是Ember-js发生的最好的事情,Router Api用于管理应用程序的状态,每个状态都用URL标识,现在用于单个页面应用程序在我们只使用一个URL,路由器的作用是什么,是否只有一个路由条目映射到'/'(索引)?如果是,那么我们失去了路由器api提供的优势吗?

1 个答案:

答案 0 :(得分:4)

  

现在对于单页面应用程序,我们只使用一个URL,路由器的作用是什么,只有一个路由条目映射到'/'(索引)?

通常,单个页面应用程序仍将使用该URL。例如,使用gmail时更改监视URL。因此,在这种情况下,单页面应用程序意味着浏览器在URL更改时不会获取新页面。与gmail一样,当用户导航到应用程序的各个部分时,典型的ember单页应用程序将更改URL。 ember路由器会自动处理这个问题。

  

如果是,那么我们失去了路由器api提供的优势吗?

如果你决定不使用网址,并且真的希望它一直保持“/”,你仍然可以使用路由器。只需将路由器的位置类型设置为“无”

即可

请参阅http://emberjs.com/guides/routing/specifying-the-location-api/

  

我理解这里的路由意味着管理状态,但是在任何时候用户都可以处于一组状态,比如拿用gmail,用户将处于登录状态并组成状态,如何管理存在于一起的多个状态? / p>

确定这是真的。 ember路由器基本上是一个状态图,其中路由(叶节点)嵌套在一定数量的资源下。因此,例如在gmail的情况下,只有登录用户可以处于撰写状态。

GMail网址:https://mail.google.com/mail/u/0/?shva=1#inbox

// Gmail Routes:
* /mail - the mail application
* /u/0 - connected account index 0 for the current user
* ?shva=1 - http://stackoverflow.com/questions/1692968/what-is-shva-in-gmails-url
* inbox - folder name

EmberMail版本:https://mail.ember.com/mail/u/0/inbox

// EmberMail Routes
this.resource('mail', { path: '/mail' }, function() {
  this.resource('currentUser', { path: '/u' }, function() {
    this.resource('account', { path: '/:account_id' }, function() {
      this.route('folder', { path: '/:folder_id' });
    });
  });
});
  

你能指点我一个广泛使用路由的示例应用程序吗?

我所知道的最好的例子是话语。请查看以下示例,了解大型余烬应用程序如何使用ember路由器: