我有一个看起来像这样的Node / Express应用程序:
app.use(foo)
...
app.get('/foo/bar', ...)
...
app.get('/index', ...)
我想提取中间件和路由,以便现在可以执行以下操作:
app.use(myMiddlewareAndRoutes)
...
app.get('/index', ...)
以便myMiddlewareAndRoutes
添加中间件foo
和属于它的路由'/foo/bar'
。
答案 0 :(得分:1)
var express = require('express')
var router = express.Router()
// middleware that is specific to this router
router.use(function timeLog (req, res, next) {
console.log('Time: ', Date.now())
next()
})
// define the home page route
router.get('/', function (req, res) {
res.send('Birds home page')
})
// define the about route
router.get('/about', function (req, res) {
res.send('About birds')
})
module.exports = router
var birds = require('./birds')
// ...
app.use('/birds', birds)
//or if you need it on root level
app.use('/', birds)
答案 1 :(得分:0)
您要创建一个单独的Router
对象,然后使用.use()
函数将其添加为中间件。
在foo.js
文件中,我正在创建一个新路由器并将其导出:
foo.js
const { Router } = require('express');
const router = Router();
router.get('/bar', (req, res, next) => {
return res.send('bar');
});
module.exports = router;
然后将其导入index.js
文件中以将其添加为中间件:
index.js
const express = require('express');
const foo = require('./foo.js');
const app = express();
app.use('/foo', foo);
app.get('/index', ...)
现在,您在foo.js
中定义的每条路线将使用/foo
前缀,例如/foo/bar
。