[JS]NodeJS 기본 개념 정리

배채윤·2021년 1월 23일
1

Node.js 기본 내용 정리 문서.

NodeJS란?

Chrome V8 Javascript 엔진으로 빌드된 Javascript 런타임

  • 런타임: 특정 언어로 만든 프로그램을 실행할 수 있는 환경.

기존에는 자바스크립트 프로그램을 웹 브라우저 위에서만 실행할 수 있었음. 브라우저에 내장된 JS 런타임을 이용한 것임. NodeJS는 이러한 JS 런타임을 통해 브라우저 밖에서도 JS 프로그램을 실행할 수 있도록함.

사용 용도에 따른 Node

서버로서의 노드

노드는 기본적으로 싱글스레드 + 논 블로킹 모델을 사용한다.(JS 언어의 특성)

  • 장점 : 서버는 기본적으로 I/O 작업이 많음. Node는 I/O 처리 성능이 좋음.
  • 단점 : 싱글 스레드 모델이기 때문에 CPU 연산이 많은 작업에는 적합하지 않다.

따라서 NodeJS는 개수는 많지만 크기는 작은 데이터를 실시간으로 주고받는 태스크가 많은 서버로 사용하기에 적합하다.

서버 외의 노드

  • 웹 : Angular, React ...
  • 모바일 : React Native ...
  • 데스크탑 어플리케이션 : Electron

웹서버 만들기

const http = require('http'); // http module 불러오기
http.createServer((req, res) => {
    res.writeHead(200,{ 'Content-Type': 'text/html; charset=utf-8' });
    res.write('<h1>Hello Node!</h1>');
    res.end('<p>Hello Server!</p>');
})
    .listen(8080, () => {
        console.log("8080");
    })
  • http.createServer : 웹서버 실행 함수. 인수로 요청에 대한 콜백 함수를 넣을 수 있다.
  • res.writeHead : 응답에 대한 정보(응답 헤더)를 기록하는 메소드.
  • res.write : 응답 body 부분. 클라이언트로 보낼 데이터를 기록한다.
  • res.end : 응답을 종료하는 메소드. 인수가 있다면 그 데이터도 body로 보내고 종료함.
const { fstat } = require('fs');
const http = require('http');
const fs = require('fs').promises;
http.createServer(async (req, res) => {
    try {
        const data = await fs.readFile('./test.html');
        res.writeHead(200,{ 'Content-Type': 'text/html; charset=utf-8' });
        res.write('<h1>Hello Node!</h1>');
        res.end('<p>Hello Server!</p>');
    } catch (err) {
        console.error(err);
        res.writeHead(500, { 'Content-Type': 'text/html; charset=utf-8' })
        res.end(err.message);
    }
})
    .listen(8080, () => {
        console.log("8080");
    })
profile
새로운 기술을 테스트하고 적용해보는 걸 좋아하는 서버 개발자

0개의 댓글