可管理的嵌套路线...
我想要一个在Express 4中以一种非常易于管理的方式进行嵌套路由的特定示例,这是“ Express中的嵌套路由”的顶部搜索结果。这是一个API,其中包含许多路由,例如需要分解。
./index.js:
var app = require('express')();
// anything beginning with "/api" will go into this
app.use('/api', require('./routes/api'));
app.listen(3000);
./routes/api/index.js:
var router = require('express').Router();
// split up route handling
router.use('/products', require('./products'));
router.use('/categories', require('./categories'));
// etc.
module.exports = router;
./routes/api/products.js:
var router = require('express').Router();
// api/products
router.get('/', function(req, res) {
res.json({ products: [] });
});
// api/products/:id
router.get('/:id', function(req, res) {
res.json({ id: req.params.id });
});
module.exports = router;
文件夹结构中的嵌套示例
我注意到有关“嵌套文件夹结构”的一些评论。这暗示了这一点,但并不明显,因此我添加了以下部分。这是route的嵌套文件夹结构的特定示例。
index.js
/api
index.js
/admin
index.js
/users
index.js
list.js
/permissions
index.js
list.js
这是节点如何工作的更一般的示例。如果您在文件夹中使用“ index.js”,与在目录默认情况下在网页中使用“ index.html”的方式类似,则可以轻松地基于递归来扩展组织,而无需更改代码的入口点。“ index.js”是在目录中使用require时访问的默认文档。
index.js的内容
const express = require('express');
const router = express.Router();
router.use('/api', require('./api'));
module.exports = router;
/api/index.js的内容
const express = require('express');
const router = express.Router();
router.use('/admin', require('./admin'));
module.exports = router;
/api/admin/index.js的内容
const express = require('express');
const router = express.Router();
router.use('/users', require('./users'));
router.use('/permissions', require('./permissions'));
module.exports = router;
/api/admin/users/index.js的内容
const express = require('express');
const router = express.Router();
router.get('/', require('./list'));
module.exports = router;
这里可能存在一些DRY问题,但确实可以很好地封装关注点。
仅供参考,最近我进入了动作英雄的行列,发现它具有完整的功能(包括套接字和任务),更像是一个真正的框架,将REST范式翻转了过来。您可能应该赤裸裸地检查一下。