可管理的嵌套路由...
我想要一个在express 4中以非常易于管理的方式执行嵌套路由的特定示例,这是“Express中的嵌套路由”的顶级搜索结果。例如,这是一个API,它将具有许多需要拆分的路由。
./索引.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;
文件夹结构中的嵌套示例
我注意到一些关于“嵌套文件夹结构”的评论。它暗示了这一点,但不明显,所以我添加了下面的部分。下面是路由的嵌套文件夹结构的特定示例。
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 时访问的默认文档。
索引内容.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问题,但它确实非常适合封装关注点。
仅供参考,最近我进入了actionhero,并发现它是功能齐全的w / sockets和任务,更像是一个真正的框架,一体化翻转了REST范式。你应该检查一下,而不是裸体w/快递。