Front/Node.js

Node.js 기본 개념과 특징

oodada 2024. 12. 9. 22:50

Node.js 기본 개념과 특징

Node.js란?

Node.js는 Chrome V8 JavaScript 엔진으로 구축된 JavaScript 런타임입니다. 이는 브라우저 밖에서도 JavaScript를 실행할 수 있게 해주는 환경입니다.

주요 개념과 특징

1. 모듈 시스템

Node.js의 모듈 시스템은 필요한 기능을 "블록"처럼 가져다 사용하는 구조입니다.

  • 요리시 레시피를 가져와 사용하는 것과 같아요.
  • 필요한 재료를 가져와 사용하고, 요리를 시작합니다.
// fs 모듈을 가져와 사용합니다
// 재료를 가져옵니다 (require)
const fs = require('fs');

// 요리를 시작합니다 (파일 생성)
fs.writeFileSync('example.txt', 'Hello, Node.js!');
console.log('파일이 생성되었습니다!');
  1. 비동기와 콜백

Node.js는 시간이 오래 걸리는 작업을 "대기"하지 않고, 작업이 끝나면 알려주는 방식입니다.

  • 음식점 홀직원은 한 명이지만, 주방에 요리사가 따로 있어요.
  • 직원은 주문을 받고 주방에 요리를 맡기고 다음 손님을 받을 수 있습니다.
// 음식점에 직원이 한명입니다 (단일 스레드)
console.log("직원: 1번 손님 주문 받기 시작");

// 주문을 주방(다른 작업자)에 넘깁니다 (비동기 작업)
setTimeout(() => {
    console.log('요리사: 1번 손님 요리 시작');
}, 2000); // 2초 뒤에 완료

// 직원은 기다리지 않고 다음 손님 받습니다
console.log("직원: 2번 손님 주문 받기 시작");

3. 이벤트 기반 프로그래밍

Node.js는 "어떤 일이 발생하면 처리"하는 방식을 채택하고 있습니다.

  • 음식점에서 손님이 오면 직원이 처리하는 방식과 같아요.
  • 손님이 오면 직원이 처리하고, 다음 손님이 오면 다시 처리합니다.
const button = document.querySelector('button');

// 클릭 이벤트를 처리하는 코드
button.addEventListener('click', () => {
    console.log('버튼이 클릭되었습니다!');
});

4. npm으로 패키지 사용하기

npm은 Node.js의 패키지 관리자로, 다른 개발자가 만든 유용한 도구를 가져다 쓸 수 있게 해줍니다.

  • 요리할 때, "소스 만들기" 대신 마트에서 이미 만들어진 소스를 사는 것과 같아요.
  • npm 패키지는 필요한 소스를 쉽게 가져다 쓸 수 있게 해줍니다.
npm install swiper
npm install axios

5. 파일 시스템 작업

Node.js는 fs 모듈을 사용해 파일을 읽고 쓰는 작업을 쉽게 할 수 있습니다.

  • 컴퓨터를 사용하는 것처럼, 파일을 만들고, 내용을 읽거나 쓸 수 있어요.
  • 예를 들어, "오늘의 일기장"을 작성하는 작업을 할 수 있습니다.
// fs 모듈을 가져와 사용합니다
const fs = require('fs');

// 파일 생성
// writeFile(파일명, 내용, 콜백함수)
fs.writeFile('diary.txt', '오늘 Node.js를 배웠다!', (err) => {
    if (err) throw err;
    console.log('일기가 저장되었습니다!');

    // 파일 읽기
    // readFile(파일명, 인코딩, 콜백함수)
    fs.readFile('diary.txt', 'utf8', (err, data) => {
        if (err) throw err;
        console.log('읽은 내용:', data);
    });
});

6. 웹 서버 만들기

Node.js는 http 모듈을 사용해 간단한 웹 서버를 만들 수 있습니다.

  • 가게를 열고 손님이 오면 주문을 받고 음식을 제공하는 것과 같아요.
// http 모듈을 가져와 사용합니다
const http = require('http');

// 웹 서버 생성
// createServer(요청, 응답)
const server = http.createServer((req, res) => {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('어서 오세요! Node.js 식당입니다!');
});

// 서버 실행
// listen(포트번호, 콜백함수)
server.listen(3000, () => {
    console.log('서버가 http://localhost:3000 에서 실행 중입니다.');
});
티스토리 친구하기