티스토리 뷰
1) express 서버 사용해보기
- http 모듈로 웹 서버를 만들 때 가독성이 떨어지고 확장성이 떨어짐
- 프레임워크로 해결
- 대표적인 것은 express, Koa, Hapi
- 코드 관리도 용이하고 편의성이 많이 높아짐
- package.json 만들기
- nodemon이 소스 코드 변경시 서버를 재시작해준다.
- npm init
- npm i express
- npm i -D nodemon
- app.js: 서버 구동의 핵심 파일
- app.set('port', 포트)로 서버가 실행 될 포트 지정
- app.get('주소', 라우터)로 GET 요청이 올 때 어떤 동작을 할 지 지정
- app.listen('포트', 콜백)으로 몇 번 포트에서 서버를 실행 할 지 지정
2) express로 HTML 서빙하기
- app.js: 핵심 서버 스크립트
- public: 외부에서 접근 가능한 파일들 모음
- views: 템플릿 파일을 모아둠
- routes: 서버의 라우터와 로직을 모아둠
3) 미들웨어 사용하기
- 익스프레스는 미들웨어로 구성됨
- 요청과 응답의 중간에 위치
- 미들웨어는 req, res, next가 매개변수인 함수
4) 미들웨어 특성 이해하기
에러가 발생하면 에러 처리 미들웨어로
- err, req, res, next 까지 매개변수가 4개
- res.status 메서드로 HTTP 상태 코드를 지정 가능 (200)
5) next 활용법
next() -> next('route') -> next(error) //다음 미들웨어로, 다음 라우터로, 에러 핸들러로
- next를 주석 처리하면 응답이 전송되지 않음
- 다음 미들웨어로 넘어가지 않기 때문
- next에 인수로 값을 넣으면 에러 핸들러로 넘어감
6) morgan, bodyParser, cookieParser
* 서버로 들어온 요청과 응답을 기록해주는 미들웨어
- cookieParser: 요청 헤더의 쿠키를 해석해주는 미들웨어
7) static 미들웨어
* 정적인 파일들을 제공해주는 미들웨어
- 인수로 정적 파일 경로 제공
- 파일이 있을 때 fs.readFile로 읽을 수 없음
- 요청하는 파일 없으면 알아서 next를 호출해 다음 미들웨어로 넘어감
- 파일을 발견했다면 다음 미들웨어는 실행되지 않는다.
8) express-session 미들웨어: 세션 관리용
- 세션 쿠키에 대한 설정(secret: 쿠키 암호화, cookie: 세션 쿠키 옵션)
- resave: 요청 왔을 때 세션에 수정사항 없더라도 다시 저장할지 여부
- saveUninitialized: 세션에 저장할 내역이 없더라도 세션을 저장할지
- req.session.save로 수동 저장도 가능하지만 할 일 거의 없음
9) multer 사용하기
- form 태그의 enctype이 multipart/form-data인 경우
- multer 함수를 호출
- 실제 서버 운영 시에서는 서버 디스크 대신 S3 같은 스토리지 서비스에 저장하는 것이 좋다.
const multer = require('multer');
const upload = multer({
storage: multer.diskStorage({ //저장할 공간에 대한 정보
destination(req, file, done) { //저장할 경로를 done의 2번째 인수로 정하기
done(null, 'uploads/');
},
filename(req, file, done) {
const ext = path.extname(file.originalname);
done(null, path.basename(file.originalname, ext) + Date.now() + ext);
},
}),
limits: { fileSize: 5 * 1024 * 1024 },
});
10) dotenv 사용하기
11) 라우터 분리하기
12) pug 템플릿 엔진
- HTML의 정적인 단점을 개선
- 반복문, 조건문, 변수 등을 사용할 수 있다.
- 동적인 페이지 작성 가능
- PHP, JSP와 유사
13) 넌적스 템플릿 엔진
'Node.js' 카테고리의 다른 글
6. MongoDB (0) | 2023.04.06 |
---|---|
5. MySQL (0) | 2023.04.05 |
3. 패키지 매니저 (0) | 2023.04.05 |
2. http 모듈로 서버 만들기 (0) | 2023.04.05 |
1. 노드 기본 기능 익히기 (0) | 2023.04.04 |