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

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

app.use(app.router); 

你创build一个这样的路线:

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

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

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

所以我的问题是,如何注册一个路由而不自动注册路由模块?

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

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

相反,制作一个新的快速应用程序并导出:

 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);