티스토리 뷰

728x90
반응형

앞서 살펴본 봐와 같이 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

 

npm-package.json | npm Documentation

DESCRIPTION This document is all you need to know about what’s required in your package.json file. It must be actual JSON, not just a JavaScript object literal. A lot of the behavior described in this document is affected by the config settings described

docs.npmjs.com

"package.json은 NodeJS의 package를 관리하는 매니저 설정 파일이다. 각 Node Module을 어떻게 활용할 것인지 정의하고, 재사용성을 높이기 위한 방안을 관리한다."

728x90
반응형