Node.js + Express : 경로 대 컨트롤러


100

Node.js와 Express를 처음 접한 저는 두 가지 개념, 경로 대 컨트롤러가 겹치는 것처럼 보이는 것을 이해하려고합니다.

간단한 예제를 보았습니다. app.js + route / *, 이것은 필요한 다양한 요청을 라우팅하기에 충분할 것 같습니다.

그러나 나는 또한 사람들이 컨트롤러 사용에 대해 이야기하고 있으며 일부는보다 공식적인 MVC 모델 (???)을 의미합니다.

누군가가이 미스터리를 해결하도록 도와 줄 수 있고 Node.js + Express 프레임 워크에서 컨트롤러를 설정하는 좋은 예가 있다면 좋을 것입니다!

감사,

답변:


129

Express (및 일반적으로 Node)의 멋진 점 중 하나는 사용자에 대한 많은 의견을 강요하지 않는다는 것입니다. 단점 중 하나는 당신에 대한 의견을 강요하지 않는다는 것입니다. 따라서 귀하는 이러한 의견 (패턴)을 스스로 설정할 수 있습니다 (그리고 필수입니다!).

Express의 경우 확실히 MVC 패턴을 사용할 수 있으며, 원한다면 라우트 핸들러가 확실히 컨트롤러의 역할을 수행 할 수 있지만 그렇게 설정해야합니다. 좋은 예는 라는 Express 예제 폴더 에서 찾을 수 있습니다 mvc. 를 보면 디렉토리의 lib/boot.js각 파일을 요구하도록 예제를 설정 controllers하고 컨트롤러에서 생성 된 메서드의 이름에 따라 즉시 Express 경로를 생성하는 방법을 볼 수 있습니다.


2
이 꽤 현명한 대답 의 첫 번째 단락은 두 용어 사이에 좋은 설명 / 구분을 제공합니다.
Frank Nocke

1

경로 폴더 만 있거나 둘 다 가질 수 있습니다. 예를 들어, 일부 경로 / 경로 (예 : / user / : id)를 설정하고 Get, Post, Put / Update, Delete 등에 연결 한 다음 경로 폴더에 연결합니다.

const subController = require('./../controllers/subController');

Router.use('/subs/:id);

Router
 .route('subs/:id');
 .get(
 subController.getSub
 .patch(
 subController.updateSub
 );

그런 다음 컨트롤러 폴더에서 :

exports.getSub = (req, res, next) => {
  req.params.id = req.users.id;
};

뭔가를 만들기 위해서. 컨트롤러 폴더없이 프로젝트를 수행했고 모든 로직을 한 곳에 배치했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.