如何将多个网址路由到同一个控制器或视图以使用角度单页面应用?!
我能做到这一点,但我认为是丑陋的..
'/': {
view: 'homepage'
},
'/login': {
view: 'homepage'
},
'/register': {
view: 'homepage'
},
'/troller': {
view: 'homepage'
},
............
Run Code Online (Sandbox Code Playgroud)
我想要一些想法
['/','/login','/register','/troller'] -> view: 'homepage'
Run Code Online (Sandbox Code Playgroud)
还有其他问题,我可以使用正则表达式进行路由吗?
谢谢!!抱歉我的英语
您当前无法使用真正的正则表达式进行路由。但是,您可以使用通配符路由来执行您想要的操作(在一个视图中瞄准多个路由)。
将其放在对象的末尾/config/routes.js:
'/*': function(req, res, next) {
if (req.path.match(/\..*/g)) {
return next();
} else {
return res.view('homepage');
}
}
Run Code Online (Sandbox Code Playgroud)
与上面的路由之一不匹配的所有内容都将执行该函数。该函数首先检查您是否正在尝试访问静态资源(带有文件扩展名的内容,例如.js或.css),如果是,则继续匹配路由,以便 Express 静态中间件可以为该文件提供服务。否则,它将服务于您的视图。
更新
从 Sails v0.10.0-rc5 开始,正则表达式可用于定义路由。来自文档:
正则表达式路由的语法是:
"r|<regular expression string>|<comma-delimited list of param names>"
Run Code Online (Sandbox Code Playgroud)
这是字母“ r ”,后跟一个管道、一个不带分隔符的正则表达式字符串、另一个管道以及应映射到正则表达式中带括号的组的参数名称列表。例如:
"r|^/\d+/(\w+)/(\w+)$|foo,bar": "MessageController.myaction"
Run Code Online (Sandbox Code Playgroud)
将匹配/123/abc/def,运行myaction的操作MessageController并分别提供值abc和defasreq.param('foo')和req.param('bar')。
| 归档时间: |
|
| 查看次数: |
1265 次 |
| 最近记录: |