[Node.js] 2일차
수업 내용 정리
- 뷰 엔진 추가(템플릿 추가)
- 공통 파일 작성
- dotenv 설정
- Database 생성
- mysql 연결
- 첫 모델 작성
- 제품 등록 페이지 작성
- 제품리스트 페이지 작성
- sequelize method 작성
Live reload
- html 파일 수정 일어날 때도, 서버 재시작
- "start": "nodemon -e js,html app.js"
템플릿 엔진을 선택하는 팁
- 템플릿 상속이 되는 템플릿 엔진인지
- '매크로' 같은 걸 사용할 수 있는 템플릿 엔진인지 (단순 반복 작업이 일어나는 곳에 재활용으로 쉽게 사용 가능)
매크로 함수 이용하는 방법(효과적) >> include로 가져오는 방법(변수 충돌 우려 있음)
- 템플릿 파일 안에서는 최대한 로직을 지양
express 프레임워크 사상(철학)
미들웨어 중심 프레임워크
ORM
- 객체 지향 프로그래밍 언어와 데이터베이스 간의 호환이 되도록 바꿔주는 프로그래밍 기법
- Sequelize
dotenv 설정
- .env 파일을 환경별(개발, 배타, 운영)로 어떻게 분리시키는지
- .env파일은 깃허브에 올릴 때 gitignore 시킴
- 특히, 깃허브에 오픈소스로 공개할 때, DB 계정 정보를 소스코드 내에 하드 코딩하지 않고, 외부 환경변수 파일에 작성하고,. gitignore을 통해 제외하면 안전
- .envcpy(설명서) 파일의 역할은 다른 개발자가 해당 파일을 보고 환경변수 파일( .env파일 )에다 어떤 환경변수를 설정하면 되는지 알 수 있도록 함
Database
- ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
- 로컬에서 데이터베이스와 싱크를 맞추고 있음 (모델을 가지고 테이블 자동 생성 등), 운영에서는 어떻게 가져갈 것인지
- ORM 이용해서 데이터베이스에 테이블 생성할 때, createdAt, updatedAt 칼럼을 자동 생성해줌
꿀 팁
- form에서 action 값을 비워두면, 하나의 form.html으로 등록/수정 페이지 둘 다 사용할 수 있음 (재활용 가능)
- RestAPI, Json으로 리턴할 때만
- 밸리데이션 체크는 모델에서 하도록 (한 곳에서 관리)