【问题标题】:ExpressJS: require multiple files with app.use()?ExpressJS:需要多个带有 app.use() 的文件?
【发布时间】:2017-04-22 17:06:30
【问题描述】:

路由

app.use('/cms/', require('./routes/index.js'));
app.use('/cms/schools/', require('./routes/schools.js'));

路线

/cms/
/cms/schools/
/cms/schools/:schoolId/classes/:classId

目标:我想将./routes/schools.js 拆分为两个文件:schools.jsschools_classes.js,以便更好地了解情况。

问题:我想保留前缀路径/cms/schools/,但不知道如何正确拆分。

如何构建文件以达到预期目标? 提前致谢!

编辑 1: 我尝试了以下方法,但不起作用(重复的路由前缀):

app.use('/cms/', require('./routes/index.js'));
app.use('/cms/schools/', require('./routes/schools.js'));
app.use('/cms/schools/', require('./routes/schools_classes.js'));

【问题讨论】:

  • 你为什么使用required()d
  • @jfriend00 打错了(我没有复制代码),谢谢。
  • 如果你想把你的模块一分为二,那很好,但是只有被分割的模块应该导出路由处理程序,这是你require()的唯一模块。你可以在对方require()对方。

标签: javascript node.js express routing


【解决方案1】:

您可以使用快速路由器来做到这一点:

路线:

const schoolsRouter = require('./routes/schools');
app.use('/cms/schools', schoolsRouter)

./routes/schools/index.js:

const express = require('express');
const router = express.Router();

router.use('/',require('./schools _controller.js'));
router.use('/:schoolId/classes/:classId', require ('./schools_classes_controller.js'));

module.exports = router;

您可以在此处查看整个路由器文档:http://expressjs.com/en/4x/api.html#router

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-08
    • 2016-12-19
    • 2015-10-17
    • 2015-01-20
    • 1970-01-01
    • 2017-05-04
    相关资源
    最近更新 更多