#37 #Node가 뭘까?

서영·2026년 4월 25일
post-thumbnail

1. Node.js란 무엇인가

Node.js는 자바스크립트를 브라우저 밖에서도 실행할 수 있게 해주는 런타임 환경이다.
즉, 라이브러리나 프레임워크가 아니라 자바스크립트 실행 환경이다.

과거(2008년 이전)에는 자바스크립트가 오직 브라우저 안에서만 실행되었다.
그 이유는 브라우저 안에 자바스크립트를 실행하는 엔진이 포함되어 있었기 때문이다.
그래서 브라우저가 없으면 자바스크립트 파일은 단순한 텍스트 파일에 불과했다.

2009년, 라이언 달(Ryan Dahl)이 구글 크롬의 엔진을 가져와
브라우저 없이도 자바스크립트를 실행할 수 있게 만들었고, Node가 만들어지게 되었다.


2. 왜 Node.js를 배우는가

실제 개발 환경에서는 서버를 사용하는 경우가 많다.
Node.js를 배우면 서버가 어떻게 동작하는지 이해할 수 있고,
최근 많이 사용되는 서버리스 방식도 더 쉽게 이해할 수 있다.


3. REPL이란 무엇인가

Node.js에는 REPL이라는 기능이 있다.

REPL은 다음의 과정을 반복한다.

  • Read: 입력을 읽는다
  • Eval: 코드를 실행한다
  • Print: 결과를 출력한다
  • Loop: 다시 입력을 기다린다

    이 구조는 브라우저의 콘솔창과 유사하며,
    Node 환경에서 자바스크립트를 바로 실행할 수 있게 해준다.

4. npm이란 무엇인가

npm은 Node Package Manager의 약자로, Node 생태계의 앱스토어라고 말 할 수 있다.
전세계 개발자들이 만든 JS 코드 묶음(=패키지)을 누구나 다운 받아 쓸 수 있게 하는 시스템이다

예시:

  • npm install: 패키지 설치
  • npm run dev: scripts에 정의된 명령 실행

5. package.json 파일

package.json은 프로젝트의 설정 정보를 담고 있는 파일이다.

{
  "name": "nodejs-day1",
  "version": "1.0.0",
  "type": "module",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  }
}

주요 항목:

  • name: 프로젝트 이름
  • version: 프로젝트 버전
  • type: module → ES Module(import/export) 사용 가능
  • main: 프로젝트의 시작 파일
  • scripts: npm run으로 실행할 명령어 정의

6. 모듈(Module)이란

모듈은 기능 단위로 나누어진 자바스크립트 파일이다.
다른 파일에서 가져와 사용할 수 있어 코드 재사용이 가능하다.
import


7. 모듈 방식의 변화

과거에는 CommonJS 방식이 사용되었다.

const math = require('./math');

이후 ES Module이 등장하면서 다음과 같이 사용할 수 있게 되었다.

import math from './math.js';

8. 코드 정리

1. date.js

import dayjs from "dayjs";

const now = dayjs();
console.log(now);
console.log(now.format("YYYY-MM-DD"));
console.log(now.format("YYYY년 MM월 DD일"));
console.log(now.format("YYYY-MM-DD HH:mm:ss"));

const nextWeek = now.add(7, "day");
console.log("일주일 후:", nextWeek.format("YYYY년 MM월 DD일"));

설명

dayjs 라이브러리를 사용하여 현재 날짜와 시간을 다루는 코드이다.

  • dayjs() : 현재 날짜와 시간을 가져온다.

  • format() : 날짜를 원하는 형식의 문자열로 변환한다.

    • "YYYY-MM-DD" → 2026-04-25 형태
    • "YYYY년 MM월 DD일" → 한국어 날짜 형식
    • "YYYY-MM-DD HH:mm:ss" → 날짜 + 시간
  • add(7, "day") : 현재 날짜에서 7일을 더해 일주일 후 날짜를 계산한다.


