๋ค์ด๋ฐ ์ผ์ค ํฉ๋นํ๋ค... ๊ฑฐ ์ํท๊ฐ๋ฆฌ๊ฒ ์ง์์ค์ผ ํ๋๊ฒ ์์ ์๋์ง;
์ด๋ฆ๋ค์ด ๊ฑฐ๊ธฐ์ ๊ฑฐ๊ธฐ๋ผ ํท๊ฐ๋ ค์ ์ ๋ฆฌํ๋ค
Node.js: JavaScript ๋ฐํ์ ํ๊ฒฝ
V8์์ง์ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ง JavaScript ๋ฐํ์ ํ๊ฒฝ์ผ๋ก, โญ์น ๋ธ๋ผ์ฐ์ ๋ฐ์์๋ JavaScript ์ฝ๋๋ฅผ ์คํํ ์ ์๋๋ก ํด์ค๋ค.
(V8์ด๋ ๊ตฌ๊ธ์ด ๊ฐ๋ฐํ JavaScript ์์ง์ผ๋ก C++๋ก ์์ฑ๋์๋ค๊ณ ํ๋ค.)

Node.js๊ฐ ๊ฐ๋ฐ๋ ๋์ ๊ฐ๋ฐ์๋ค์ JavaScript๋ฅผ ํตํด์ ๋ฐฑ์๋ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํด์ง ๊ฒ์ด๋ค. JavaScript๋ก ์๋ฒ๋ฅผ ๊ตฌ์ถํ๊ฑฐ๋, ๋ฐ์คํฌํฑ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋, ๋ชจ๋ฐ์ผ ์ฑ๋ ๊ฐ๋ฐํ ์ ์๊ฒ๋ ๊ฒ์ด๋ค.
๋ํ Node.js๋ ๋ค๋ฅธ ์ธ์ด(C, Java)์ฒ๋ผ ์ปดํจํฐ์์ ์ง์ ์ฝ๋๋ฅผ ์คํํ ์ ์๋ ๋ฐํ์ ํ๊ฒฝ์ ์ ๊ณตํ๋ค.
npm(Node Package Manager)
Node.js๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด 'npm'์ด๋ผ๋ ํค์๋๊ฐ ํ์ํ๋ค. npm(Node Package Manager)์ Node.js ์ํ๊ณ์ ํ์ค ํจํค์ง ๊ด๋ฆฌ์์ด๋ค.
Node.js ํ๊ฒฝ์์ ๊ฐ๋ฐ์ ํ ๋, ๊ฐ๋ฐ์๊ฐ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ฒ์๋ถํฐ ์ฝ๋ฉํ ํ์๋ ์๋ค. ๋์ ์ ์ธ๊ณ ๊ฐ๋ฐ์๋ค์ด ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋ ์๋ง์ ์๋ฐ์คํฌ๋ฆฝํธ ํจํค์ง(๋ชจ๋ ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ)๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ค. npm์ ์ด๋ฌํ ํจํค์ง๋ค์ ์ฝ๊ฒ ์ค์น, ์ ๋ฐ์ดํธ, ์ญ์ ๋ฐ ๊ด๋ฆฌ๋ฅผ ํ ์ ์๋๋ก ๋์์ฃผ๋ ํต์ฌ ๋๊ตฌ์ธ ๊ฒ์ด๋ค.
- ํจํค์ง ์ ์ฅ์ ์ ๊ทผ : npm์ ๊ณต๊ฐ ํจํค์ง ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ์ฌ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(ex. React ๋ฑ)๋ฅผ ๊ฒ์ํ๊ณ ๋ค์ด๋ก๋ํ๋ค.
- ์์กด์ฑ ๊ด๋ฆฌ: ํ๋ก์ ํธ์ ํ์ํ ํจํค์ง๋ค์ ๋ชฉ๋ก๊ณผ ๋ฒ์ ์ package.json์ด๋ผ๋ ํ์ผ์ ํตํด ๊ด๋ฆฌํ๊ณ , ํด๋น ํ์ผ์ ์ ์๋ ๋ชจ๋ ํจํค์ง๋ฅผ ์ค์นํ ์ ์๋ค.
- Node.js๋ฅผ ์ค์นํ๋ฉด npm์ด ์๋์ผ๋ก ์ค์น๋๋ค.
์ ๋ค๋ณด๋ Java์ Maven, gradle๊ณผ ๋งค์ฐ ์ ์ฌํ๋ค.
| npm(Node.js ๊ด๋ฆฌ์) | Maven | Gradle | |
| ๋ฐํ์ ํ๊ฒฝ | Node.js ํ๊ฒฝ | JVM(Java Virtual Machine) ํ๊ฒฝ | JVM(Java Virtual Machine) ํ๊ฒฝ |
| ํ์ค ํจํค์ง ๊ด๋ฆฌ์ | npm | Maven Repository (์ค์์ ์ฅ์) | Maven /JCenter/์์ฒด ์ ์ฅ์ |
| ์ค์ ํ์ผ | package.json | pom.xml | build.gradle |
| ์ค์ ์ธ์ด | JSON | XML | Groovy ๋๋ Kotlin DSL |
| ์ฃผ์ ์ญํ | ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์กด์ฑ ๊ด๋ฆฌ ๋ฐ ์คํฌ๋ฆฝํธ ์คํ | ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ด๋ฆฌ ๋ฐ ์ ํํ๋ ๋น๋ ๋ผ์ดํ์ฌ์ดํด ๊ด๋ฆฌ |
๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ด๋ฆฌ ๋ฐ ์ ์ฐํ๊ณ ๋น ๋ฅธ ๋น๋ ์๋ํ ๊ด๋ฆฌ |
https://nodejs.org/en/download
Node.js — Download Node.js®
Node.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.
nodejs.org
Node.js๋ ์์์ ๋ค์ด๋ฐ์ ์ ์๋ค. ์ฐธ๊ณ ๋ก ์ง์๋ฒ์งธ, LTS๋ผ๊ณ ์ฐ์ฌ ์๋ ๋ฒ์ ์ด ์ข๋ค๊ณ ํ๋ค...
npm์ ์ํ๋ ํจํค์ง๋ ์ฌ๊ธฐ์ ๋ค์ด๋ฐ์ ์ ์๋ค. React๋ ์๊ณ , Socket.IO๋ ์๊ณ ....
Next.js: ์น ํ๋ ์์ํฌ(์ฃผ๋ก ํ๋ก ํธ์๋)
Next.js๋ React๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ํ์คํ ์น ํ๋ ์์ํฌ์ด๋ค. ์ฃผ๋ก ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ์ฌ์ฉ๋์ง๋ง API ๋ผ์ฐํฐ ๊ธฐ๋ฅ๋ ํฌํจ๋์ด ์์ด ๋ฐฑ์๋๋ก ๋ก์ง์ ์ผ๋ถ ์ฒ๋ฆฌํ ์ ์๋ค. ํนํ ์๋ฒ ์ฌ์ดํธ ๋ ๋๋ง(SSR), ์ ์ ์ฌ์ดํธ ์์ฑ(SSG), ํ์ผ ์์คํ ๊ธฐ๋ฐ ๋ผ์ฐํ ๊ฐ์ ๊ธฐ๋ฅ๋ค์ ๋ด์ฅํ๊ณ ์์ด SEO(๊ฒ์ ์์ง ์ต์ ํ)์ ์ ๋ฆฌํ๊ณ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๋น๋ ์ ๋ชจ๋ ํ์ด์ง๋ฅผ ๋ฏธ๋ฆฌ ๋ ๋๋งํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์์๊ฒ ๊ต์ฅํ ๋นจ๋ฆฌ ๋ณด์ฌ์ SEO์ ์ข๋ค.
1. ํ๋ก ํธ์๋ + ์ผ๋ถ ๋ฐฑ์๋
๋ณดํต ์น ๊ฐ๋ฐ์ 1๏ธโฃํ๋ฉด ๋ณด์ฌ์ฃผ๊ธฐ(ํ๋ก ํธ์๋), 2๏ธโฃ๋ฐ์ดํฐ ์ฒ๋ฆฌ(๋ฐฑ์๋) 2๊ฐ์ง๋ก ๋๋๋ค. Next.js๋ ์ฃผ๋ก ํ๋ฉด ๋ณด์ฌ์ฃผ๊ธฐ์ฉ์ด์ง๋ง API ๋ผ์ฐํฐ๋ผ๋ ๊ธฐ๋ฅ์ด ์์ด์ ๊ฐ๋จํ ์๋ฒ ์ญํ ๋ ํ ์ ์๋ค.
ex) ์ฌ์ฉ์๊ฐ ๋ฒํผ์ ๋๋ ์ ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๋ ๊ธฐ๋ฅ: Next.js์์์ ์ฒ๋ฆฌ ๊ฐ๋ฅํ๋ค.
2. SSR(์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง) ↔ CSR(ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง, React์ ๋ฐฉ์)
SSR(์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง)์ด๋ ์๋ฒ๋ก๋ถํฐ ์์ ํ ๋ง๋ค์ด์ง htmlํ์ผ์ ๋ฐ์์ ํ๋ฉด์ ๊ทธ๋ฆฌ๋ ๋ฐฉ์์ ๋งํ๋ค.
React๋ ๋ธ๋ผ์ฐ์ ๊ฐ ํ๋ฉด์ ๋ค ๊ทธ๋ฆฐ ํ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ฃผ๋๋ฐ(=CSR ๋ฐฉ์), ์๋ React๋ ๋น htmlํ์ผ์ ๋ณด์ฌ์ฃผ๊ณ ๊ทธ ์ดํ resource๋ฅผ ๋ค์ด๋ฐ์์ ๋ณด์ฌ์ฃผ๊ธฐ ๋๋ฌธ์ ์ด๊ธฐ ๋ก๋ฉ ์๋๊ฐ ๋๋ฆฌ๊ณ , ๊ฒ์ ์์ง ์ต์ ํ ์ธก๋ฉด์์ ๋ถ๋ฆฌํ๋ค๋ ๋ฌธ์ ๊ฐ ์์๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ Next.js๊ฐ SSR๋ฐฉ์์ ๋์ ํ๋๋ฐ, SSR์ ์๋ฒ๊ฐ ๋จผ์ ํ๋ฉด์ ๋ง๋ค์ด์ ๋ณด๋ด์ฃผ๋ ๋ฐฉ์์ด๋ฏ๋ก ํ์ด๊ฐ ๋ ๋นจ๋ฆฌ ๋ณด์ด๊ณ , ๊ฒ์ ์์ง(Google ๋ฑ)์ด ๋ ์ ์ฝ์ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค.
- CSR (React ๋ฐฉ์)
๋ธ๋ผ์ฐ์ ๊ฐ HTML์ ๋ฐ๊ณ , JS๋ฅผ ๋ค์ด๋ก๋ํ ํ ํ๋ฉด์ ๊ทธ๋ฆผ → ์ด๊ธฐ ๋ก๋ฉ ๋๋ฆผ - SSR (Next.js ๋ฐฉ์)
์๋ฒ๊ฐ ์์ ํ ๋ ๋๋งํ HTML์ ๋ง๋ค์ด์ ๋ธ๋ผ์ฐ์ ์ ์ ์ก → ํ๋ฉด์ด ๋ ๋นจ๋ฆฌ ๋ธ
3. SSG(์ ์ ์ฌ์ดํธ ์์ฑ)
๋ฏธ๋ฆฌ ๋ชจ๋ ํ์ด์ง๋ฅผ ๋ง๋ค์ด๋๊ณ ๋ฐฐํฌ๋ฅผ ํ๊ธฐ ๋๋ฌธ์ ์๋ฒ ๋ถ๋ด์ด ์ค๊ณ ํ์ด์ง๊ฐ ์์ฒญ ๋นจ๋ฆฌ ์ด๋ฆฐ๋ค๋ ์ฅ์ ์ด ์๋ค.
4. ํ์ผ ์์คํ ๊ธฐ๋ฐ ๋ผ์ฐํ
Next.js์์ ํ์ผ ์ด๋ฆ์ด ๊ณง ์น ์ฃผ์์ด๋ค. ์๋ฅผ ๋ค์ด pages/about.js์ธ ๊ฒฝ์ฐ ๋ธ๋ผ์ฐ์ ์์ www.example.com/about ์ผ๋ก ๋ฐ๋ก ์๋ ์ฐ๊ฒฐ์ด ๋๊ธฐ ๋๋ฌธ์ ์ฃผ์๋ฅผ ๋ฐ๋ก ์ค์ ํ ํ์ ์์ด ํ์ผ๋ง ๋ง๋ค๋ฉด ๋๋ค.
NestJS: ๋ฐฑ์๋ ํ๋ ์์ํฌ
ํ๋ก ํธ์๋๋ React, Angular, Vue๋ฑ ํ๋ ์์ํฌ๊ฐ ๋ค์ํ์ง๋ง, ๋ฐฑ์๋๋ฅผ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ Node.js์ ๋์ ์์ ๋๋ก ์ธํด ์ํคํ ์ณ์ ๊ตฌ์ฑ์ด ์ด๋ ต๊ณ ํจ๊ณผ์ ์ด์ง ๋ชปํ๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Angular์ ์ํคํ ์ณ์์ ์๊ฐ์ ๋ฐ์ ๋ง๋ค์ด์ง ๊ฒ์ด NestJS์ด๋ค.
Node.js๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋ฐฑ์๋ ํ๋ ์์ํฌ๋ก, ๋ณต์กํ ๋ฐฑ์๋ ์ฝ๋๋ฅผ ๋ ๊น๋ํ ์ ๋ฆฌํ๊ณ ์ ์ง๋ณด์ํ๊ธฐ ์ฝ๋๋ก ๋ง๋ ๊ฒ์ด๋ค.
Nest.js๋ ๋ง์ดํฌ๋ก ์๋น์ค, REST API, GraphQL ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋๋๋ฐ ์ ํฉํ๋ฉฐ, ๊ตฌ์กฐ์ ์ธ ๋ฐฑ์๋ ๊ฐ๋ฐ์ ํนํ๋์ด ์๋ค.
- ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP) : ์ฝ๋์ ๊ตฌ์กฐ๋ฅผ "๊ฐ์ฒด"๋ก ๋๋์ด์ ๊ด๋ฆฌ
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ(FP) : ๋ฐ์ดํฐ๋ฅผ "๋ณ๊ฒฝํ์ง ์๊ณ " ํจ์๋ก๋ง ๋ค๋ฃจ๋ ๋ฐฉ์
- ๋ฐ์ํ ํ๋ก๊ทธ๋๋ฐ(Reactive) : ๋ฐ์ดํฐ์ ํ๋ฆ์ ์ค์๊ฐ์ผ๋ก ๋ฐ์ํ๊ฒ ๋ง๋๋ ๋ฐฉ์
์ด 3๊ฐ์ง์ ์ฒ ํ์ ํฉ์ณ์ ๊ฐ๋ฐ๋์๋ค.
์๋ฒ์์ ๋ฐ์ดํฐ์ ๋ก์ง์ ๊ด๋ฆฌํ๋๋ฐ ํนํ๋์ด ์๋๋ฐ, ์๋ฅผ ๋ค์ด
- ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ ๋ ์์ด๋์ ๋น๋ฐ๋ฒํธ ํ์ธ → REST API
- ๊ฒ์๊ธ ๋ชฉ๋ก์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ถ๋ฌ์ค๊ธฐ
- ๋ค๋ฅธ ์๋ฒ(API)์ ์ ๋ณด ์ฃผ๊ณ ๋ฐ๊ธฐ
- ์ค์๊ฐ ์๋ฆผ(์ฑํ , ๊ฒ์ ๋ฑ) ์ฒ๋ฆฌํ๊ธฐ
๋ฑ์ ๊ตฌํํ ์ ์๋ค.
๐ธ๏ธ NestJS๋ก ๋ง๋ค ์ ์๋ ๋ํ์ ์ธ ๊ฒ๋ค
- REST API → ์ผ๋ฐ์ ์ธ ์น/์ฑ ์๋ฒ (์: ๋ก๊ทธ์ธ, ๊ธ์ฐ๊ธฐ ๋ฑ)
- GraphQL ์๋ฒ → ์ข ๋ ์ ์ฐํ ๋ฐ์ดํฐ ์์ฒญ์ด ๊ฐ๋ฅํ ์๋ฒ
- ๋ง์ดํฌ๋ก์๋น์ค(Microservices) → ์ฌ๋ฌ ๊ฐ์ ์์ ์๋ฒ๊ฐ ํ๋ ฅํด์ ํ๋์ ํฐ ์๋น์ค๋ฅผ ์ด๋ฃจ๋ ๊ตฌ์กฐ
์ ์ค๋ช ์ ๋ณด๋ฉด ์ง๊ฐ์ด ์ค์ง๋ง Java + Sporing์ ์ํคํ ์ฒ ๊ตฌ์กฐ์ ๋งค์ฐ ๋น์ทํ๋ค.
๐ฑ 1๏ธโฃ Java + Spring Boot
// HelloController.java
@RestController
@RequestMapping("/hello")
public class HelloController {
private final HelloService helloService;
// ์์กด์ฑ ์ฃผ์
(Dependency Injection)
// ํด๋์ค์์ @RequiredArgsConstructor๋ก ๋์ฒด๋ ์ ์์
public HelloController(HelloService helloService) {
this.helloService = helloService;
}
@GetMapping
public String getHello() {
return helloService.sayHello();
}
}
// HelloService.java
@Service
public class HelloService {
public String sayHello() {
return "Hello World";
}
}
๐งฉ 2๏ธโฃ TypeScript + NestJS
// hello.controller.ts
import { Controller, Get } from '@nestjs/common';
import { HelloService } from './hello.service';
@Controller('hello')
export class HelloController {
constructor(private readonly helloService: HelloService) {}
@Get()
getHello(): string {
return this.helloService.sayHello();
}
}
// hello.service.ts
import { Injectable } from '@nestjs/common';
@Injectable()
export class HelloService {
sayHello(): string {
return 'Hello World';
}
}
| Spring Boot(Java) | NestJS(TypeScript) | |
| ์ธ์ด | Java | TypeScript |
| ์ฃผ์ ๊ตฌ์กฐ | Controller, Service, Repository | Controller, Service, Module |
| ์์กด์ฑ ์ฃผ์ | @Autowired or ์์ฑ์ ์ฃผ์ | @Injectable() + ์์ฑ์ ์ฃผ์ |
| ์๋ฒ ์์ | SpringApplication.run() | NestFactoryu.create(AppModule) |
| ๋ผ์ฐํ ๋ฐฉ์ | @RequestMapping, @GetMapping | @Controller, @Get |
| ๋น๋ ๋๊ตฌ | Maven, Gradle | npm, yarn |
| ํ๋ ์์ํฌ ์ฒ ํ | LOC(์ ์ด์ ์ญ์ ), DI(์์กด์ฑ ์ฃผ์ ) | LOC(์ ์ด์ ์ญ์ ), DI(์์กด์ฑ ์ฃผ์ ) |
+ @Repository : Spring์์ DB์ ์ง์ ์ํตํ๋ ๋ฐ์ดํฐ ์ํต ๊ณ์ธต. Mybatis์ ์ด๋ ธํ ์ด์ @Mapper๋ SQL ๋งคํ ์ธํฐํ์ด์ค๋ฅผ ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํ๋ฉด์ ์๋์ผ๋ก @Repository์ ์ญํ + DAO์ญํ ์ ๊ฐ์ด ํ๊ธฐ ๋๋ฌธ์ Mybatis๋ฅผ ์ฌ์ฉํ๋ค๋ฉด @Mapper๋ง ์จ๋ ๋๋ค.
Nuxt.js : ํ์คํ ํ๋ ์์ํฌ
Vue.js๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๊ฐ๋ ฅํ ํ์คํ ์น ํ๋ ์์ํฌ์ด๋ค. Next.js๊ฐ React๊ธฐ๋ฐ์ธ ๊ฒ ์ฒ๋ผ Nuxt๋ Vue ๊ฐ๋ฐ์ ์ํ ์ต๊ณ ์ ํ๊ฒฝ์ ์ ๊ณตํ๋ค.
์๋ Vue.js๋ก ์น์ฌ์ดํธ๋ฅผ ๋ง๋ค๋ฉด ๋ผ์ฐํฐ, SEO์ค์ , ์๋ฒ ๋ ๋๋ง(SSR), ํด๋ ๊ตฌ์กฐ ๋ฑ์ ์ ๋ถ ์ง์ ์ค์ ํด์ผ ํ๋๋ฐ, Nuxt.js๋ ์ด๋ฐ ๊ฒ์ ๋ชจ๋ ์๋์ผ๋ก ์ธํ ํด์ค๋ค.
1. ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง(SSR) ๋ฐ SEO ์ต์ ํ
์์ ์ค๋ช ํ Next.js์ ๊ฐ์ด Nuxt.js๋ ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง(SSR)์ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋ค. ๋ฏธ๋ฆฌ ์๋ฒ์์ ๋ ๋๋ง๋ ์์ ํ HTML ํ์ด์ง๋ฅผ ์ฌ์ฉ์์๊ฒ ์ ์กํ์ฌ ์ด๊ธฐ ๋ก๋ฉ ์๋๋ฅผ ๋์ด๊ณ SEO(๊ฒ์ ์์ง ์ต์ ํ)์ ์ ๋ฆฌํ๊ฒ ๋ง๋ ๋ค. ํนํ Nuxt๋ ์๋ฒ์ ํด๋ผ์ด์ธํธ ์์ชฝ์์ ๋ ๋๋ง์ด ๊ฐ๋ฅํ ์ ๋๋ฒ์ ๋ชจ๋๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณตํ๋ค.
2. ํ์ผ ๊ธฐ๋ฐ ๋ผ์ฐํ ๋ฐ ์๋ ๊ตฌ์ฑ
- ์๋ ๋ผ์ฐํ : pages ํด๋ ์์ Vueํ์ผ์ ์์ฑํ๊ธฐ๋ง ํ๋ฉด Nuxt๊ฐ ์๋์ผ๋ก ๋ผ์ฐํ ์ค์ ์ ํ๋ค(Next.js์ ๋์ผ)
- ์๋ ๊ฐ์ ธ์ค๊ธฐ : ์ปดํฌ๋ํธ, ์ํ ๊ด๋ฆฌ ์ ์ฅ์, ํ๋ฌ๊ทธ์ธ ๋ฑ์ ์๋์ผ๋ก importํ ํ์ ์์ด ์๋์ผ๋ก ๊ฐ์ ธ์ ์ฌ์ฉํ ์ ์์ด ๊ฐ๋ฐ ์์ฐ์ฑ์ด ๋งค์ฐ ๋๋ค.
3. ๋ ๋๋ง ์ต์
๋ค์ํ ๋ ๋๋ง ๋ฐฉ์์ ์ง์ํด์ ํ๋ก์ ํธ์ ์๊ตฌ์ฌํญ์ ๋ง๊ฒ ์ ํํ ์ ์๋ค.
- SPA(Single Page Application) : ํด๋ผ์ด์ธํธ ์ธก์์๋ง ๋ ๋๋ง. ์ผ๋ฐ์ ์ธ Vue ์ฑ ๋ฐฉ์
- SSR(Server-Side Rendering) : ์์ฒญ ์ ์๋ฒ์์ ๋ ๋๋ง
- SSG(Static Site Generation) : ๋น๋ ์์ ์ ๋ชจ๋ ํ์ด์ง๋ฅผ ์ ์ HTML๋ก ์์ฑ, ๋น ๋ฅด๊ณ ๋ณด์์ ๊ฐํจ
| Next.js | Nuxt.js | |
| ๊ธฐ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ | React | Vue |
| ์ธ์ด ์คํ์ผ | JSX๋ฌธ๋ฒ | template, script, style |
| ์ํ ๊ด๋ฆฌ ๊ธฐ๋ณธ ๋๊ตฌ | ์์(Redux, Zustand) | Pinia, Vuex ๋ฑ |
| ์ํ๊ณ | ๊ธฐ์ ์ฉ ๋ํ ํ๋ก์ ํธ | ๋์์ธ ์ค์ฌ์ ํ๋ก ํธ์๋, ์คํํธ์ |
| ํ์ต ๋์ด๋ | JSX ๊ฐ๋ ์ด ์ฒ์์ ์ด๋ ค์ | ๋ฌธ๋ฒ์ด ์ง๊ด์ |
๋ฌด์์ ์ ํํด์ผ ํ๋๋
์น ๊ฐ๋ฐ์์ ๋ ๋๋ง ๋ฐฉ์์ด ๋ญ๋์ ๋ฐ๋ผ ์ ํ์ด ๋ฌ๋ผ์ง๋ค.
1. Next.js / Nuxt.js๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
- ๊ฒ์์์ง(SEO) ๋ ธ์ถ์ด ๋งค์ถ์ ์ง๊ฒฐ๋๋ ๊ฒฝ์ฐ
- ๋ด์ค, ๋ธ๋ก, ์ฝํ ์ธ ๋ฏธ๋์ด ๋ฑ
- ๋ง์ผํ , ๋๋ฉ ํ์ด์ง
- ์ํ ๊ฒ์ํ ์ด์ปค๋จธ์ค
- ๊ธ๋ก๋ฒ SaaS ๊ฐ์ , ํ๋ณด ํ์ด์ง
2. ์ ํต์ ์ธ ๋ฐฑ์๋(Spring Boot, NestJS) + SPA(React, Vue)๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
- ๋๊ท๋ชจ Enterprise Saas
- ERP, ๊ทธ๋ฃน์จ์ด
- ๊ณ ์ฑ๋ฅ ์ค์๊ฐ ์๋น์ค(๊ฒ์, ์ฑํ , ์คํธ๋ฆฌ๋ฐ)
+ SaaS : ์๋น์คํ ์ํํธ์จ์ด. ์ํํธ์จ์ด๋ฅผ ๊ตฌ๋งคํด์ ๋ด ์ปดํจํฐ์ ์ค์นํ๋ ๋์ ์ธํฐ๋ท์ ์ ์ํ์ฌ ์ฌ์ฉํ๋ ๋ฐฉ์์ ์๋ฏธํ๋ค(ex. Microsoft 365, Gmail๋ฑ)
| ๊ตฌ๋ถ | ์ ํต์ ์ธ ์ํํธ์จ์ด | SaaS |
| ์ค์น ๋ฐฉ์ | CD๋ฅผ ๊ตฌ๋งคํ๊ฑฐ๋ ํ์ผ์ ๋ค์ด๋ก๋ํ์ฌ PC์ ์ง์ ์ค์น |
์ธํฐ๋ท์ผ๋ก ์ ์ํ์ฌ ๋ฐ๋ก ์ฌ์ฉ
|
| ์ ๋ฐ์ดํธ | ์ฌ์ฉ์๊ฐ ์๋์ผ๋ก ์งํ |
์๋น์ค ์ ๊ณต์
์ฒด๊ฐ ์๋์ผ๋ก ์งํ
|
| ๋ํ ์์ | MS Office 2019 (ํจํค์ง ๊ตฌ๋งค) |
Microsoft 365, Gmail, Salesforce
|
๊ฒฐ๋ก
| ๊ตฌ๋ถ | Node.js | Next.js | NestJS |
| ์ญํ | ๋ฐํ์ ํ๊ฒฝ | ์น ํ๋ ์์ํฌ | ๋ฐฑ์๋ ํ๋ ์์ํฌ |
| ์ฃผ ์ฌ์ฉ๋ถ์ผ | ์๋ฒ, ๋๊ตฌ, CLI๋ฑ | ํ๋ก ํธ์๋ ์ค์ฌ์ ์น ์ฑ | ๋ฐฑ์๋ API, ๋ง์ดํฌ๋ก ์๋น์ค |
| ๊ธฐ๋ฐ ๊ธฐ์ | V8์์ง | Node.js, React | Node.js, TypeScript |
| ํต์ฌ ํน์ง | JavaScript ์คํ ํ๊ฒฝ | SSR, SSG, ํ์ผ ๊ธฐ๋ฐ ๋ผ์ฐํ | ๋ชจ๋ํ, ๊ตฌ์กฐ์ ์ธ ์ํคํ ์ณ |
[์ฐธ๊ณ ์๋ฃ]
https://return-true.tistory.com/17
[Node.js] V8์ด๋? ๊ตฌ์กฐ์ Javascript ์ฝ๋์ ์คํ ์์
ํ ์ค ์์ฝ V8? Javascript ์ฝ๋๋ฅผ Ignition์ด๋ผ๋ ์ธํฐํ๋ฆฌํฐ์ Turbofan์ด๋ผ๋ ์ปดํ์ผ๋ฌ๋ฅผ ํตํด JIT ์ปดํ์ผ์ ์ํํ๋ Javascript ์คํ์์ค ์์ง์ด๋ค. V8์ด๋? ๊ตฌ๊ธ์ด ๊ฐ๋ฐํ Javascript ์์ง์ด๋ค. C++๋ก ์์ฑ
return-true.tistory.com
https://www.notion.so/Node-js-5f9344d1dfe44b5eac121449cc1eacfb#5f9344d1dfe44b5eac121449cc1eacfb
Node.js ์ ๋ฆฌ | Notion
์๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ “์น์์ ์ฌ์ฉํ๊ธฐ ๋๋ฌด ์ข๋ค”
confirmed-clave-f2a.notion.site
https://velog.io/@codns1223/Nextjs-Next.js%EB%9E%80
[Nextjs] Next.js๋?
โก๏ธ Next.js๋? Next.js๋ ํ์คํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๊ธฐ ์ํ React ๊ธฐ๋ฐ ํ๋ ์์ํฌ์ด๋ค. ํ๋ก ํธ์๋์ UI๋ React๋ก ๊ตฌ์ฑํ๋ฉฐ, Next.js๋ ํ์ด์ง ๋ผ์ฐํ , ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง(SSR), ์ ์ ์ฌ์ดํธ ์
velog.io
https://velog.io/@minsang9735/NestJs-%EB%9E%80
NestJs ๋?
NestJS ์์ฆ ์๊ทธ๋๋ ๋ฐฑ์๋ express๋ก ๊ฐ๋จํ๊ฒ ์๋ฒ ๋ง๋ค์ด๋ณด๊ณ ์ถ์๋๋ฐ ๊ธฐํ๊ฐ ์๊ฒจ์ Nest๋ฅผ ์ฌ์ฉํ๋ ํ๋ก์ ํธ๋ฅผ ์์ํ๊ฒ ๋์๋ค. ์ง๊ธ๋ ๋ฐ๋น ๋ค์ง๊ฒ ๋๋ฐ ํ๋ก์ ํธ ๋ ์๊ฒผ๋ค. ๋๋ฌด ์ข๋ค. Ne
velog.io
'Etc๐โโ๏ธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ํฐ์คํ ๋ฆฌ์์ ์์ ์ฐ๊ธฐ (0) | 2025.12.10 |
|---|---|
| Framework์ Library์ฐจ์ด (0) | 2025.09.10 |
| CLI, GUI๋ (3) | 2025.07.24 |
| ํฐ๋ฏธ๋์ Gemini - CLI ์ค์นํ๊ณ ์ฌ์ฉํ๊ธฐ (4) | 2025.07.13 |
| ๋ด ์ด์์ฒด์ (์๋์ฐ ๋ฒ์ ), ์ธํ ๋ฆฌ์ ์ด ๋ฒ์ ํ์ธํ๊ธฐ (0) | 2025.06.30 |