NodeJS
: 크롬의 자바스크립트 인터프리터 엔진인 V8을 기반으로 만들어진 JavaScript 런타임
: 이벤트 기반, 논 블로킹 I/O 모델을 사용하여 가볍고 효율적임
: npm 패키지 생태계를 통해 세계 최대의 오픈소스 라이브러리를 사용할 수 있음
※ 유의사항
: Node는 웹서버가 아니며, JavaScript 애플리케이션이 서버로써 기능하기 위한
도구를 제공하는 프레임워크임
NodeJS의 장점
- 비동기 I/O 처리 / 이벤트 위주
: NodeJS 기반의 라이브러리는 모두 비동기 방식이며, 실행을 멈추지 않음 (non-blocking)
: API가 실행되었을 때 데이터를 반환할 때까지 기다리지 않고 다음 API를 실행
- 빠른속도
: V8 엔진을 사용하여 빠른 코드 실행 제공
- 단일 쓰레드 / 뛰어난 확장성
: 이벤트 루프와 함께 단일 쓰레드 모델을 사용
: 이벤트 메커니즘은 서버가 멈추지 않고 반응하도록 해주어 서버의 확장성을 키워줌
: Apache 같은 경우 요청 처리를 위해 제한된 쓰레드를 생성하지만
NodeJS는 쓰레드를 하나만 사용하고 비동기로 처리하기 때문에 더 많은 요청을 처리할 수 있음
- 노 버퍼링
: 데이터를 chunk로 출력하기 때문에 데이터 버퍼링이 없음
> chunk란 데이터 스트림을 분할한 조각을 의미
- 라이센스
: MIT License
- NPM과 활발한 개발자 커뮤니티
NodeJS를 사용하면 좋은 분야
: 입출력이 잦은 애플리케이션
: 데이터 스트리밍 애플리케이션
: 데이터를 실시간으로 다루는 애플리케이션
: JSON API 기반 애플리케이션
: 실글페이지 애플리케이션
ExpressJS
: 웹 및 모바일 애플리케이션을 위한 기능을 제공하는 nodeJS 웹 애플리케이션 프레임워크
: 다양한 HTTP 유틸리티 메소드 및 미들웨어 제공
: 기본적인 웹 애플리케이션 기능의 레이어를 제공하여 성능이 좋음
: nodeJS 상에서 동작하며 가장 많이 사용되는 웹 애플리케이션 프레임워크
Express의 구조
- /bin/www
: http 모듈에 express 모듈을 연결하고 포트를 지정하는 부분
: env_node 라는 환경변수를 통해 콘솔 명령어 스크립트 작성
Express 모듈
- debug
: 콘솔에 로그를 남기는 모듈
- app.set('port', port)
: 서버가 실행될 포트 설정
: 키, 값 형태
- http.createServer
: 불러온 app 모듈을 콜백함수로 넣어 HTTP 서버 프로그램 생성
- listen
: 포트를 연결하고 서버를 실행
NodeJS 서버의 구조
- logger
: 서버의 로그를 남기는 미들웨어
- json
: JavaScript Object 형태를 제어하는 미들웨어
- cookieparser
: 브라우저 환경에 저장하는 쿠키를 read / write하여 제어 하기위한 파서
- 라우터
: Rest API로 많이 사용하며 웹 애플리케이션의 함수를 호출하고 클라이언트로 호출의 결과를 반환하기 위한 미들웨어
- 에러 핸들러
: 웹 애플리케이션에서 에러가 발생할 경우 이를 제어하는 미들웨어
- morgan
: 클라이언트의 요청에 대한 정보를 콘솔에 기록
Refference
'Programming > NodeJS' 카테고리의 다른 글
NodeJS 개발을 위한 Eslint 및 Prettier 적용 방법 (0) | 2022.07.09 |
---|---|
nodeJS에서 axios를 활용하여 SOAP 통신하기 (NodeJS Soap Client) (0) | 2022.05.29 |
[NodeJS] Youtube API v3 ESLint 기준에 맞춘 소스코드 (0) | 2022.04.30 |
노드 개발자라면 알아야할 NodeJS 라이브러리와 패키지 (0) | 2022.02.26 |
개발자가 알아야 하는 4가지 node.js 디자인 패턴 (0) | 2022.02.26 |