Node.js_23_라우터분리_넌적스

‍박태우·2023년 11월 5일
0

1. Router 객체로 라우터 분리 하기

(app.use, url 있는 것 == 라우터

라우터가 수백개 이상인 경우 app.js 파일이 엄청 길어질 수 있다.)

  • 사용해보기

1) index.js를 아래같은 디렉토리에 만듬

2) 만든 인덱스를 아래와 같이 불러온다. (app.js 에서)

3) app.use 와 합쳐준다.

-> 이러면 위의 app.use / 와 index.js의 router.get / 가 합쳐저서 그냥 get / 라우터가 되는 것이다.

(분리 했다가 합쳐주는 느낌, 쓸 때만 사용하자는 느낌이다.)


4) user.js 를 만들고 적용해보기

그리고 아래와 같이 같은 방법으로 user 라우터를 가져와서 사용가능

(앞부분에 app.use의 /user 뒤에 router.get의 / 가 붙어서 최종적으로

/user/경로의 요청이 된다.)


-> 모든 라우터 뒤에 (걸리는 라우터가 없으면 404 미들웨어가 실행)

(위와 같이 같은 경로인 경우 그룹화 가능, 주소를 먼저 쓴다.)


(미들웨어의 req 객체에 들어있는 메서드들

req.get (헤더이름) => content type 같은것이 가져와짐 )

(위에서 res.end()는 express 가 아닌 http 메소드 이지만 이거는 써도 괜찮음

위에서 res.set()을 res.setHeader()로도 쓸 수 있다.)

-> res.redirec(주소) 사용 예시

(아래와 같이 위 코드를 express에서 줄여 쓸 수 있다. 그리고 쿠키는 따로 설정해 줘야 한다.)

=> 이 부분은 한 라우터에서 한번만 써야 한다. 응답은 한번만 보내야 한다.


2. 넌적스 템플릿 엔진

(npm으로 설치)

(여기서, nunjuck.configuer를 사용하여 views 폴더가 넌적스 파일들의 위치가 된다.

(위와같이 넌적스는 html 문법을 따른다. {{}} 인 부분이 express로 바뀐다.

set을 통해서 변수 지정도 가능

| safe 를 통해 <>가 이스케이프 되지 않도록 할 수 있음 (보안성 관련 이슈) )

(for in 문법을 이용하여 반복문 구현 그리고 endfor로 종료

loop.index라는 자체적으로 제공하는 것이 있다. index를 따로 선언하지 않고)

(if 문도 endif를 통해 나가줘야 한다. else if 가 아니라 elif 가 있음

(다른 넌적스 파일을 가져올 수 있음)

(위의 block, endblock 을 이용하면 그 사이에 body.html 이 들어가게 된다. 위 경우 이름을 달리하여 두 block을 다른 위치에 넣음)


(위와 같이 error.status를 설정하여 다음 error로 라우팅 되게 할 수 있다.

new Error 부분이 message로 아래에 들어가게 된다.

err 안에 status, stack 이 같이 들어 있다.

위의 경우 production 즉 배포용이 아닌경우 err를 넣어준다는 의미이다.
배포 중인 상태면 빈 객체로 넣어준다. (status 와 stack 을 안보이게 함, 에러메시지 관리를 통해 보안 강화)

message를 꾸밀 수도 있다.)

profile
잘 부탁드립니다.

0개의 댓글