Javascript Backbone.js路由器动态第一个参数
我目前有一个routes对象,它有几个常规页面,还想添加一个顶级route,其中第一个参数是用户名Javascript Backbone.js路由器动态第一个参数,javascript,node.js,backbone.js,router,Javascript,Node.js,Backbone.js,Router,我目前有一个routes对象,它有几个常规页面,还想添加一个顶级route,其中第一个参数是用户名 routes : { '/' : 'main', '/login' : 'login', '/about' : 'about', '/create' : 'create', '/:username': 'getUser' //something like this '*actions' : 'defaultHandler' } 我将如何实现这一点
routes : {
'/' : 'main',
'/login' : 'login',
'/about' : 'about',
'/create' : 'create',
'/:username': 'getUser' //something like this
'*actions' : 'defaultHandler'
}
如果我理解正确,你就在那里。只需添加
username
作为getUser
函数的参数:
getUser: function(username) { /* do stuff */ }
不过,有一个问题,因为您的最后两条路线几乎可以匹配任何东西。为了识别用户,可以使用前缀将用户路由与最终splat匹配的所有路由区分开来。这样的东西应该足够了:
routes : {
// ...
'/users/:username': 'getUser'
}
当您有一个名为“about”或“create”的用户时会发生什么?为路由命名名称空间并避免问题:
routes : {
'/' : 'main',
'/a/login' : 'login', // "a" for "application"
'/a/about' : 'about',
'/a/create' : 'create',
'/a/*actions': 'defaultHandler',
'/:username' : 'getUser'
}
然后你只需要确保没有人有“a”作为用户名。如果添加更多路由,此方法还可以防止将来发生冲突