您当前无法使用真正的正则表达式进行路由。但是,您可以使用通配符路由来执行您想要的操作(在一个视图中瞄准多个路由)。
把这个放在你的最后/config/routes.js
object:
'/*': function(req, res, next) {
if (req.path.match(/\..*/g)) {
return next();
} else {
return res.view('homepage');
}
}
与上面的路由之一不匹配的所有内容都将执行该函数。该函数首先检查您是否正在尝试访问静态资源(带有文件扩展名的内容,例如.js
or .css
),如果是,则继续匹配路由,以便 Express 静态中间件可以服务该文件。否则,它将服务于您的视图。
Update
从 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
的行动MessageController
并提供值abc
and def
as req.param('foo')
and req.param('bar')
, 分别。