
๐งฑ ์คํ(Stack)
1๏ธโฃ ๊ฐ๋
์คํ์ "๋์ค์ ๋ค์ด์จ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋๊ฐ๋" ๊ตฌ์กฐ๋ก,
LIFO (Last In, First Out) — “ํ์
์ ์ถ” ๊ตฌ์กฐ๋ผ๊ณ ๋ถ๋ฆ
๋๋ค.
์๋ฅผ ๋ค์ด, ์ ์๋ฅผ ์๋ ๊ฒ์ ์๊ฐํด ๋ณด์ธ์.
๋งจ ์์ ์์ ์ ์๋ฅผ ๊ฐ์ฅ ๋จผ์ ๊บผ๋ผ ์ ์์ฃ .
→ ๋์ค์ ๋ฃ์ ๊ฒ์ด ๋จผ์ ๋์ค๋ ๊ตฌ์กฐ์
๋๋ค.
2๏ธโฃ ์ฃผ์ ์ฐ์ฐ
| push(item) | ๋ฐ์ดํฐ๋ฅผ ์คํ์ ๋งจ ์์ ๋ฃ๊ธฐ |
| pop() | ๋งจ ์์ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด๊ธฐ |
| peek() | ๋งจ ์์ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด์ง ์๊ณ ํ์ธ |
| isEmpty() | ์คํ์ด ๋น์ด์๋์ง ํ์ธ |
3๏ธโฃ ์ฌ์ฉ ์์
- ๋ค๋ก ๊ฐ๊ธฐ ๊ธฐ๋ฅ (์น ๋ธ๋ผ์ฐ์ )
- ์ฌ๊ท ํจ์ ํธ์ถ ๊ด๋ฆฌ (ํจ์ ํธ์ถ ์คํ)
- ๊ดํธ ์ง ๊ฒ์ฌ, ๋ฌธ์์ด ๋ค์ง๊ธฐ
๐ ํ(Queue)
1๏ธโฃ ๊ฐ๋
ํ๋ "๋จผ์ ๋ค์ด์จ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋๊ฐ๋" ๊ตฌ์กฐ๋ก,
FIFO (First In, First Out) — “์ ์
์ ์ถ” ๊ตฌ์กฐ๋ผ๊ณ ๋ถ๋ฆ
๋๋ค.
๋ฒ์ค ์ ๋ฅ์ฅ์์ ์ค ์์ ํ์นํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
๋จผ์ ์จ ์ฌ๋์ด ๋จผ์ ํ๊ณ , ๋์ค์ ์จ ์ฌ๋์ ๋์ค์ ํ๋๋ค.
2๏ธโฃ ์ฃผ์ ์ฐ์ฐ
| enqueue(item) | ๋ฐ์ดํฐ๋ฅผ ํ์ ๋ค์ชฝ(rear)์ ์ถ๊ฐ |
| dequeue() | ํ์ ์์ชฝ(front)์์ ๋ฐ์ดํฐ ์ ๊ฑฐ |
| peek() | ๋งจ ์์ ๋ฐ์ดํฐ๋ฅผ ํ์ธ |
| isEmpty() | ํ๊ฐ ๋น์ด์๋์ง ํ์ธ |
3๏ธโฃ ์ฌ์ฉ ์์
- ํ๋ฆฐํฐ ๋๊ธฐ์ด (๋จผ์ ์์ฒญ๋ ๋ฌธ์๊ฐ ๋จผ์ ์ถ๋ ฅ)
- ์ด์์ฒด์ ์ ํ๋ก์ธ์ค ๊ด๋ฆฌ
- ๋คํธ์ํฌ ๋ฐ์ดํฐ ํจํท ์ฒ๋ฆฌ
๐ ์คํ vs ํ ๋น๊ต
| ๊ตฌ๋ถ | ์คํ(Stack) | ํ(Queue) |
| ๊ตฌ์กฐ | LIFO (ํ์ ์ ์ถ) | FIFO (์ ์ ์ ์ถ) |
| ์ฝ์ ์์น | ๋งจ ์(top) | ๋ค(rear) |
| ์ญ์ ์์น | ๋งจ ์(top) | ์(front) |
| ์์ | ์น ๋ธ๋ผ์ฐ์ ๋ค๋ก ๊ฐ๊ธฐ | ํ๋ฆฐํฐ ๋๊ธฐ์ด |
๐ก๋น์ ๋ก ์ ๋ฆฌ
| ์ ์ ์๊ธฐ | ์คํ |
| ์ค ์๊ธฐ | ํ |
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ GraphQL ๊ฐ์ ์์คํ
์ ๊ณต๋ถํ๋ค ๋ณด๋ฉด **์คํค๋ง(Schema)**์ **์ค์นผ๋ผ(Scalar)**๋ผ๋ ๋จ์ด๋ฅผ ์์ฃผ ๋ง๋๊ฒ ๋ฉ๋๋ค.
์ด ๋ ๊ฐ๋
์ ๋ฐ์ดํฐ์ “ํํ”์ “๊ธฐ๋ณธ ๋จ์”๋ฅผ ์ ์ํ ๋ ๋งค์ฐ ์ค์ํฉ๋๋ค.
์๋์์ ์ฝ๊ฒ ํ์ด์ ์ค๋ช
๋๋ฆด๊ฒ์ ๐
๐งฉ ์คํค๋ง(Schema)
1๏ธโฃ ๊ฐ๋
**์คํค๋ง(Schema)**๋ **๋ฐ์ดํฐ์ ๊ตฌ์กฐ(Structure)๋ ์ค๊ณ๋(blueprint)**๋ฅผ ๋งํฉ๋๋ค.
์ฆ, ๋ฐ์ดํฐ๊ฐ ์ด๋ค ํํ๋ก ์ ์ฅ๋๊ณ ์ฐ๊ฒฐ๋๋์ง๋ฅผ ์ ์ํ ๊ฒ์
๋๋ค.
2๏ธโฃ ์์ (๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ์ค)
์๋ฅผ ๋ค์ด, ํ์(Student) ํ ์ด๋ธ์ด ์๋ค๊ณ ํด๋ณผ๊ฒ์.
| id | INTEGER | ํ์ ๊ณ ์ ๋ฒํธ |
| name | VARCHAR | ํ์ ์ด๋ฆ |
| age | INTEGER | ๋์ด |
| major | VARCHAR | ์ ๊ณต |
์ด ํ ์์ฒด๊ฐ ๋ฐ๋ก ์คํค๋ง์
๋๋ค.
์ฆ, “๋ฐ์ดํฐ๊ฐ ์ด๋ค ์นผ๋ผ(์์ฑ)์ ๊ฐ์ง๊ณ ์ด๋ค ํ์
์ธ์ง”๋ฅผ ์ ์ํ๋ ๊ฒ์
๋๋ค.
๐ก ์ฝ๊ฒ ๋งํ๋ฉด: ‘๋ฐ์ดํฐ๋ฅผ ๋ด๋ ํ’์ด ์คํค๋ง์ ๋๋ค.
3๏ธโฃ GraphQL ๊ธฐ์ค์์์ ์คํค๋ง
GraphQL์์๋ ์คํค๋ง๊ฐ API์ ๊ตฌ์กฐ์ ๊ท์น์ ์ ์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด,
์ด ์ ์ ์์ฒด๊ฐ GraphQL์ ์คํค๋ง์
๋๋ค.
์ฌ๊ธฐ์ ๊ฐ ํ๋์ ํ์
์ด ๋ฐ๋ก “์ค์นผ๋ผ(Scalar)” ํ์
์ด์์ ๐
โ๏ธ ์ค์นผ๋ผ(Scalar)
1๏ธโฃ ๊ฐ๋
**์ค์นผ๋ผ(Scalar)**๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํฐ ํ์
์ ์๋ฏธํฉ๋๋ค.
์ฆ, ๋ ์ด์ ๋๋ ์ ์๋ ๋จ์ผ ๊ฐ์ด์์.
์๋ฅผ ๋ค์ด, “๋ฌธ์์ด(String)”์ด๋ “์ซ์(Int)”์ฒ๋ผ ํ ๊ฐ์ง ๊ฐ๋ง ๊ฐ์ง๋ ํ์ ์ ๋๋ค.
2๏ธโฃ GraphQL์์์ ๊ธฐ๋ณธ ์ค์นผ๋ผ ํ์
| Int | ์ ์ | 123 |
| Float | ์ค์ | 3.14 |
| String | ๋ฌธ์์ด | "ํ๊ธธ๋" |
| Boolean | ์ฐธ/๊ฑฐ์ง | true |
| ID | ๊ณ ์ ์๋ณ์ (๋ฌธ์์ด์ฒ๋ผ ๋ค๋ฃธ) | "stu_001" |
๐ก “์คํค๋ง”๋ ์ ์ฒด ๊ตฌ์กฐ๋ฅผ ์ ์ํ๊ณ ,
“์ค์นผ๋ผ”๋ ๊ทธ ์์์ ์ฌ์ฉ๋๋ ๊ธฐ์ด ํ์ ์ด์์.
๐ง ๋น์ ๋ก ์ดํดํ๊ธฐ
| ์คํค๋ง | ์ํํธ ์ค๊ณ๋ | ๊ฑด๋ฌผ์ด ์ด๋ป๊ฒ ์๊ฒผ๋์ง ์ ์ |
| ์ค์นผ๋ผ | ๋ฒฝ๋, ์ ๋ฆฌ, ์ฒ ๊ทผ | ์ค๊ณ๋๋ฅผ ๊ตฌ์ฑํ๋ ๊ธฐ๋ณธ ์ฌ๋ฃ |
์์ฝ
- ์คํค๋ง(Schema): ๋ฐ์ดํฐ์ ๊ตฌ์กฐ, ์ค๊ณ๋
- ์ค์นผ๋ผ(Scalar): ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์ฑํ๋ ๊ธฐ๋ณธ ๋จ์ (์ซ์, ๋ฌธ์์ด ๋ฑ)
์์ ์ JQUERY ์ธ ๋๋ npm์ ์ฌ์ฉํ๋๋ฐ ์ด์ ๋ฆฌ์กํธ๋ก ๊ธฐ๋ฅ์ด ํฅ์๋ ์์ ์์ yarn ๊ณผ pnpm์ค ํ๋๋ง ์ฌ์ฉํ๊ณ ์ถ์ด ์ด๋๊ฒ์ ์ถ์ฒํด?
React ํ๊ฒฝ์์ ํจํค์ง ๋งค๋์ ๋ฅผ ์ ํํ ๋ npm, yarn, pnpm ์ค ํ๋๋ง ์จ๋ ์ถฉ๋ถํ์ง๋ง,
์์ฆ์ ๊ฐ๋ฐ ํธ๋ ๋์ pnpm์ ์ ํํ๋ ๊ฒฝ์ฐ๊ฐ ๋น ๋ฅด๊ฒ ๋์ด๋๊ณ ์์ต๋๋ค.
์๋์์ ๋ ๋๊ตฌ๋ฅผ ์ฑ๋ฅ, ํธํ์ฑ, ํ ํ์
์ฑ, ๊ฐ๋ฐ ๊ฒฝํ ๊ธฐ์ค์ผ๋ก ๋น๊ตํด๋๋ฆด๊ฒ์ ๐
โ๏ธ Yarn vs PNPM ๋น๊ต ์์ฝ
| ์๋ | ๋น ๋ฆ | ๐ ๋งค์ฐ ๋น ๋ฆ (Yarn๋ณด๋ค ์ต๋ 2~3๋ฐฐ) |
| ๋์คํฌ ์ฌ์ฉ๋ | ๋ง์ | ๊ณต์ ์บ์ ๊ตฌ์กฐ๋ก ๋งค์ฐ ์ ์ฝ์ |
| Node Modules ๊ตฌ์กฐ | ํ๋ฉด์ ์ค์น (hoisting) | ์ฌ๋ณผ๋ฆญ ๋งํฌ ๊ธฐ๋ฐ (isolation ๊ตฌ์กฐ) |
| ํธํ์ฑ | ๋์ (npm๊ณผ ๊ฑฐ์ ๋์ผ) | ๋๋ถ๋ถ ํธํ๋จ (๋จ, ์ผ๋ถ ์ค๋๋ ํจํค์ง ์ฃผ์) |
| Monorepo ์ง์ | Yarn Berry(3.x)๋ถํฐ ๊ฐ์ | ๊ธฐ๋ณธ ๋ด์ฅ (workspace ๊ธฐ๋ฅ ๊ฐ๋ ฅ) |
| ์ค์ ๋์ด๋ | ๋น๊ต์ ์ฌ์ | ์ฝ๊ฐ ๋ณต์กํ์ง๋ง ๋ฌธ์ํ๊ฐ ์ ๋์ด ์์ |
| ์ปค๋ฎค๋ํฐ/์ง์ | ์์ ์ , ๋๋ฆฌ ์ฌ์ฉ๋จ | ๐ฅ ๋น ๋ฅด๊ฒ ์ฑ์ฅ ์ค (Vite, Next.js ๊ณต์ ์ถ์ฒ ๊ฒฝํฅ) |
๐ง ์ ๋ฆฌํ๋ฉด
โ Yarn์ ์ ํํ๋ฉด ์ข์ ๊ฒฝ์ฐ
- ํ ์ ์ฒด๊ฐ ๊ธฐ์กด Yarn ๊ธฐ๋ฐ ํ๊ฒฝ์ ์ด๋ฏธ ์ฌ์ฉ ์ค์ผ ๋
- ๋ณ๋์ ์ค์ ์์ด npm๋ณด๋ค ์กฐ๊ธ ๋ ๋น ๋ฅด๊ณ ์์ ์ ์ธ ํจํค์ง ๊ด๋ฆฌ๊ฐ ํ์ํ ๋
- ๊ธฐ์กด CRA(Create React App) ํ๋ก์ ํธ๋ฅผ ์ ์ง๋ณด์ํ ๋
๐ pnpm์ ์ ํํ๋ฉด ์ข์ ๊ฒฝ์ฐ
- React + Vite / Next.js / Monorepo ํ๊ฒฝ์์ ๊ฐ๋ฐํ ๋
- ์๋์ ๋์คํฌ ํจ์จ์ฑ์ ์ค์ํ ๋ (ํจํค์ง๊ฐ ๋ง์์๋ก ์ฒด๊ฐ ํผ)
- ํ ๋ด์์ ์ต์ ๊ฐ๋ฐ ํ๊ฒฝ๊ณผ ๋๊ตฌ๋ฅผ ์ ๊ทน์ ์ผ๋ก ๋์ ํ ๋
๐ก ์ค์ ์ฒด๊ฐ ์์
- Yarn ์ค์น ์๊ฐ: 30์ด
- pnpm ์ค์น ์๊ฐ: 10~15์ด
- ๋์คํฌ ์ฉ๋: Yarn 2GB → pnpm 300MB ์์ค
๋๊ท๋ชจ ํ๋ก์ ํธ์ผ์๋ก pnpm์ ์๋ + ์ฉ๋ ์ ์ฝ ํจ๊ณผ๊ฐ ํ์คํ ๋๊ปด์ง๋๋ค.
๐ง ๊ฐ์ธ ์ถ์ฒ
๐ ์๋ก React ํ๋ก์ ํธ๋ฅผ ์์ํ๋ค๋ฉด pnpm์ ์ถ์ฒ๋๋ฆฝ๋๋ค.
์ด์ :
- Vite, Next.js, Turborepo ๋ฑ ์ต์ ํ๋ ์์ํฌ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํธํ
- ์บ์, ๋งํฌ ๊ตฌ์กฐ ๋๋ถ์ ๋น๋์ ์ค์น ์๋ ๊ทน๋ํ
- ๊ด๋ฆฌ ํจ์จ์ด ๋๊ณ , ์ฅ๊ธฐ์ ์ผ๋ก ์ ์ง๋ณด์๊ฐ ์ฉ์ดํจ
์ค์น๋ ๊ฐ๋จํฉ๋๋ค ๐
๐๏ธ ๊ฐ์ฒด ๋ชจ๋ธ(Object Model)์ด๋?
1๏ธโฃ ๊ฐ๋
**๊ฐ์ฒด ๋ชจ๋ธ(Object Model)**์
“ํ๋ก๊ทธ๋จ ๋ด์ ๊ฐ์ฒด๋ค์ด ์ด๋ค ๊ตฌ์กฐ๋ก ์กด์ฌํ๊ณ , ์๋ก ์ด๋ป๊ฒ ์ํธ์์ฉํ๋์ง ๋ํ๋ธ ๊ฐ๋ ์ ๋ชจ๋ธ”
์ ๋๋ค.
์ฆ, ๋จ์ํ ๊ฐ์ฒด ํ๋ํ๋๊ฐ ์๋๋ผ,
๊ฐ์ฒด๋ค ๊ฐ์ ๊ด๊ณ, ๊ณ์ธต, ์์, ์์ฑ ๊ณต์ ๊ตฌ์กฐ๊น์ง ์ ์ํ “์ ์ฒด ํ”์ด์์.
2๏ธโฃ ์์๋ก ์ดํดํ๊ธฐ
๐จ ๋น์ :
๊ฐ์ฒด๊ฐ ‘์ฌ๋ ํ ๋ช ’์ด๋ผ๋ฉด,
๊ฐ์ฒด ๋ชจ๋ธ์ ‘์ธ๊ฐ ์ฌํ์ ๊ตฌ์กฐ(๊ฐ์กฑ, ์กฐ์ง, ์ญํ )’๋ฅผ ์ ์ํ ๊ฒ๊ณผ ๊ฐ์์.
“๊ฐ์ฒด ๋ชจ๋ธ(Object Model)”๊ณผ “DOM(Document Object Model)”์ ์ด๋ฆ์ด ๋น์ทํด์ ํท๊ฐ๋ฆฌ๊ธฐ ์ฌ์ด๋ฐ์,
๋์ ์ ์ฉ ๋ฒ์์ ์ญํ ์ด ์์ ํ ๋ค๋ฆ
๋๋ค.
ํ๋์ฉ ๋น๊ตํ๋ฉด์ ์ฝ๊ฒ ์ ๋ฆฌํด๋๋ฆด๊ฒ์ ๐
๐งฑ 1๏ธโฃ ๊ฐ์ฒด ๋ชจ๋ธ(Object Model)
โ ๊ฐ๋
**๊ฐ์ฒด ๋ชจ๋ธ(Object Model)**์
“๊ฐ์ฒด๋ค์ด ์ด๋ค ๊ตฌ์กฐ๋ก ์กด์ฌํ๊ณ ์๋ก ์ด๋ค ๊ด๊ณ๋ฅผ ๋งบ๋์ง๋ฅผ ํํํ ์ค๊ณ ๊ฐ๋ ”์ ๋๋ค.
์ฆ, ํ๋ก๊ทธ๋จ ์ ๋ฐ์ ๊ฐ์ฒด ๊ด๊ณ๋ฅผ ์ค๋ช ํ๋ ์ด๋ก ์ ๊ฐ๋ ์ด์์.
๐ ์์ (์๋ฐ์คํฌ๋ฆฝํธ OOP ๊ธฐ์ค)
์ฌ๊ธฐ์
- Car ํด๋์ค, redCar ์ธ์คํด์ค, drive() ๋ฉ์๋
์ด๋ฐ ๊ตฌ์ฑ ๊ด๊ณ ์ ์ฒด๊ฐ **๊ฐ์ฒด ๋ชจ๋ธ(Object Model)**์ด์์.
์ฆ,
๊ฐ์ฒด ๋ชจ๋ธ = ๊ฐ์ฒด์ ์ค๊ณ ๊ตฌ์กฐ + ๊ด๊ณ ๊ท์น
๐ 2๏ธโฃ DOM(Document Object Model)
โ ๊ฐ๋
DOM์ ์น ๋ธ๋ผ์ฐ์ ๊ฐ HTML, XML ๋ฌธ์๋ฅผ ๊ฐ์ฒด ํํ๋ก ํํํ ๊ตฌ์กฐ์ ๋๋ค.
์ฆ, **์น ๋ฌธ์๋ฅผ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ๋ค๋ฃฐ ์ ์๊ฒ ๋ง๋ ๊ตฌ์ฒด์ ์ธ “๊ฐ์ฒด ๋ชจ๋ธ์ ํ ๊ตฌํ์ฒด”**์์.
๐ ์์ (HTML + JavaScript)
์ ์ฝ๋์์
document → HTML ์ ์ฒด ๋ฌธ์ ๊ฐ์ฒด
getElementById("title") → DOM ํธ๋ฆฌ์์ <h1> ์์ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ
์ฆ, HTML ์์๊ฐ ๊ฐ์ฒด๋ก ๋ณํ๋์ด JS๋ก ์ ์ด ๊ฐ๋ฅํ ๊ตฌ์กฐ,
์ด๊ฒ ๋ฐ๋ก **DOM(Document Object Model)**์
๋๋ค.
โ๏ธ 3๏ธโฃ ๊ฐ์ฒด ๋ชจ๋ธ vs DOM ๋น๊ตํ
| ์ ์ | ๊ฐ์ฒด ๊ฐ ๊ด๊ณ๋ฅผ ํํํ๋ ๊ฐ๋ ์ ๋ชจ๋ธ | HTML/XML ๋ฌธ์๋ฅผ ๊ฐ์ฒด๋ก ํํํ ๋ชจ๋ธ |
| ๋ฒ์ | ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ ๋ฐ (Java, JS, Python ๋ฑ) | ์น ๋ฌธ์(HTML, XML) ์ ์ฉ |
| ํํ | ์ถ์์ ์ค๊ณ (ํด๋์ค, ์์, ๋ฉ์๋ ๋ฑ) | ๊ตฌ์ฒด์ ๊ตฌ์กฐ (Node, Element, Text ๋ฑ) |
| ์์ | class User {} / extends / instance | document.getElementById(), innerHTML |
| ๊ฒฐ๊ณผ๋ฌผ | ํ๋ก๊ทธ๋จ์ ๊ฐ์ฒด ๊ตฌ์กฐ๋ฅผ ์ ์ | ์น ํ์ด์ง์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ฒด๋ก ์ ์ด ๊ฐ๋ฅํ๊ฒ ํจ |
| ์ข ๋ฅ | ์ฌ๋ฌ ๋ถ์ผ์ ์กด์ฌ (DB, SW ์ค๊ณ ๋ฑ) | ๋ธ๋ผ์ฐ์ ์ ์ฉ ๋ชจ๋ธ (W3C ํ์ค) |
๐ก ํ ๋ฌธ์ฅ์ผ๋ก ์ ๋ฆฌ
**๊ฐ์ฒด ๋ชจ๋ธ(Object Model)**์ “๊ฐ์ฒด์ ๊ฐ๋ ๊ณผ ๊ตฌ์กฐ”๋ฅผ ์ค๋ช ํ๋ ์ด๋ก ์ ํ,
**DOM(Document Object Model)์ “HTML ๋ฌธ์๋ฅผ ๊ฐ์ฒด๋ก ํํํ ๊ตฌ์ฒด์ ์ธ ๊ตฌํ์ฒด์ ๋๋ค.
์ฆ, DOM์ ๊ฐ์ฒด ๋ชจ๋ธ์ ํน์ ํ ํ ์ฌ๋ก๋ผ๊ณ ๋ณด๋ฉด ์ ํํฉ๋๋ค.
๐ ๋น์ ๋ก ์ดํดํ๊ธฐ
| ๊ฐ๋ | “๋ชจ๋ ์๋ฌผ์ ๋ถ๋ฅ ์ฒด๊ณ” | “ํน์ ์๋ฌผ์ ๊ณํต๋” |
| ์๋ฏธ | ์ด๋ก ์ ์ค๊ณ ์๋ฆฌ | ํน์ ๊ตฌํ ๊ตฌ์กฐ |
| ์์ | ์ฌ๋, ๋๋ฌผ, ์๋์ฐจ ๋ฑ ๊ด๊ณ ์ ์ | HTML ๋ฌธ์์ ์ค์ ๊ตฌ์กฐ ํํ |
ํ๋ก๊ทธ๋๋ฐ์์ **“ํจ์(Function)”**๋ ๊ธฐ๋ณธ์ด์ง๋ง,
์ด๋ฆ์ด ์๋๋ ์๋๋์ ๋ฐ๋ผ ์ญํ ๊ณผ ์ฌ์ฉ ๋ฐฉ์์ด ๋ฌ๋ผ์ง๋๋ค.
ํนํ **์๋ฐ์คํฌ๋ฆฝํธ(React ํฌํจ)**์์๋ ์ด ๊ตฌ๋ถ์ด ์ค์ํด์.
์๋์์ ์ด๋ฆ ์ ๋ฌด์ ๋ฐ๋ฅธ ํจ์์ ์ข
๋ฅ๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ์ ๋ฆฌํด๋๋ฆด๊ฒ์ ๐
โ๏ธ ํจ์์ ์ด๋ฆ ์กด์ฌ ์ฌ๋ถ์ ๋ฐ๋ฅธ ๋ถ๋ฅ
| 1๏ธโฃ ์ ์ธํ ํจ์ (Named Function / Function Declaration) | ํจ์์ ์ด๋ฆ์ด ์๋ ํํ | function sayHello() { ... } |
| 2๏ธโฃ ์ต๋ช ํจ์ (Anonymous Function / Function Expression) | ์ด๋ฆ ์์ด ๋ณ์์ ์ ์ฅ๋๋ ํจ์ | const greet = function() { ... } |
| 3๏ธโฃ ํ์ดํ ํจ์ (Arrow Function) | ์ต๋ช ํจ์์ ๊ฐ๊ฒฐํ ํํ์ | const add = () => { ... } |
๐งฉ 1๏ธโฃ ์ ์ธํ ํจ์ (Named Function)
โ ๊ฐ๋
- ํจ์์ ์ด๋ฆ์ด ๋ถ์ด ์๋ ํํ์ ๋๋ค.
- function ํค์๋๋ก ์ง์ ์ ์ธํฉ๋๋ค.
- **ํธ์ด์คํ (hoisting)**์ด ์ ์ฉ๋์ด, ์ ์ธ ์ ์ ํธ์ถ ๊ฐ๋ฅ!
๐ ์์
๐ก ํน์ง
| ์ด๋ฆ ์กด์ฌ | ์์ |
| ์ ์ธ ์์น | ์ด๋๋ ๊ฐ๋ฅ |
| ํธ์ถ ์์ | ์ ์ธ ์ด์ ์๋ ํธ์ถ ๊ฐ๋ฅ (ํธ์ด์คํ ) |
| ์ฅ์ | ๋๋ฒ๊น ์ ์คํ ํธ๋ ์ด์ค์์ ์ด๋ฆ ํ์ |
| ๋จ์ | ์ ์ฐ์ฑ์ด ๋จ์ด์ง (์ฝ๋ ์ฌ์ฌ์ฉ ์ ํจ์ ์ด๋ฆ ๊ณ ์ ) |
๐ง 2๏ธโฃ ์ต๋ช ํจ์ (Anonymous Function)
โ ๊ฐ๋
- ์ด๋ฆ์ด ์๋ ํจ์๋ก,
๋ณ์๋ ์ธ์๋ก ์ ๋ฌ๋์ด ์ฌ์ฉ๋ฉ๋๋ค. - ์ฃผ๋ก ํจ์ ํํ์(Function Expression) ํํ๋ก ์๋๋ค.
๐ ์์
๐ก ํน์ง
| ์ด๋ฆ ์กด์ฌ | โ ์์ |
| ์ ์ธ ์์น | ๋ณ์๋ ์ธ์ ์ |
| ํธ์ถ ์์ | ์ ์ธ ์ดํ์๋ง ๊ฐ๋ฅ |
| ์ฅ์ | ๋์ ์ผ๋ก ํจ์ ์ ์ ๊ฐ๋ฅ |
| ๋จ์ | ๋๋ฒ๊น ์ ์ด๋ฆ์ด ์์ผ๋ฉด ์ถ์ ์ด๋ ค์ |
โก 3๏ธโฃ ํ์ดํ ํจ์ (Arrow Function)
โ ๊ฐ๋
- ์ต๋ช
ํจ์์ ์ถ์ฝ ๋ฌธ๋ฒ์ผ๋ก,
ES6(ECMAScript 2015) ์ดํ ์ถ๊ฐ๋์์ต๋๋ค. - function ๋์ => ์ฌ์ฉ
- ๋ด๋ถ์ ์ผ๋ก this ๋ฐ์ธ๋ฉ์ด ๋ค๋ฅด๊ฒ ๋์ (๋ ์์ปฌ ์ค์ฝํ)
๐ ์์
๐ก ํน์ง
| ์ด๋ฆ ์กด์ฌ | โ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ (๋ณ์๋ช ์ผ๋ก ์๋ณ) |
| ์ ์ธ ์์น | ํํ์ ๋ด๋ถ |
| ํธ์ถ ์์ | ์ ์ธ ์ดํ |
| ์ฅ์ | ์ฝ๋๊ฐ ๊ฐ๊ฒฐ, ์ฝ๋ฐฑ ํจ์์ ์ ํฉ |
| ๋จ์ | this, arguments๋ฅผ ์ฌ์ฉํ ์ ์์ |
๐ 3๊ฐ์ง ๋ฐฉ์ ๋น๊ต ์์ฝํ
| ์ ์ธํ ํจ์ | function name() {} | โ ์์ | ์ ์ธ ์ ํธ์ถ ๊ฐ๋ฅ | ์ ์ญ ์ ํธ ํจ์ |
| ์ต๋ช ํจ์ | const f = function() {} | โ ์์ | ์ ์ธ ํ ํธ์ถ๋ง ๊ฐ๋ฅ | ์ฝ๋ฐฑ, ๋ณ์์ ์ ์ฅ |
| ํ์ดํ ํจ์ | const f = () => {} | โ ์์ | ์ ์ธ ํ ํธ์ถ๋ง ๊ฐ๋ฅ | ์ด๋ฒคํธ ํธ๋ค๋ฌ, ๊ฐ๋จํ ๋ก์ง |
๐ง ์์ฝ
- ์ด๋ฆ์ด ์์ผ๋ฉด → ์ ์ธํ ํจ์ (๋๋ฒ๊น ·ํธ์ด์คํ ์ ์ ๋ฆฌ)
- ์ด๋ฆ์ด ์์ผ๋ฉด → ์ต๋ช ํจ์ or ํ์ดํ ํจ์ (๊ฐ๊ฒฐํ๊ณ ์ ์ฐ)
๐ 3๏ธโฃ SPA vs MPA ๋น๊ต ์์ฝ
| ๊ตฌ๋ถ | SPA | MPA |
| ํ์ด์ง ๊ตฌ์กฐ | ํ๋์ HTML ํ์ผ | ํ์ด์ง๋ง๋ค HTML ํ์ผ ์กด์ฌ |
| ํ์ด์ง ์ ํ | JS๋ก ํ๋ฉด ์ผ๋ถ ๊ฐฑ์ | ์๋ฒ๊ฐ ์ ํ์ด์ง ์ ์ก |
| ์๋ | ์ด๊ธฐ ๋๋ฆผ, ์ดํ ๋น ๋ฆ | ์ด๊ธฐ ๋น ๋ฆ, ์ดํ ๋๋ฆผ |
| SEO | ๋ถ๋ฆฌ (SSR ํ์) | ์ ๋ฆฌ |
| ๋ํ ๊ธฐ์ | React, Vue, Angular | JSP, PHP, Django ๋ฑ |
| ์ฌ์ฉ์ ๊ฒฝํ | ์ฑ์ฒ๋ผ ๋ถ๋๋ฌ์ | ์ ํต์ ์ธ ํ์ด์ง ์ด๋ ๋๋ |
๐ก ๊ฒฐ๋ก ์์ฝ
SPA = ์ฑ์ฒ๋ผ ๋ถ๋๋ฌ์ด UX, ํ๋ก ํธ ์ค์ฌ
MPA = ๊ฒ์์์ง ์นํ์ , ์๋ฒ ์ค์ฌ
์์ฆ์ ๋์ ์ฅ์ ์ ๊ฒฐํฉํ SSR(Server-Side Rendering) ๋ฐฉ์
๐ ์: Next.js (React ๊ธฐ๋ฐ ํ๋ ์์ํฌ)๊ฐ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค.
'Project ESG+AI > Tech Basics' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| 25์ผ์ฐจ. IT ๊ฐ๋ ์ ๋ฆฌ (0) | 2025.11.12 |
|---|---|
| 24์ผ์ฐจ. IT ๊ฐ๋ ์ ๋ฆฌ (0) | 2025.11.11 |
| 22์ผ์ฐจ. IT ๊ฐ๋ ์ ๋ฆฌ (0) | 2025.11.07 |
| 21์ผ์ฐจ. IT ๊ฐ๋ ์ ๋ฆฌ (0) | 2025.11.06 |
| 20์ผ์ฐจ. IT ๊ฐ๋ ์ ๋ฆฌ (1) | 2025.11.05 |