Node.js 기초 (Node.js Basics)

Node.js 기초 (Node.js Basics)

Node.js는 자바스크립트를 브라우저 밖에서 실행할 수 있게 해주는 런타임이다. 비동기 I/O와 이벤트 기반 아키텍처로 서버 개발에 강력한 도구로 자리잡았다. 이번에는 Node.js의 기본부터 심화까지 코드와 함께 자세히 풀어보려고 한다.


Node.js를 잘 다루면 서버와 백엔드 로직을 효율적으로 구현할 수 있다. 하나씩 단계별로 알아보자.


Node.js 시작하기

Node.js를 사용하려면 먼저 설치해야 한다. 설치 후 간단한 코드를 실행해보자:

// hello.js
console.log("안녕, Node.js!");

# 터미널에서 실행
node hello.js
// "안녕, Node.js!"

Node.js가 설치되어 있다면 node 명령어로 파일을 바로 실행할 수 있다.


1. 모듈 시스템

Node.js는 모듈로 코드를 분리해 관리한다. 기본 모듈을 사용해보자:

// math.js
function add(a, b) {
    return a + b;
}

module.exports = { add };

// main.js
const math = require("./math");
console.log(math.add(2, 3));
// 5

module.exports로 함수를 내보내고, require로 불러왔다.


2. 파일 읽고 쓰기

fs 모듈로 파일 시스템을 다룰 수 있다:

const fs = require("fs");

// 파일 쓰기
fs.writeFileSync("test.txt", "Hello, Node.js!");

// 파일 읽기
const data = fs.readFileSync("test.txt", "utf8");
console.log(data);
// "Hello, Node.js!"

동기 방식으로 파일을 읽고 썼다. 비동기 방식도 가능하다.


3. 비동기 처리

Node.js의 강점은 비동기 처리다. fs 모듈의 비동기 메서드를 사용해보자:

const fs = require("fs");

fs.readFile("test.txt", "utf8", (err, data) => {
    if (err) {
        console.log("에러: " + err);
        return;
    }
    console.log(data);
});
// "Hello, Node.js!"

콜백으로 비동기 작업 결과를 처리했다.


4. 간단한 서버 만들기

http 모듈로 웹 서버를 구축할 수 있다:

const http = require("http");

const server = http.createServer((req, res) => {
    res.writeHead(200, { "Content-Type": "text/plain" });
    res.end("안녕, Node.js 서버!");
});

server.listen(3000, () => {
    console.log("서버가 3000번 포트에서 실행 중");
});

3000번 포트에서 실행하면 브라우저에서 응답을 확인할 수 있다.


5. Express로 서버 개선

express를 사용하면 서버 개발이 더 간편해진다:

# 설치
npm install express

// app.js
const express = require("express");
const app = express();

app.get("/", (req, res) => {
    res.send("안녕, Express!");
});

app.listen(3000, () => {
    console.log("Express 서버가 3000번 포트에서 실행 중");
});

Express로 간단한 GET 요청을 처리하는 서버를 만들었다.


6. 미들웨어 사용

Express에서 미들웨어로 요청을 가공할 수 있다:

const express = require("express");
const app = express();

app.use((req, res, next) => {
    console.log("요청 시간: " + new Date());
    next();
});

app.get("/", (req, res) => {
    res.send("미들웨어 테스트");
});

app.listen(3000);

미들웨어로 요청 시 시간을 로그에 남기고 다음 단계로 넘어갔다.


7. REST API 구축

간단한 REST API를 만들어 보자:

const express = require("express");
const app = express();
app.use(express.json());

let items = ["사과", "바나나"];

app.get("/items", (req, res) => {
    res.json(items);
});

app.post("/items", (req, res) => {
    items.push(req.body.name);
    res.json(items);
});

app.listen(3000);

GET으로 리스트를 조회하고, POST로 새 항목을 추가했다.


8. 성능과 활용성

Node.js가 코드에 어떤 영향을 주는지 보자:

- 성능: 비동기 처리로 I/O 작업이 많은 환경에서 뛰어나다.

- 활용성: 자바스크립트로 풀스택 개발이 가능해진다.

비동기모듈 시스템이 Node.js의 핵심이다.


마무리

Node.js는 모듈, 비동기, 서버 구축을 통해 백엔드 개발을 단순화한다. 기본 파일 작업부터 REST API까지 다채롭게 활용할 수 있다.


+ Recent posts