可以在收听时添加到Node.js Express的路由吗?

San*_*den 14 javascript node.js express

显然,添加路由以表达的典型示例如下所示:

var express = require('express');
var app = express();

app.get('/', function(req, res){
  res.send('hello world');
});

app.listen(3000);
Run Code Online (Sandbox Code Playgroud)

显然,在大多数情况下,您知道get在服务器开始侦听之前存在路由.但是如果你想在服务器监听时动态创建新路由怎么办?换句话说,我想做类似以下的事情:

var express = require('express');
var app = express();

app.listen(3000, function () {
  app.get('/', function(req, res){
    res.send('hello world');
  });
});
Run Code Online (Sandbox Code Playgroud)

实际上,路由的回调显然是从某个远程源动态提取的.我已经测试了上面的代码,一切看起来都运行正常,但是,我希望得到确认,在我继续使用这种模式之前调用app.listen之后不会出现任何意外的副作用.

注意:为了澄清,我不知道当我编写server.js将要创建快速服务器的主文件时路由是什么(因此我无法在listen调用之前创建路由).在服务器启动/运行时,将从数据库中提取路由列表(及其各自的处理程序/回调函数).

Nat*_*ate 26

根据TJ(Express的作者),可以在运行时添加路由.

主要问题是路由按照添加顺序进行评估,因此在运行时添加的路由优先级低于先前添加的路由.根据您的API设计,这可能或不重要.