如何将多个网址路由到同一控制器或视图以使用有角度的单页应用?
我能做到这一点,但我觉得很丑..
'/': {
view: 'homepage'
},
'/login': {
view: 'homepage'
},
'/register': {
view: 'homepage'
},
'/troller': {
view: 'homepage'
},
............
我想要像
那样的想法['/','/login','/register','/troller'] -> view: 'homepage'
还有其他问题,我可以使用正则表达式进行路由吗?
THX !!抱歉我的英语。
答案 0 :(得分:4)
您目前无法使用真正的正则表达式进行路由。但是,您可以使用通配符路径来执行您想要的操作(在一个视图中瞄准多个路径)。
将它放在/config/routes.js
对象的末尾:
'/*': function(req, res, next) {
if (req.path.match(/\..*/g)) {
return next();
} else {
return res.view('homepage');
}
}
并且上面的其中一条路线不匹配的所有内容都将执行该功能。该函数首先检查您是否尝试访问静态资产(具有文件扩展名的内容,如.js
或.css
),如果是,则继续匹配路由,以便Express静态中间件可以服务器文件。否则,它将为您的视图提供服务。
<强>更新强>
从Sails v0.10.0-rc5开始,正则表达式可用于定义路由。来自the docs:
正则表达式路由的语法是:
"r|<regular expression string>|<comma-delimited list of param names>"
这是字母“ r ”,后跟管道,没有分隔符的正则表达式字符串,另一个管道以及应该映射到正则表达式中带括号的组的参数名称列表。例如:
"r|^/\d+/(\w+)/(\w+)$|foo,bar": "MessageController.myaction"
将匹配 / 123 / abc / def ,运行myaction
的{{1}}操作并提供值MessageController
和abc
作为{分别为{1}}和def
。
答案 1 :(得分:0)
您还可以使用|
运算符
'/' | '/login' | '/register' | '/troller': {
view: 'homepage'
}
答案 2 :(得分:0)
我不知道你的方法是否成功,但在我的脑海中将角度路由客户端映射到节点路由服务器端是误导性的。我对这两个库的单页面应用程序的方法是: