Node.JS 시작하기

김정민·2022년 11월 23일
0

Node.js

목록 보기
1/1
post-thumbnail

Introduction


Chrome V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 환경(Runtime Environment)으로 주로 서버 사이드 애플리케이션 개발에 사용되는 소트프웨어 플랫폼이다.

Node.js는 브라우저 외부 환경에서 자바스크립트 애플리케이션 개발에 사용되며 이에 필요한 모듈, 파일 시스템, HTTP등 Built-in API를 제공한다.

Node.js 는 자바스크립트를 사용하여 개발한다.
Front-end, Back-end에서 자바스크립트를 사용할 수 있으며, 동형성은 별도의 언어 학습 시간을 단축해주는 장점이 있다.

  • Node.js는 Non-blocking I/O 와 단일 스레드 이벤트 루프를 통한 높은 Request 처리 성능을 가지고 있다.

  • DB로부터 대량의 데이터를 취득하여 웹페이지에 표시할 때, 일반적인 DB 처리에 대기시간(blocking)이 발생하기 때문에 웹페이지 표시가 지연되는 현상이 발생한다.

  • Node.js의 모든 API 비동기 방식으로 동작하여 Non-blocking I/O가 가능하고 단일 스레드 이벤트 루프 모델을 사용하여 보다 가벼운 환경에서도 높은 Request 처리 성능을 가지고 있다.

  • 데이터를 실시간 처리하여 자주 I/O가 발생하는 SPA(Single Page Application) 적합 하지만, CPU 사용률이 높은 애플리케이션에는 권장하지 않는다.

  • Node.js는 Socket.io라는 실시간 통신을 실현하는 라이브러리 사용할 수 있어서 대량의 데이터 처리와 실시간 통신을 구현할 수 기능을 모두 갖추고 있다.


HTTP Server

Node.js 는 http 서버 모듈을 내장하고 있으므로, 아파치와 같은 별도의 웹서버를 설치할 필요가 없다

//app.js
const http = require('http'); //모듈 import

http.createServer((request, reponse) => { // http 서버 객체 생성
	response.statuscode = 200;
    response.setHeader('Content-Type', 'text/plain);
    response,end('Hellow World');
   }).Listen(3000); // HTTP 서버 객체의 listen 메소드에 포트번호 3000 전달 
   
   console.log('Server running at http://127.0.0.1:3000/');

Node.js는 module 단위로 각 기능을 분할할 수 있다.
module은 파일과 1대1 관계를 가지며 하나의 모듈은 자신만의 독립적인 실행 영역(Scope)을 가지게 된다. 따라서 클라이언트 사이드 자바스크립트와 달리 전역 변수의 중복 문제가 발생하지 않는다.
모듈은 module.exports 또는 exports 객체를 통해 정의하고 외부로 공개 하며, 공개된 모듈은 require 함수를 이용하여 임포트 한다.

http 모듈의 createServer([requestListener]) 메소드를 사용하여 HTTP 서버 객체를 생성한다.
HTTP 서버 객체는 EventEmitter 클래스 상속한 것으로 request 이벤트가 발생하면, HTTP request를 처리하여 response를 반환하는 request Listener 함수를 호출한다.
이 request Listener 함수는 request와 response 객체를 전달받으며, HTTP request 이벤트가 발생할 때마다 한번씩 호출 된다.
createServer 메소드가 반환한 HTTP 서버 객체의 listen 메소드에 포트번호 3000 전달 하여 서버를 실행한다.

profile
우리 모두는 자신의 힘으로 발견한 내용을 가장 쉽게 익힌다.

0개의 댓글