관리 가능한 중첩 경로 ...
Express 4에서 매우 관리 가능한 방식으로 중첩 된 경로를 수행하는 특정 예를 원했고 이것이 "표현 된 경로 중 가장 빠른"검색 결과입니다. 예를 들어 분해해야 할 경로가 많은 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.html"이 작동하는 방식과 유사하게 폴더에서 "index.js"를 사용하는 경우 진입 점을 코드로 변경하지 않고 재귀에 따라 조직을 쉽게 확장 할 수 있습니다. "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 문제가있을 수 있지만 문제를 캡슐화하는 데 적합합니다.
참고로, 최근에 나는 actionhero에 들어가서 REST 패러다임을 뒤집는 진정한 프레임 워크 올인원과 같은 완전한 기능의 w / 소켓 및 작업 인 것을 발견했습니다. 당신은 아마 명시 적 / 알몸으로 그것을 확인해야합니다.