0

我目前有一个有几个常规页面的路由对象,并且还想添加一个顶级路由,其中​​第一个参数是用户名。

routes : {
  '/'        : 'main',
  '/login'   : 'login',
  '/about'   : 'about',
  '/create'  : 'create',
  '/:username': 'getUser' //something like this
  '*actions' : 'defaultHandler'
}
  1. 我将如何实现这一目标?
  2. 添加用户名路由同时在没有找到页面或用户时回退操作是否是糟糕的设计?
4

2 回答 2

1

如果我理解正确,你就在那里。只需添加username作为getUser函数的参数:

getUser: function(username) { /* do stuff */ }

但是,有一个问题,因为您的最后两条路线都可以匹配几乎任何东西。为了识别用户,您可以使用前缀来区分用户路由与最终 splat 匹配的所有内容。像这样的东西就足够了:

routes : {
  // ...
  '/users/:username': 'getUser'
}
于 2012-04-13T02:49:02.773 回答
1

当您有一个名为“about”或“create”的用户时会发生什么?命名您的路线并避免问题:

routes : {
  '/'          : 'main',
  '/a/login'   : 'login', // "a" for "application"
  '/a/about'   : 'about',
  '/a/create'  : 'create',
  '/a/*actions': 'defaultHandler',
  '/:username' : 'getUser'
}

然后你只需要确保没有人有“a”作为用户名。如果您添加更多路线,这种方法还可以保护您免受未来冲突的影响。

于 2012-04-13T02:52:45.217 回答