在 Express.js 中,如何设置通配符路由不匹配资源文件?

dyl*_*zed 5 javascript url-routing node.js express

我正在构建我的第一个真正的 Express.js 应用程序,但陷入了路由困境。

我正在启用静态托管:

app.use("/", express.static("public"));
Run Code Online (Sandbox Code Playgroud)

然后我有一个通配符路线:

router.get("/:page", function(req, res) {
    // do stuff
});
Run Code Online (Sandbox Code Playgroud)

该路线与我想要的“ /about”和“ ”等网址匹配。/contact但它似乎也在尝试匹配“ /style.css”和其他静态资源文件 - 这是不必要的。

如何使该通配符与资产文件不匹配?

dyl*_*zed 2

我发现的一个解决方案是搜索“.”。在查询中,然后如果找到则设置一个标志:

router.get("/:page", function(req, res) {
    if (req.render_view) res.render("index");
});

router.param("page", function(req, res, next, page) {

    // if request is not an asset file      
    if (page.indexOf(".") == -1) {

        // do stuff

        // set a flag
        req.render_view = true;

    }

    next(); 

});
Run Code Online (Sandbox Code Playgroud)

但我想找到一个更干净的解决方案,可能在 router.get 中使用正则表达式?