| 구분 | 이름 | 정체 | 보통 함께 쓰는 것 | 주 용도 |
|---|---|---|---|---|
| 언어 | JavaScript | 브라우저·서버 어디서나 쓰는 스크립트 언어 | – | 전반적 웹 개발 전반 |
| 언어(타입 시스템) | TypeScript | JS에 정적 타입을 더한 언어 | Node.js, React, NestJS, Next.js | 대규모/안정성 높은 개발 |
| 런타임 | Node.js | JS를 서버에서 돌리는 실행 환경 | Express, Nest, Prisma 등 | 백엔드·CLI·실시간 처리 |
| 서버 프레임워크(경량) | Express.js | 최소한만 제공하는 웹 서버 프레임워크 | Node.js, TS, Prisma | API 서버, 소규모/커스텀 자유도 |
| 서버 프레임워크(기업급) | NestJS | Angular 철학(모듈/DI) 기반의 구조화 프레임워크 | TypeScript, TypeORM/Prisma | 대규모 백엔드, 마이크로서비스 |
| 프론트 라이브러리 | React | UI를 컴포넌트로 만드는 뷰 라이브러리 | Vite/CRA, Redux/Zustand | SPA, 복잡한 프론트 UI |
| 풀스택/메타 프레임워크 | Next.js | React에 라우팅+SSR/SSG/ISR를 얹은 풀스택 | TypeScript, Prisma, Tailwind | SEO, 하이브리드 렌더링, 서버액션 |
기억 포인트:
- JavaScript/TypeScript는 “언어”, Node.js는 “실행 환경(런타임)”, Express/Nest는 “서버 프레임워크”, React는 “프론트 UI 라이브러리”, Next.js는 “React 기반 풀스택 프레임워크”입니다.
NestJS + TypeScript + 모듈화 + DI + 테스트
Node만으로 힘들면:
| 항목 | Express.js | NestJS |
|---|---|---|
| 철학 | 경량/자유도 | 규칙/일관성/테스트 용이 |
| 규모 | 소~중 | 중~대, 엔터프라이즈 |
| 학습 난이도 | 낮음 | 중간~높음 |
| 의존성 주입/모듈 | 수동 구성 | 내장(DI/Module/Decorator) |
| 마이크로서비스 | 직접 구성 | 공식 지원 패턴 풍부 |
| 추천 케이스 | 빠른 PoC, 커스텀 많은 API | 팀 협업, 복잡 도메인, 장기 운영 |
| 항목 | React(SPA) | Next.js |
|---|---|---|
| 렌더링 | 클라이언트 중심(CSR) | SSR/SSG/ISR + CSR 혼합 |
| SEO | 상대적으로 약함 | 강함(서버 렌더링) |
| 라우팅 | 직접 도입(react-router 등) | 파일 기반 내장 |
| 데이터 패칭 | 라이브러리 선택 | 서버 컴포넌트/서버액션/Route handlers |
| 권장 용도 | 사내툴/앱형 UI | 대부분의 웹 서비스(SEO/퍼포먼스 중요) |