快速路由器

时间:2016-02-26 15:22:39

标签: javascript node.js express

我正在开发NodeJS上的内容预处理器 我有3种具体的预处理方法:

  • 建立HTML
  • 建立xhtml
  • 构建xml

每种方式都彼此非常不同(不同的中间件) 所以我初始化了3个路由器:

  var xmlRouter = express.Router();
  var xhtmlRouter = express.Router();
  var htmlRouter = express.Router();

我只需要将每个请求发送到具体的路由器。 由于我的网址上的剥离效果,我无法使用app.use()来安装每个路由器:

// Binding
app.use(/\/\S*\.fast\.xml(?=$)/, xmlRouter);
app.use(/\/\S*\.xhtml(?=$)/, xhtmlRouter);
app.use([/\/\S*\.html(?=$)/, /\/\S*\/(?=$)/], htmlRouter);

我将丢失我需要进一步了解的网址。没办法

那有什么解决方案吗?

1 个答案:

答案 0 :(得分:2)

我现在无法对其进行测试,但由于它不符合评论,我在答案部分将其写在这里。

恕我直言,它应该这样工作:

var xmlRouter = express.Router();
app.use(function(req, res, next) {
   if( req.url.match(/\/\S*\.fast\.xml(?=$)/) ) {
      //if the url matches, pass the res, res, next to the xmlRouter
      xmlRouter.handle(req, res, next); 
      //if handle does not work try: xmlRouter(req, res, next)
   } else {
      //otherwise pass it to the next registered route
      next();
   }
});

//do the same for the other routers

这个示例中可能存在错误,因为我无法对其进行测试,但我认为这个想法应该是明确的。