1

在 ExpressJS 中,您可以像这样注册路由模块:

app.use(app.router);

你创建一个这样的路线:

app.get('/user/:id', function(req, res){
  ...
});

问题是,如果您在注册路由模块之前创建路由,那么它会立即为您注册。

对我来说,这是一个问题,因为我正在构建一个为自己创建路由的 NPM 模块。现在,它有一个不幸的副作用,就是在用户不知情的情况下注册路由模块。因此,如果他们在注册静态文件处理程序之前碰巧需要我的模块,那么它会破坏一切。

所以我的问题是,如何在不自动注册路由模块的情况下注册路由?

4

1 回答 1

1

我想你的模块需要用户传入他们的应用程序,有点像这样:

module.exports = function(userApp) {
    userApp.get(...);
    ...
}

相反,制作一个新的 Express 应用程序并将其导出:

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

app.get(...);
...

module.exports = app;

而不是让用户将他们的应用程序传递给您,而是让他们use使用您导出的应用程序:

var express = require('express'),
    yourModule = require('your-module'),
    userApp = express();

userApp.use(express.static(...));
userApp.use(yourModule);
于 2013-09-19T04:10:10.100 回答