Node.js/Node.js 공식문서

Node.js 공식문서 - Node.js 에 대한 소개

코딩크리처 2024. 9. 14. 22:26

제목 : Node.js 에 대한 소개


Node.js 자바스크립트 런타임 환경을 갖춘 오픈 소스이며, 크로스 플랫폼입니다.

이는 어떤 유형의 프로젝트에 대해서도 매우 유명한 도구입니다.


Node.js 는 브라우저 바깥에서 구글 크롬의 핵심인 V8 자바스크립트 엔진 으로 구동됩니다.

이는 Node.js 가 매우 성능이 좋아지게 해 줍니다.

Google Chrome 엔진 V8 을 브라우저 바깥에서도 적용시켜,

성능을 해결했다는 의미로 받아들일 수 있다.

Node.js 앱은 단일 프로세스로 실행되며,

모든 요청에 대해 새로운 쓰레드(Thread) 를 생성하지 않습니다.

Node.js 는 표준 라이브러리에서 비동기적 입출력 우선순위 집합을 제공하는데,

이는 자바스크립트 코드가 블로킹 되는 것을 방지합니다.

그리고 일반적으로 Node.js 에서 작성된 라이브러리들은 논블로킹 패러다임을 사용하여 작성되었으며,

블로킹 하는 행동을 표준이 아니라, 예외로 처리합니다.

Node.js 환경은 기본적으로 블로킹을 프로그래밍 표준으로 처리하지 않고, 예외로 처리한다는 의미이다.


Node.js 가 네트워크를 읽거나, DB 혹은 파일시스템에 접근하는 것 처럼,

I/O (Input/Output) 처럼 수행 될 때,

Node.js 는 쓰레드를 막거나, CPU 사이클을 기다리게 하여 낭비하는 것 대신,

응답이 온다면 operation 을 다시 시작합니다.


이러한 행동은 Node.js 가 단일 서버로 수천 개의 연결을 다룰 수 있게 해 주며,

상당한 버그를 일으킬 수 있는 쓰레드 동시 관리를 도입하지 않고도 다룰 수 있습니다.

애초에 쓰레드 블로킹을 표준 에러가 아닌, 프로그램 에러로 처리해 버리니,

Node.js 에서 제공하는 비동기적 라이브러리로 쓰레드를 관리하여,

리소스 순위를 직접 처리할 필요가 없다는 것이다.


Node.js 는 독특한 장점을 가지고 있는데,

이는 수천만의 프론트엔드 개발자들이 브라우저를 위해 자바스크립트 를 작성하고 있으며,

게다가 현재는 서버 사이드에서도 자바스크립트 로 작성 할 수 있기 때문입니다.

따라서, 서버 사이드를 구현하기 위해 완벽하게 다른 언어를 배울 필요가 없습니다.


Node.js 에서는 새로운 ECMAScript 표준을 문제 없이 사용 할 수 있으며,

당신은 모든 유저들이 브라우저를 업데이트 하기를 기다릴 필요가 없습니다.

노드 버전이 바뀜에 따라서, 당신이 어떤 ECMAScript(js) 를 사용할 건지 결정하는 것은 당신의 책임입니다.

또한 Node.js 와 최신 버전 플래그를 실행시켜 특정 실험적인 기능들을 사용 할 수 있습니다.


An Example Node.js Application - Node.js 어플리케이션 예제


Node.js 의 가장 흔한 Hello World 예제는 웹 서버 입니다 :

CJS :

const { createServer } = require("node:http");

// MJS 라면
// import { createServer } from "node:http";

const hostname = "127.0.0.1";
const port = 3000;

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

server.listen(port, hostname, () => {
    console.log(`서버가 현재 http://${hostname}:${port} 에도 구동되고 있습니다.`);
})

위의 코드 스니펫을 실행하기 위해서,

server.js 파일로서 이 코드를 저장하고, 터미널에 node server.js 라고 입력하세요.

만약 당신이 mjs 버전의 코드를 사용한다면,

server.mjs 로서 저장하고, 터미널에 node server.mjs 로 실행하세요.


이 코드는 처음에 http 모듈을 포함하고 있습니다.


Node.js 는 환상적인 스탠다드 라이브러리 를 가지고 있으며, 네트워크에 대한 최고 수준의 지원을 포함합니다.

httpcreateServer() 메서드는 새로운 HTTP 서버 를 생성하고 이를 반환합니다.

http 모듈은 Node.js 에서 지원하고 있는 기본 모듈이다.


서버는 지정된 porthost name 위에서 요청 받기로 설정됩니다.

서버가 준비되었을 때, 콜백 함수는 불러지며 서버가 구동중이라는 것을 알립니다.

console.log(`서버가 현재 http://${hostname}:${port} 에도 구동되고 있습니다.`);


언제든 새로운 요청이 받아들여지면,

request 이벤트가 call 되며, 두 가지의 객체를 제공합니다 :

  • Request : http.IncomingMessage 객체
  • Response : http.ServerResponse 객체

이러한 두 가지 객체들은 HTTP 콜을 다루는데 중요합니다.


첫 번째 (Request) 는 요청 세부사항을 제공합니다.

위의 간단한 예제는 request 를 사용하지는 않지만,

당신은 요청 헤더와 요청 데이터를 접근 할 수 있습니다.


두 번째는 호출한 사람에게 데이터를 반환하는 데 사용됩니다.


이 경우에는 :

res.statusCode = 200;

우리는 statusCode 속성을 200으로 설정하여 성공적인 응답이라는 것을 가르킬 수 있습니다.


또한 내부 컨텐츠 타입 헤더도 설정 할 수 있습니다 :

res.setHeader("Content-Type", "text/plain");

그리고 응답을 종료하면서, end() 메서드와 함께 인수를 전달하여 콘텐츠를 추가 할 수 있습니다 :

res.end("Hello World\n");