Node.js 使用分区中的n个文件夹简化快速路由

Node.js 使用分区中的n个文件夹简化快速路由,node.js,express,Node.js,Express,我正在使用Express进行一些路由,但我找不到更有效的方法来实现这一点 例如,在初始化应用程序的节点脚本中,我需要声明每个路由,如下所示: // server.js app.get('/partials/:name', routes.partials); app.get('/partials/session/:name', routes.sessionpartials); 然后: // routes.js exports.partials = function (req, res)

我正在使用Express进行一些路由,但我找不到更有效的方法来实现这一点

例如,在初始化应用程序的节点脚本中,我需要声明每个路由,如下所示:

// server.js
app.get('/partials/:name', routes.partials);
app.get('/partials/session/:name', routes.sessionpartials);
然后:

// routes.js
    exports.partials = function (req, res) {
      var name = req.params.name;
      res.render('partials/' + name);
    };

    exports.sessionpartials = function (req, res) {
      var name = req.params.name;
      res.render('partials/session/' + name);
    };
exports.partials = function (req, res) {
  res.render(req.path.slice(1));
};
因此我可以访问
/partials
/partials/session
,但是如果我在
/partials
中创建另一个文件夹而不声明它,它将不可用


如何改进这一点?

如果您的所有URL路由和部分路径都是1:1关系,那么您可以这样做:

app.get('/partials/*', routes.partials);
然后:

// routes.js
    exports.partials = function (req, res) {
      var name = req.params.name;
      res.render('partials/' + name);
    };

    exports.sessionpartials = function (req, res) {
      var name = req.params.name;
      res.render('partials/session/' + name);
    };
exports.partials = function (req, res) {
  res.render(req.path.slice(1));
};

如果我需要在/partials/folder1/?中呈现.jade模板该怎么办?如果您导航到myapp.com/partials/folder/whatever,req.path将解析为/partials/folder/whatever,这可能会解析为您的jade模板的文件名和路径(实际上您需要调用slice()去掉第一个正斜杠,我已经更新了答案)。