티스토리 뷰
앞서 살펴본 봐와 같이 Express EJS Sample Package를 생성하면 이미 3000 port 기반으로 Express Sample이 구성되어 있다. 이를 기반으로 NodeJS Sample Application을 구성해 보도록 하자.
Express Sample Application 구성 파악
본 Sample을 구성하는데 활용한 환경은 다음과 같다.
OS : Windows 10
IDE : VSCode
Express Mode : EJS
Express Sample Application을 기동하면 다음과 같은 화면을 볼 수 있다.
실제 구조를 살펴보기전 디렉토리 구조를 확인해 보고자 할 경우 다음을 참고한다.
WASPRO : NodeJS Express EJS Application 생성
그럼 본격적으로 express -e SampleApp으로 생성된 프로젝트의 기본 구조를 살펴보자.
app.js
app.js는 node module을 로딩하고 초기 initialize해야 하는 변수나 Object를 선언하고 Router에 유입이 이루어 지는 그 유입점의 역할을 하는 JavaScript이다.
1 ~ 5 line : Node Module Loading
7 ~ 8 line : Router Index Loading
13 ~ 14 line : view engine 관련 setup
16 ~ 20 line : logger, body parser, url encoded,cookieparser, static directory 등을 지정하는 env 환경 변수 구성
22 ~ 23 line : NodeJS로의 유입을 정의하는 Ingress Routing Rule
26 ~ 28 line : 404 error 처리
31 ~ 39 line : error 처리 handler 구현
41 line : express engine으로 기동하는 JavaScript임을 정의
여기서 1 ~5 line & 41 line에 정의 된 module을 사용하는 방법에 대한 이해가 필요한데 간단히 짚어보고 넘어가도록 하자.
NodeJS에서 모듈은 Java에서 표현하는 하나의 library에 대응하는 단위로 이해할 수 있다.
예를 들어 위 예제에서는 5개의 모듈을 로딩하고 있으며, express는 웹 http 개발을 위한 라이브러리를 제공해 주는 미들웨어라고 할 수 있다. express 모듈을 로딩함으로써 손쉽게 http 기반 웹 애플리케이션 개발을 진행할 수 있는 라이브러리를 제공받을 수 있다는 의미이다.
위 10 line에서 정의한 var app = express();를 통해 express를 정의하는 app이라는 Object를 생성하고 13 ~ 39 line까지 app에 set 또는 use를 통해 일부 객체의 정보를 변경하거나, 구성하고, 마지막 41 line에서 module.exports = app;을 통해 변경된 app 모듈을 다시 하나의 모듈로 반환하는 방법이라고 이해할 수 있다.
위와 같이 express 미들웨어를 로딩한 app(origin)을 기반으로 app.set, app.use를 통해 다양한 환경 구성 및 객체의 상태를 변경하고 app(new)를 다시 생성한다.
이후 app(new)를 사용하여 NodeJS는 express를 활용한 코딩을 진행할 수 있다.
물론 app.js는 그 이름이 app.js가 될 필요는 없다. node를 통해 기동하기 위한 JavaScripts의 이름을 지정하고 기동하면 되지만 대체로 그 이름은 app.js를 많이 사용하곤한다.
"app.js는 NodeJS의 유입점이다. Router의 유입점을 정의하고 주요 Router로 바인딩하기 위한 rule을 정의한다. 또한 다양한 환경 변수를 지정하고 NodeJS 서비스를 위한 객체의 상태를 설정하는 Management Configuration과 같은 역할을 한다."
package.json
package.json은 node module에 대한 dependencies를 정의하는 설정 파일이다.
2 ~ 3 line : package 별로 독립적인 관리 정책을 위해 name을 지정하고, 변경되는 dependencies에 따라 version을 관리해야 한다.
4 line : "private": true로 package.json을 설정해 두면, publish 명령을 거부하게된다. 개인적으로 관리하는 테스트 파일 등을 publish하지 않도록 방지하는 방법이다.
5 ~ 9 line : script 항목은 패키지의 수명주기 동안 다양한 시간에 실행되는 스크립트 명령을 관리하는 항목이다. 위와 같이 servestart, servestop, start 등으로 개발/운영 환경을 구분하여 환경변수를 실행하거나, install 환경 구분 등을 관리할 수 있다. 위와 같이 pm2-dev는 개발환경에서 관리하는 script로 활용하고, node는 운영환경 기반 테스트 방식으로 테스트할 수 있다.
10 ~ 20 line : dependencies는 노드 패키지를 관리하는 Package Manager이다. 패키지 publishing에 포함될 의존성 모듈을 정의한다. 패키지 개발 시 사용될 의존성 모듈을 따로 관리하고자 할 경우 devDependencies를 사용하며 여기에 정의된 모듈은 배포시 포함되지 않는다. bundledDependencies는 패키지를 로컬에 보존하기 위한 번들 관리 모듈을 정의한다. 패키지 모듈을 폐쇄망 환경에서 사용하거나, 개발자 배포 환경에 일괄로 배포하는데 활용하기 용이하다.
자세한 내용은 다음을 참고한다.
https://docs.npmjs.com/files/package.json
"package.json은 NodeJS의 package를 관리하는 매니저 설정 파일이다. 각 Node Module을 어떻게 활용할 것인지 정의하고, 재사용성을 높이기 위한 방안을 관리한다."
'⑤ 개발, 데이터베이스 > ⓝ NodeJS' 카테고리의 다른 글
[Node.JS] NPM (Node Package Manager) (1) | 2020.07.14 |
---|---|
[Node.JS] Sample Application (Hello World) (1) | 2020.07.14 |
[Node.JS] 기동 및 모니터링 (0) | 2020.07.13 |
[Node.JS] Express EJS Application 생성 (0) | 2020.07.13 |
[Node.JS] VSCode GitHub 연동하기 (0) | 2020.07.12 |
- Total
- Today
- Yesterday
- MSA
- JEUS7
- node.js
- kubernetes
- nodejs
- 쿠버네티스
- SA
- 마이크로서비스
- JBoss
- Docker
- git
- Architecture
- SWA
- k8s
- aws
- API Gateway
- JEUS6
- 오픈스택
- OpenStack
- openstack token issue
- 마이크로서비스 아키텍처
- apache
- aa
- 아키텍처
- TA
- Da
- jeus
- webtob
- openstack tenant
- wildfly
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |