快速中间件,添加更多中间件和路由

时间:2020-10-21 02:50:06

标签: javascript node.js express middleware

我有一个看起来像这样的Node / Express应用程序:

app.use(foo)
...
app.get('/foo/bar', ...)
...
app.get('/index', ...)

我想提取中间件和路由,以便现在可以执行以下操作:

app.use(myMiddlewareAndRoutes)
...
app.get('/index', ...)

以便myMiddlewareAndRoutes添加中间件foo和属于它的路由'/foo/bar'

我该怎么做?

2 个答案:

答案 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