Express.js는 Node.js를 기반으로 하는 웹 프레임워크에요.
해외는 잘 모르겠지만 국내에서는 Node로 개발했다고 하면, 대부분 Express 구조로 짜여있다고 봐도 무방해요.
많이들 Spring Framework와 Node를 비교하는데 사실 Spring은 Express와 비교하는게 맞아요.
Node는 프레임워크가 아니라 소프트웨어 플랫폼이라고 봐야하기 때문이죠.
이 글에서는 Express를 설치하고 제대로 동작하는지 테스트까지 해보려고 해요.
기본적으로 Node.js가 설치되어야 하기 때문에 설치되어있지 않다면 먼저 노드를 설치해주세요.
1. Express Generator 설치
npm install express-generator -g
전 이미 설치가 되어있어서 업데이트 형태로 패키지가 추가되었네요.
express -h
설치한 후에 제대로 설치가 되었는지 확인해볼게요.
express 커맨드를 이용해서 이제 우리는 express 골격을 손쉽게 생성할 수 있습니다.
2. Express 애플리케이션 설치
express hongtorial
아무 옵션 주지 않고 express를 설치할게요.
설치하고자 하는 경로에서 express {프로젝트명} 커멘드로 생성하겠습니다.
생성 후에 빨간색 박스친 부분을 이어서 그대로 쳐줄거에요.
3. Express 실행
위의 빨간색 박스친 명령어를 그대로 쳐주겠습니다.
앱 실행 시에 SET DEBUG=hongtorial:*은 애플리케이션을 디버깅할 때 사용해요.
모든 내부 로그를 확인할 수 있어서 개발할 때 유용하게 쓰시면 되요.
지금은 단순히 실행하고 테스트만 해볼거라 npm start만 쳐서 실행볼거에요.
4. 테스트
express-generator로 생성한 애플리케이션은 기본 포트가 3000이에요.
http://localhost:3000를 브라우저에 쳐서 제대로 동작하는지 확인해볼게요.
5. Express 구조
app.js
Express 애플리케이션의 설정을 담당하고 있다고 보면 되요.
./bin/www
실질적으로 애플리케이션을 실행시키는 파일이에요.
app.js의 설정을 가져와서 포트를 세팅하고 http 모듈로 서버를 생성해요.
입문하신 분들에게는 포트를 수정할 수 있다는 것만 알고 넘어가셔도 되요.
package.json, package-lock.json
노드 모듈을 관리하는 파일이에요. npm install 커맨드를 실행하면 package.json에 명시된 모듈들이 node_modules 폴더에 생성이 되요. 그리고 node_modules의 정보가 package-lock.json에 입력이 되요.
node_modules
노드 모듈이 설치된 경로에요.
public
정적 컨텐츠 파일을 모아둔 경로에요. app.js 파일에서 설정을 해요.
기본적인 설정은 '/static'으로 되어있지 않을거에요.
app.use('/static', express.static(path.join(__dirname, 'public')));
routes
라우팅을 모아둔 경로구요. app.js 파일에서 설정을 해요.
app.use('/', require('./routes/index'));
app.use('/users', require('./routes/users'));
views
어느 웹 프레임워크와 마찬가지로, Node 역시 뷰 템플릿 엔진을 사용할 수 있어요.
views 폴더는 이런 뷰 템플릿 파일을 모아둔 경로에요. 역시, app.js 파일에서 설정할 수 있어요..
default는 jade구요. express -h 커맨드를 실행하고 -v 옵션 설명을 보면 어떤 엔진을 사용할 수 있는지 알 수 있어요.
보통은 ejs를 제일 많이 쓰는 것 같더라구요.
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
'Backend > Node.js' 카테고리의 다른 글
Node.js 재시작 없이 반영, 자동 재시작 (Supervisor) (0) | 2020.04.01 |
---|---|
Node.js 코딩 패턴 (Routes-Controllers-Services 구조) (2) | 2019.11.13 |
Node.js MySQL Transaction(트랜잭션) (6) | 2019.11.13 |
Node.js MySQL 연동 (Express) (0) | 2019.11.11 |
NVM 설치, Node 버전 관리 (Windows / Mac) (2) | 2019.10.01 |