2. greeting.js

export default function (name) {
  return `안녕하세요, ${name}!`;
}

설명

사용자의 이름을 받아 인사말을 반환하는 함수이다.

  • export default : 이 파일의 기본 내보내기 값
  • name : 매개변수로 전달받은 이름
  • 템플릿 리터럴(`)을 사용하여 문자열을 생성

다른 파일에서 import할 때 이름을 자유롭게 지정할 수 있다.


3. math.js

export function add(a, b) {
  return a + b;
}

export function multiply(a, b) {
  return a * b;
}

export const PI = 3.14159;

설명

기본적인 수학 연산을 수행하는 함수들을 모아둔 모듈이다.

  • add(a, b) : 두 수를 더하는 함수
  • multiply(a, b) : 두 수를 곱하는 함수
  • PI : 원주율 상수

각 요소를 export하여 다른 파일에서 사용할 수 있도록 한다.


4. main.js

import { add, multiply, PI } from "./math.js";
import greet from "./greeting.js";

console.log(add(3, 5));
console.log(multiply(4, 7));
console.log(`원주율은 ${PI}입니다.`);
console.log(greet("서영"));

설명

여러 모듈을 불러와 실행하는 메인 파일이다.

  • import {} : 이름을 지정하여 가져오는 방식 (named export)
  • import greet : default export를 가져오는 방식
  • console.log() : 실행 결과를 출력

각 모듈에서 만든 기능을 실제로 사용하는 역할을 한다.


5. package.json

{
  "name": "nodejs-day1",
  "version": "1.0.0",
  "type": "module",
  "main": "index.js",
  "scripts": {
    "start": "node main.js",
    "dev": "node --watch main.js"
  },
  "dependencies": {
    "dayjs": "^1.11.20"
  }
}

설명

Node.js 프로젝트의 설정 정보를 담고 있는 파일이다.

  • type: "module"
    → ES Module(import/export) 문법 사용 가능

  • scripts

    • npm run start : main.js 실행
    • npm run dev : 파일 변경 시 자동 재실행
  • dependencies
    → 프로젝트에서 사용하는 외부 라이브러리 목록 (dayjs)


6. package-lock.json

설명

설치된 패키지들의 정확한 버전 정보를 기록하는 파일이다.

  • npm install 시 자동 생성
  • 동일한 환경에서 동일한 버전이 설치되도록 보장
  • 직접 수정하지 않고 npm이 관리함

9. 정리 + 오늘의 학습 목표

Node.js가 프레임워크가 아닌 런타임임을 자기 말로 설명할 수 있다

Node.js는 기능을 제공하는 도구(프레임워크)가 아니라
자바스크립트를 실행해주는 환경이다.

브라우저 없이도 JS 파일을 실행할 수 있게 해주며,
코드를 “돌리는 역할”을 한다는 점에서
라이브러리나 프레임워크와 다르다.

서버리스 방식과 전통 서버 방식의 차이를 구분할 수 있다

Node.js는 기능을 제공하는 도구(프레임워크)가 아니라
자바스크립트를 실행해주는 환경이다.

브라우저 없이도 JS 파일을 실행할 수 있게 해주며,
코드를 “돌리는 역할”을 한다는 점에서
라이브러리나 프레임워크와 다르다.

Node REPL 에서 자바 스크립트를 직접 실행할 수 있다.

Node REPL은 코드를 입력하면
즉시 실행하고 결과를 바로 보여주는 환경이다.

브라우저 콘솔처럼 동작하며,
간단한 테스트나 실습을 빠르게 할 때 유용하다.

10. 마무리

오늘은 Node의 탄생부터 기초를 조금 배워봤습니다!
더 열심히 공부해서 서버에 대해 높은 이해도를 가질 수 있도록 하겠습니다
그럼 우리 모두 즐코!

profile
시대를 따라가는 개발자가 아닌, 시대를 이끄는 개발자

0개의 댓글