在ExpressJS中,您可以注册路由模块:
app.use(app.router);
你创建了这样的路线:
app.get('/user/:id', function(req, res){
...
});
问题是,如果您在注册路由模块之前创建路由,那么它会立即为您注册。
对我来说,这是一个问题,因为我正在构建一个为自己创建路径的NPM模块。现在,它具有在没有用户知识的情况下注册路由模块的不幸副作用。因此,如果他们在注册静态文件处理程序之前碰巧需要我的模块,那么它会破坏所有内容。
所以我的问题是,如何在不自动注册路由模块的情况下注册路由?
答案 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);