๐Ÿ“ Node.js ๊ธฐ์ดˆ ๊ฐ•์˜

jadecoยท2025๋…„ 3์›” 10์ผ

1. Node.js ์†Œ๊ฐœ ๐ŸŒ

Node.js๋Š” Chrome์˜ V8 JavaScript ์—”์ง„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์„œ๋ฒ„ ์‚ฌ์ด๋“œ JavaScript ๋Ÿฐํƒ€์ž„์ž…๋‹ˆ๋‹ค.
์ฃผ์š” ํŠน์ง•์€ ๋น„๋™๊ธฐ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ, ๋น ๋ฅธ ์„ฑ๋Šฅ์„ ์ž๋ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ณ ์„ฑ๋Šฅ์˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Node.js๋Š” JavaScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„ ์ธก ๊ฐœ๋ฐœ์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ฃผ๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ํ”„๋ก ํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ ๋ชจ๋‘์— JavaScript๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


2. Node.js ์„ค์น˜ ๐Ÿ’ป

Node.js๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค:
1. Node.js ๊ณต์‹ ์›น์‚ฌ์ดํŠธ(https://nodejs.org/)์— ์ ‘์†ํ•ฉ๋‹ˆ๋‹ค.
2. LTS ๋ฒ„์ „(Long Term Support)์„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
3. ๋‹ค์šด๋กœ๋“œํ•œ ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜์—ฌ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
4. ์„ค์น˜ ํ›„, ํ„ฐ๋ฏธ๋„์„ ์—ด๊ณ  ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ ์„ค์น˜ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค:

node -v
npm -v

Node.js์™€ npm(ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž)์˜ ๋ฒ„์ „ ์ •๋ณด๊ฐ€ ์ถœ๋ ฅ๋˜๋ฉด ์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.


3. Node.js ์‚ฌ์šฉํ•˜๊ธฐ ๐Ÿš€

npm (Node Package Manager) ๐Ÿ“ฆ

npm์€ Node.js์˜ ๊ณต์‹ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋กœ, ๋‹ค์–‘ํ•œ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ๋ชจ๋“ˆ์„ ์‰ฝ๊ฒŒ ์„ค์น˜ํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • npm ์ดˆ๊ธฐํ™”:
    ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ npm init ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, package.json ํŒŒ์ผ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์€ ํ”„๋กœ์ ํŠธ์˜ ์˜์กด์„ฑ ๋ฐ ์„ค์ • ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํŒจํ‚ค์ง€ ์„ค์น˜:
    ์˜ˆ๋ฅผ ๋“ค์–ด, express๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค:

    npm install express
  • ์ „์—ญ ํŒจํ‚ค์ง€ ์„ค์น˜:
    ๊ธ€๋กœ๋ฒŒํ•˜๊ฒŒ ์„ค์น˜ํ•˜์—ฌ ์‹œ์Šคํ…œ ์–ด๋””์„œ๋‚˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด nodemon์„ ์ „์—ญ์œผ๋กœ ์„ค์น˜ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:

    npm install -g nodemon

4. Node.js ๋ชจ๋“ˆ ์‹œ์Šคํ…œ ์ดํ•ด ๐Ÿงฉ

Node.js์—์„œ๋Š” ๋ชจ๋“ˆํ™”๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ๋ฅผ ๋‚˜๋ˆ„๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“ˆ ์‹œ์Šคํ…œ์—์„œ require์™€ import ๐Ÿ“š

Node.js์—์„œ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์€ ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ๊ตฌ์กฐํ™”๋ฅผ ๋„์™€์ค๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด require์™€ import๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋‘ ๊ฐ€์ง€๋Š” ๋น„์Šทํ•œ ์—ญํ• ์„ ํ•˜์ง€๋งŒ, ์‚ฌ์šฉ ๋ฐฉ๋ฒ•๊ณผ ๋™์ž‘ ๋ฐฉ์‹์— ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

1. require (CommonJS ๋ชจ๋“ˆ ์‹œ์Šคํ…œ) ๐Ÿ”„

require๋Š” Node.js์—์„œ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. Node.js๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ CommonJS ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํŠน์ง•

  • ๋™๊ธฐ์ (Synchronous): require๋Š” ๋ชจ๋“ˆ์„ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ ๊ทธ ๋ชจ๋“ˆ์ด ์™„์ „ํžˆ ๋กœ๋“œ๋  ๋•Œ๊นŒ์ง€ ์ฝ”๋“œ ์‹คํ–‰์„ ๋ฉˆ์ถฅ๋‹ˆ๋‹ค.
  • ํŒŒ์ผ ๊ฒฝ๋กœ: require๋Š” ์ƒ๋Œ€ ๊ฒฝ๋กœ(./, ../) ๋˜๋Š” ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Node.js ์ „์šฉ: ๊ธฐ๋ณธ์ ์œผ๋กœ Node.js ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์—์„œ๋Š” ๋™์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์˜ˆ์‹œ

  1. ๋ชจ๋“ˆ ๊ฐ€์ ธ์˜ค๊ธฐ:

    • ์™ธ๋ถ€ ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•
      const fs = require('fs'); // ํŒŒ์ผ ์‹œ์Šคํ…œ ๋ชจ๋“ˆ
    • ๋‚ด๋ถ€ ๋ชจ๋“ˆ(ํŒŒ์ผ)์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•
      const greet = require('./greet'); // greet.js ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ค๊ธฐ
  2. ๋ชจ๋“ˆ ๋‚ด๋ณด๋‚ด๊ธฐ:
    module.exports๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ํŒŒ์ผ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ธฐ๋Šฅ์„ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค.

    // greet.js
    module.exports = function() {
      console.log('Hello, Node.js!');
    };
    // main.js
    const greet = require('./greet');
    greet();

2. import (ESM ๋ชจ๋“ˆ ์‹œ์Šคํ…œ) ๐Ÿ“ฆ

import๋Š” ES6(ECMAScript 2015)์—์„œ ๋„์ž…๋œ ์ตœ์‹  ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์œผ๋กœ, ์ตœ์‹  JavaScript์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. Node.js๋Š” ECMAScript ๋ชจ๋“ˆ(ESM)์„ ์ง€์›ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ES6 import/export ๊ตฌ๋ฌธ์€ ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ๊ณผ Node.js ๋ชจ๋‘์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ํŠน์ง•

  • ๋น„๋™๊ธฐ์ (Asynchronous): import๋Š” ๋ชจ๋“ˆ์„ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํŒŒ์ผ ํ™•์žฅ์ž: import๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” .js์™€ ๊ฐ™์€ ํŒŒ์ผ ํ™•์žฅ์ž๋ฅผ ๋ช…์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ธŒ๋ผ์šฐ์ €์™€ Node.js์—์„œ ํ˜ธํ™˜: import๋Š” ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์—์„œ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, Node.js์—์„œ๋„ ESM์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์˜ˆ์‹œ

  1. ๋ชจ๋“ˆ ๊ฐ€์ ธ์˜ค๊ธฐ:

    • ์™ธ๋ถ€ ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•

      import fs from 'fs'; // ํŒŒ์ผ ์‹œ์Šคํ…œ ๋ชจ๋“ˆ
    • ๋‚ด๋ถ€ ๋ชจ๋“ˆ(ํŒŒ์ผ)์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•

      import greet from './greet.js'; // greet.js ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ค๊ธฐ
  2. ๋ชจ๋“ˆ ๋‚ด๋ณด๋‚ด๊ธฐ:
    export ๋˜๋Š” export default๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“ˆ์„ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค.

    • Named Export: ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์š”์†Œ๋ฅผ ๋‚ด๋ณด๋‚ผ ๋•Œ

      // greet.js
      export function greet() {
        console.log('Hello, Node.js!');
      }
      
      export function farewell() {
        console.log('Goodbye, Node.js!');
      }
      // main.js
      import { greet, farewell } from './greet.js';
      greet();
      farewell();
    • Default Export: ํ•˜๋‚˜์˜ ๊ธฐ๋ณธ์ ์ธ ์š”์†Œ๋งŒ ๋‚ด๋ณด๋‚ผ ๋•Œ

      // greet.js
      export default function() {
        console.log('Hello, Node.js!');
      }
      // main.js
      import greet from './greet.js';
      greet();

์ฃผ์š” ์ฐจ์ด์  ๐Ÿง

ํŠน์„ฑrequire (CommonJS)import (ESM)
๋™๊ธฐ/๋น„๋™๊ธฐ๋™๊ธฐ์ (Synchronous)๋น„๋™๊ธฐ์ (Asynchronous)
์‚ฌ์šฉ ์œ„์น˜Node.js ์ „์šฉ๋ธŒ๋ผ์šฐ์ € ๋ฐ Node.js์—์„œ ๋ชจ๋‘ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
๊ตฌ๋ฌธconst something = require('module')import something from 'module'
ํŒŒ์ผ ํ™•์žฅ์žํ™•์žฅ์ž ์ƒ๋žต ๊ฐ€๋Šฅ (require('./file'))ํ™•์žฅ์ž ๋ช…์‹œ ํ•„์ˆ˜ (import './file.js')
๋ชจ๋“ˆ ๋‚ด๋ณด๋‚ด๊ธฐmodule.exports = ...export / export default
๋™์ž‘ ๋ฐฉ์‹๋™์ ์œผ๋กœ ๋กœ๋“œ์ •์ ์œผ๋กœ ๋กœ๋“œ

import ์‚ฌ์šฉํ•˜๊ธฐ โš™๏ธ

Node.js์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ CommonJS ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ES ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด package.json์—์„œ "type": "module"์„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

{
  "type": "module"
}

์ด๋ ‡๊ฒŒ ์„ค์ •ํ•˜๋ฉด, import/export ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


5. Node.js ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ ๐Ÿ“š

Node.js์—๋Š” ๋‹ค์–‘ํ•œ ๋‚ด์žฅ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ค‘ ๋ช‡ ๊ฐ€์ง€ ์œ ์šฉํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • Express: ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์ธ ์›น ์„œ๋ฒ„๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

    npm install express
    const express = require('express');
    const app = express();
    
    app.get('/', (req, res) => {
      res.send('Hello World!');
    });
    
    app.listen(3000, () => {
      console.log('Server running on port 3000');
    });
  • Mongoose: MongoDB์™€ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ์œ ์šฉํ•œ ODM(Object Data Modeling) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.

    npm install mongoose
  • Axios: HTTP ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ธ๊ธฐ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.

    npm install axios

์ด์ œ Node.js์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ์„ค์น˜ ๋ฐ ์‚ฌ์šฉ๋ฒ•์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. ์‹ค์Šต์„ ํ†ตํ•ด ๋”์šฑ ์ต์ˆ™ํ•ด์ง€์„ธ์š”! ๐Ÿš€

profile
๋‹น์‹ ๋„์š”

0๊ฐœ์˜ ๋Œ“๊ธ€