Node.js 알아보기

boyeonJ·2023년 10월 17일
1

FRONT

목록 보기
7/14

node.js란?

node.js는 자바스크립트 런타임 환경입니다. 브라우저 외부에서 Google Chrome의 핵심인 V8 JavaScript 엔진을 실행하므로 어디서든 높은 성능을 제공할 수 있습니다.

Node.js의 독특한 장점 중 하나는 브라우저에서 JavaScript를 작성하는 수백만 명의 프론트엔드 개발자가 이제 서버 측 코드(Java, Ruby, Python, PHP)를 클라이언트 측 코드와 별도의 언어를 배우지 않고 작성할 수 있다는 것입니다.

Node.js의 등장 이전에는 JavaScript가 주로 브라우저에서만 실행되는 언어였지만 Node.js의 등장으로 JavaScript는 서버 측 개발에서도 중요한 역할을 하게 되었습니다.

단일 프로세스, 논 블로킹(cpu 낭비 안해서 스레드 동시서 관리에 좋음)

TODO. 내부 동작 파악하기
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Event_loop


내장 HTTP 모듈로 간단하게 웹 사이트 만들기

Node.js의 내장 HTTP 모듈을 사용하여 서버를 생성하고, 서버가 HTTP 요청을 처리하고 응답하는 방법을 실습해봅시다.

const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

이벤트 주도 프로그래밍

node의 배경이 되는 철학은 이벤트 주도 프로그래밍입니다. 이 말은 어떤 이벤트가 발생할지, 어떻게 반응해야 할지 프로그래머가 이해하고 있어야 한다는 뜻입니다. 위의 예제에서의 이벤트는 http 요청입니다. createServer 매서드는 함수를 매개변수로 받는데, 이 함수는 http 요청이 일어날때 마다 호출됩니다.


브라우저와 다른점

1. 제공하는 API가 다르다.

  • 브라우저: DOM, document, window, cookies
  • node: node.js API

2. 환경 제어

Node.js를 사용할 것인지 지정할 수 있으며, 이는 매우 편리할 수 있습니다. 반면 웹 개발 시, 방문자가 사용하는 웹 브라우저를 선택할 수 없으므로 어떤 JavaScript 기능을 사용할 수 있는지에 영향을 줄 수 있습니다.

3. Javascript 언어 버전

Node.js를 사용하면 Node.js 버전에서 지원하는 최신 ECMAScript 기능(ES2015 이상)을 사용할 수 있습니다. JavaScript는 업데이트가 빠르지만 브라우저가 업그레이드되기까지 기다려야 할 수 있습니다.

4. 모듈 시스템

Node.js는 CommonJS 모듈 시스템과 ES 모듈 시스템(노드 v12부터)을 모두 지원합니다. 반면 브라우저에서는 ES 모듈 표준을 지원하기 시작했습니다. 이것은 Node.js에서 require() (CommonJS) 또는 import (ES 모듈)를 모두 사용할 수 있음을 의미하며, 브라우저에서는 import만 사용할 수 있음을 의미합니다.

모듈 시스템 더 알아보기
https://velog.io/@eunbinn/commonjs-is-hurting-javascript


자바와 node.js 비교하기

Node.js가 서버 측에서 JavaScript를 실행하는 것은 웹 애플리케이션을 구축하는 방식과 성능에 대한 접근 방식을 변경합니다. 다음은 Java 기반 서버와 Node.js를 비교한 상황을 설명합니다:

Java 서버 (서버에서 JavaScript를 실행하지 않는 경우):

  1. 클라이언트에서 요청이 들어오면 서버는 Java 또는 다른 서버 측 언어로 작성된 코드를 실행하여 HTML, CSS, JavaScript 등을 생성하고 응답으로 전송합니다.
  2. 클라이언트는 서버로부터 받은 HTML, CSS 및 JavaScript 파일을 처리하고 화면에 표시합니다.
  3. JavaScript 파일은 주로 클라이언트에서 실행되며, 브라우저의 JavaScript 엔진에서 실행됩니다.

Node.js 서버 (서버에서 JavaScript를 실행하는 경우):

  1. 클라이언트에서 요청이 들어오면 서버는 Node.js를 사용하여 서버 측에서 JavaScript 코드를 실행합니다.
  2. JavaScript 코드는 HTML, CSS 및 JavaScript 파일을 동적으로 생성하고, 이 결과를 클라이언트에게 응답으로 전송합니다.
  3. 클라이언트는 서버로부터 받은 HTML, CSS 및 JavaScript를 처리하고 화면에 표시합니다.
  4. JavaScript 파일 중 일부는 서버에서 실행됩니다. 이것은 서버 측 로직을 처리하거나 데이터베이스와 상호작용하는 데 사용됩니다.

Node.js를 사용하면 JavaScript를 서버 측에서 사용하고 실행할 수 있으며, 이를 통해 다음과 같은 이점이 있습니다:

  • 단일 언어 사용: 클라이언트와 서버 간에 동일한 언어를 사용할 수 있어 일관성을 유지하고 코드 재사용이 용이합니다.
  • 이벤트 기반 및 비동기 프로그래밍: Node.js는 이벤트 기반 아키텍처와 비동기 프로그래밍 모델을 사용하여 높은 성능을 제공합니다.
  • 실시간 웹 애플리케이션: Node.js는 웹소켓과 같은 실시간 기능을 지원하므로 실시간 통신이 필요한 애플리케이션을 쉽게 구현할 수 있습니다.

요약하면, Node.js를 사용하면 JavaScript를 서버 측에서 실행하고, 이를 통해 더 효율적인 개발 및 성능을 얻을 수 있습니다. 또한 브라우저로 JavaScript를 보내는 것은 마찬가지지만, Node.js를 사용하면 서버 측에서 JavaScript를 활용하여 서버 측 로직을 처리하고 클라이언트에 동적인 콘텐츠를 제공할 수 있습니다.


소켓을 통한 실시간 채팅 앱 만들기

https://umanking.github.io/2023/08/04/nodejs-socket-io-chat-app/


더 알아보기

https://nodejs.dev/en/learn/the-v8-javascript-engine/

0개의 댓글