在不注册路由模块的情况下创建ExpressJS路由

时间:2013-09-19 01:02:05

标签: node.js express

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

app.use(app.router);

你创建了这样的路线:

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

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

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

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

1 个答案:

答案 0 :(得分: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);