Bun 1.0 stable ๋ฒ์ ์ด ๋ฆด๋ฆฌ์ค๋์๋ค.
Bun์ Webkit ๊ธฐ๋ฐ์ JavaScript, TypeScript ํด ์ฒด์ธ์ด๋ฉฐ Zig๋ก ์์ฑ๋์๋ค. ์๋นํ ๋น ๋ฅธ ๋ฒค์น๋งํฌ ์๋๋ฅผ ๋ณด์ฌ์ ํฐ ๊ด์ฌ์ ๋ฐ๊ณ ์๋ค. Node.js, npx, Babel, esbuild, swc, webpack, Jest, Vitest, npm, Yarn, pnpm ๋ฑ์ ํ๋ฐํธ์๋ ๋๊ตฌ๋ค์ ๋์ฒดํ ์ ์๋ค.
๊ธฐ์กด ๋๊ตฌ์์ ํธํ์ฑ์ด ๋ฐ์ด๋๊ณ , ESM/CJS๋ฅผ ํผํฉ ์ฌ์ฉ์ ์ง์ํด์ drop-in-replace ๋ฐฉ์์ผ๋ก ์ฝ๊ฒ ์ ์ฉํ ์ ์๋ค.
Bun์ด Node.js์ ๊ธฐ๋ฅ๊ณผ ๋น๊ตํ๋ฉด์ ์ค๋ช
ํ๋ค.
Node.js๋ฅผ ์๊ณ ์๋ค๋ฉด, ์ฝ๋ ๋น๊ต๋ฅผ ํตํด Bun์ ์ฌ์ฉ๋ฒ์ ์ฝ๊ฒ ์ตํ ์ ์๋ค.
Runtime, Package Manager, Bundler, Test Runner๊ฐ ์ด๋ป๊ฒ ๋ค๋ฅธ์ง ๋ค๋ฃฌ๋ค.
Bun์ Node.js๋ณด๋ค ์๋นํ ๋น ๋ฅธ ๋ฒค์น๋งํฌ ์๋๋ฅผ ๋ณด์ฌ์ ํฐ ๊ด์ฌ์ ๋ฐ๊ณ ์๋ค.
๊ด์ฌ์ ํฌ์ธํธ๋ฅผ ์ง์ ์คํ์ ํ ๋ด์ฉ์ผ๋ก, Node.js v20.6.1(fastify) vs Bun v1.0.2(elysia) ๋๊ฒฐ์ด ๊ถ๊ธํ๋ค๋ฉด ์ ์ ์ดํด๋ณผ๋ง ํ๋ค.
๊ฒฐ๋ก ๋ง ์ด์ผ๊ธฐํ์๋ฉด, ๊ฐ๋จํ ์์ ์์๋ ํฐ ์ฐ์๋ฅผ ๋ณด์๋ Bun์ด ๋ณต์กํ ์์ ์์๋ ๋ ๋๋ ค์ง๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
Ruby on Rails์ ๊ฐ๋ฐ์ ๋ฐ์ด๋น๋ ํ์ด๋ค๋ง์ด์ด ํธ์จ(์ดํ DHH)์ Turbo 8 is Dropping TypeScript ํฌ์คํธ๊ฐ ํ์ ๋ฅผ ๋ชจ์๋ค.
์ต๊ทผ์, svelte ๋ํ ํ๋ ์์ํฌ ๊ฐ๋ฐ ์ TypeScript๋ฅผ ์ฌ์ฉํ์ง ์๋ ๋ฐฉํฅ์ผ๋ก ์ ํํ๊ธฐ๋ ํด์ ๋์ฑ ๋๊ธธ์ด ๊ฐ๋ ์์์ด๋ค.
์ฐ๋ฆฌ๋ TypeScript๋ฅผ ๋ฒ์ด๋์ผ ํ ๋์ผ๊น? ์์์ ํตํด์ ํ์ธํด ๋ณด์.
TypeScript์ core contributors์ ์ฌ์ฉ์, Microsoft ๊ด๊ณ์๋ค์ ์ด์ผ๊ธฐ๋ค์ ๋ชจ์์ ๋ง๋ ๋คํ๋ฉํฐ๋ฆฌ๋ค. Microsoft๊ฐ TypeScript๋ฅผ ์ถ๊ตฌํ ๊ฐ์น๊ฐ ์๋ค๊ณ ๋๋ ์ด์ ๋ฅผ ๋น๋กฏํ์ฌ TypeScript์ ์ฐฝ์ ๋๊ธฐ์ ๊ณผ์ ์ ๋ํด ์์ธํ ๋ค๋ฃฌ๋ค.
์๋ 6์, Node.js์์๋ LTS 16 ๋ฒ์ ์ ์ง์ ์ข ๋ฃ ์ผ์๋ฅผ 2023๋ 9์ 11์ผ๋ก ์๋น๊ธด๋ค๊ณ ๋ฐํํ๋ค. ๊ณต์์ ์ธ ์ง์ ์ข ๋ฃ์ผ์ 2024๋ 4์์ด์๊ธฐ ๋๋ฌธ์, ์ง์ ์ข ๋ฃ์ผ์ด 7๊ฐ์์ด๋ ์๋น๊ฒจ์ง ๊ฒ์ด๋ค.
Node.js 16 ๋ฒ์ ์ ๊ณต์ ์ง์ ์ข ๋ฃ์ผ์ด ์๋น๊ฒจ์ง ์ด์ ๋ Node.js ๋ด๋ถ์ ํฌํจ๋ OpenSSL์ด๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ง์ ์ข ๋ฃ ์ผ์ ๋๋ฌธ์ด๋ค.
์ด๋์ ์ง์ ๊ธฐ๊ฐ์ด ์ข ๋ฃ๋์๊ธฐ ๋๋ฌธ์, ๊ฐ๋ฅํ๋ฉด LTS 18์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ ๋ณด์ธ๋ค.
๊ตญ๋ด ์ต๋ ํ๋ฐํธ์๋ ๊ฐ๋ฐ ์ฝํผ๋ฐ์ค์ธ FEConf๊ฐ ์ฌํด์๋ ๋ค์ ๋์์จ๋ค. 10์ 21์ผ ํ ์์ผ์ ์ ์ค ๋กฏ๋ฐํ์์์ ์งํ๋๋ฉฐ, 10์ 5์ผ ๋ชฉ์์ผ ์ผ๋ฐ ํฐ์ผ์ ํฐ์ผํ ์ ์์ํ๋ค. ๋ค์ด๋ฒ ์์ฝ์ ํตํด์ ์๋งคํ ์ ์๋ค.
์ฌํด์ ๋ฐํ ์ฃผ์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- React ๋ฐ๊นฅ์ ํ๋ก ํธ์๋ - ์ ์ํ ยท ํฌํธ์
- ์น ๊ธฐ๋ฐ ๊ทธ๋ํฝ ํธ์ง๊ธฐ์ ๊ตฌ์กฐ์ 7๊ฐ์ง ๋์์ธ ํจํด - ์ฌํฅ์ด ยท Naver
- use ํ ์ด ๋ฐ๊ฟ ๋ฆฌ์กํธ ๋น๋๊ธฐ ์ฒ๋ฆฌ์ ๋ฏธ๋ ๋ง๋ณด๊ธฐ - ๋ฌธํ๊ทผ ยท ๋ฐ๋ธ์์คํฐ์ฆ
- SSR ํ๊ฒฝ(Node.js) ๋ฉ๋ชจ๋ฆฌ ๋์ ๋๋ฒ๊น ๊ฐ์ด๋ - ๋ฐ์งํ ยท ํ ์คํ๋ ์ด์ค
- ๋ช ์ฒ ํ์ด์ง์ ์ ์ ๊ฐ์ด๋๋ฅผ ์๋ก ๋ง๋ค๋ฉฐ - ์ด์ฐฌํฌ ยท AB180
- Vue+express์๋ ์๋น์ค๊ฐ ์ด์ธ๊ณ์์ Next.js? (ํ๋ ์์ํฌ ๋ง์ด๊ทธ๋ ์ด์ ) - ์ ์ง๋ง ยท ์จ๊ณ
- ์ด๋ฒคํธ ๊ธฐ๋ฐ ์น๋ทฐ ํ๋ ์์ํฌ ์ค๊ณ์ ํ๋ฌ๊ทธ์ธ ์ํ๊ณ ๋ง๋ค๊ธฐ - ์์งํ ยท ๋น๊ทผ
- React Native, Metro๋ฅผ ๋์ด์ - ๋ฐ์์ง ยท ํ ์ค
- ๋ํ ์น ์ ํ๋ฆฌ์ผ์ด์ Micro Frontends ์ ํ๊ธฐ - ๊น์ข ํ ยท flex
- ํฌ๋ก์ค ํ๋ซํผ ๋์์ธ ์์คํ , 1.5๋ ์ ๊ธฐ๋ก. - ํํ์ ยท ๋น๊ทผ
์ ํ์ด ์๋ก์ด ์ด์์ฒด์ iOS 17, macOS Sonoma๋ฅผ ์ ๋ณด์๋ค. ์ด์ ๋ง์ถฐ์ safari๋ ์๋ก์์ก๋ค.
๋ฐ์คํฌํฑ PWA ์ง์, ๊ฐ๋ฐ์ ๋๊ตฌ ๊ธฐ๋ฅ ์ถ๊ฐ, Storage API fully support ๋ฑ์ ๋ณํ๊ฐ ๋์ ๋๋ค.
์ง๋ 7๋ ๊ฐ React์ ์์ด์ฝ๋ ํ ๊ฐ๋ฐ์๋ก ํ๋ํ๋ Dan Abramov๊ฐ Meta๋ฅผ ๋ ๋๊ณ , bluesky์ ํฉ๋ฅํ๋ค๋ ์์์ ์ ํ๋ค.
Expo(React-Native) ๊ธฐ๋ฐ์ cross-platform ์๋น์ค ์ฑ์ ๊ฐ๋ฐํ๋ค๊ณ ํ๋ค.
Astro 3.0์ด ๋ฆด๋ฆฌ์ค๋์๋ค. View Transition API๋ฅผ ํตํด์ ์ ๋ คํ ํ์ด์ง ์ ํ์ ์ง์ํ๋๋ฐ, Astro 3.0์ View Transition API๋ฅผ ์ง์ํ๋ ์ต์ด์ Major ์น ํ๋ ์์ํฌ๋ผ๊ณ ํ๋ค.
์ด์ธ์๋, ์ฌ๋ฌ ๋ณ๊ฒฝ์ฌํญ์ ํฌํจํ๋ค.
- ์ด๋ฏธ์ง ์ต์ ํ(stable)
- ๋นจ๋ผ์ง ๋ ๋๋ง ์ฑ๋ฅ: Astro ๊ตฌ์ฑ ์์์ ๋ ๋๋ง ์๋ 30-75% ํฅ์
- ์๋ฒ๋ฆฌ์ค๋ฅผ ์ํ SSR ํฅ์: ํธ์คํ ํ๋ซํผ์ ์ฐ๊ฒฐํ๋ ์๋ก์ด ๋ฐฉ๋ฒ ์ ๊ณต
- JSX๋ฅผ ์ํ HMR ํฅ์: React ๋ฐ Preact๋ฅผ ์ํ HMR ์ง์.
- ์ต์ ํ๋ ๋น๋ ๊ฒฐ๊ณผ๋ฌผ
์ง๋ 9์, ์ฐจ๊ธฐ ๋ฉ์ด์ ๋ฆด๋ฆฌ์ค์ธ Svelte 5์ ํฌํจ๋ ์๋ก์ด ๊ธฐ๋ฅ์ผ๋ก, ์ปดํฌ๋ํธ ๋ด๋ถ์ ๋ฐ์์ฑ์ ์ ์ดํ๊ธฐ ์ํ ๊ฐ๋ ฅํ ํ๋ฆฌ๋ฏธํฐ๋ธ ์ ์ธ โrunesโ์ ๊ณต๊ฐํ๋ค.
โRuneโ์ ์ ๋น์ฃผ์๋ ๋ง๋ฒ์ ์์ง์ผ๋ก ์ฌ์ฉ๋๋ ๋ฌธ์๋ ํ์๋ฅผ ์๋ฏธํ๋ฉฐ, ํจ์ ๊ตฌ๋ฌธ์ ํ์ฉํด ๋ฐ์์ฑ์ ๋ฌ์ฑํ๋๋ก ํ๋ค.
๊ธฐ์กด์ svelte ์ฝ๋๋ (์ปดํ์ผ๋ ํ) ์ฌ์ฉ์์ ์ด๋ฒคํธ์ ๋ฐ๋ผ ๋ฐ์๋๋๋ก ๊ตฌ์ฑ๋์ง๋ง, ์ฝ๋๊ฐ ๋ณต์กํด์ง๋ฉด ์ด๋ค ๊ฐ์ด ๋ฐ์ํ์ธ์ง ํ์ ํ๋ ๊ฒ๊ณผ ๋ช๋ช ์ํฉ์์ ํผ๋์ค๋ฌ์ด ์ํฉ๋ค์ ์ ๊ฑฐํ๊ณ ๋ฐ์์ฑ์ ํ์ผ ๊ฒฝ๊ณ๋ฅผ ๋์ด ํ์ฅ๋๋๋ก ๋ง๋ค ์ ์๋ค๊ณ ํ๋ค.
Preview ์ฌ์ดํธ๋ฅผ ํตํด ์ ๊ณต๋๋ ๋ฌธ์์ REPL์ ํตํด ์ง์ ์ฌ์ฉํด ๋ณผ ์ ์๋ค.
[์ฐธ๊ณ ] Rune ๋ฌธ์๋ ๋์กฑ์ ์ํ๋ฒณ๋ค์ด๋ฉฐ ๋ค์ํ ๊ฒ๋ฅด๋ง์ดํ์์ ๋ผํด ์ํ๋ฒณ์ผ๋ก ๋์ฒด๋๊ธฐ ์ ์ด๋ ํน์ํ ๋ชฉ์ ๋ฑ์ผ๋ก ์ฌ์ฉ๋๋ ๋ฌธ์์ด๋ค
- Wikipedia: ๋ฃฌ ๋ฌธ์
Babel์ ๊ฐ๋ฐํ๋ Sebastian McKenzie๊ฐ ์น์ ์ํ ๋จ์ผ ํด์ฒด์ธ์ ์งํฅํ๋ฉฐ ๊ฐ๋ฐํด์ค๋ Rome์ ๋ํด์ ์๊ณ ์์์ง ๋ชจ๋ฅด๊ฒ ๋ค. Meta OSS์ ์ผ์์ผ๋ก ์์๋์๋ ํ๋ก์ ํธ๋ ์ดํ, Rome Tools Inc. ํ์ฌ๋ก ๋ฐ์ ๋์๋ค.
๊ทธ๋ฌ๋, ์์ฝ๊ฒ๋ ํ์ฌ Rome์ ํ๋ก์ ํธ ๊ฐ๋ฐ์ ์ค๋จ๋์์ผ๋ฉฐ ํ์ฌ์ ์ํ ๋ชจ๋ ๊ฐ๋ฐ์๋ ํด๊ณ ๋์๋ค.
Rome ํํ์ ๊ฐ๋ฐ์๋ก ์ผํ์๋ Emanuele Stoppa(ํ Astro ๊ฐ๋ฐํ ์์)๋ โ์น์ ์ํ ๋จ์ผ ํด์ฒด์ธโ ๋ฏธ์ ์ ๊ณ์นํ๊ธฐ ์ํด Rome์ ํฌํฌํ ์๋ก์ด ํ๋ก์ ํธ์ธ Biome๋ฅผ ๊ณต๊ฐํ๋ค.
v0์ AI๋ก ๊ตฌ๋๋๋ Vercel์ ์์ฑํ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์์คํ ์ผ๋ก, ์ฌ์ฉ์๊ฐ ํ๋กฌํํธ๋ฅผ ํตํด ํ๋ก์ ํธ์์ ์ฌ์ฉํ ์ ์๋ shadcn/ui ๋ฐ Tailwind CSS ๊ธฐ๋ฐ์ copy-and-paste ์นํ์ ์ธ React ์ฝ๋๋ฅผ ์์ฑํ๋ค. (๋๋ CLI๋ฅผ ํตํด ํ๋ก์ ํธ์ ์๋์ผ๋ก ์ถ๊ฐํ ์๋ ์๋ค๊ณ ํ๋ค.)
์์ง์ ์ํ ์ํ์ด๋ฉฐ, ์ฌ์ฉํ๊ธฐ ์ํด์ ๋๊ธฐ ๋ฆฌ์คํธ๋ฅผ ํตํด ๋ฑ๋กํ๊ณ ๊ธฐ๋ค๋ ค์ผ ํ๋ค. ์ด๋ค ๊ฒฐ๊ณผ๋ฌผ์ ์ป์ ์ ์๋์ง ์ฌ์ฉ์๋ค์ด ํ๋กฌํํธ๋ฅผ ํตํด ์์ฑํ ์์ ๋ฅผ ํตํด ํ์ธํด ๋ณผ ์ ์๋ค.
์ธ๊ฐ์ ์๊ฐ๊ณผ ํ๋๋ฐฉ์์ ๊ฐ๋ ์ ์ผ๋ก ์ ๋ฆฌํ ์ฌ๋ฆฌํ ๋ฒ์น์ UX ๋์์ธ์ ์ค์ํ ์ํฅ์ ๋ฏธ์น ์ ์๋ค. ๋ํ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ๋ฒ์น๋ค์ด ์๋ค.[์ฐธ๊ณ ] ์ค ์ฌ์ฉ ๋ฐ๋ชจ๋ ๋ค์ ์์์ ํตํด ํ์ธํด ๋ณผ ์ ์๋ค.
- Jakobโs Law: ๊ธฐ์กด์ ์ฌ์ฉํด์๋ ๊ฒฝํ์ ๋ฐํ์ผ๋ก ๋ค๋ฅธ ๊ฒ๋ ๋์ผํ ๋ฐฉ์์ผ๋ก ์๋ํ๋ ๊ฒ์ ์ ํธ.
- Fitts's Law: ๋์์ ๋ชฉ์ ์ ๋ฌ์ฑํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๋์๊น์ง์ ๊ฑฐ๋ฆฌ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ค.
- Hick's Law : ๊ฒฐ์ ์ ๋ด๋ฆฌ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ ํ์ง์ ์์ ๋ณต์ก์ฑ์ ๋น๋กํ๋ค.
์ ์ฌ์ดํธ์์๋ ๊ฐ๊ฐ์ ๋ํ ๋ฒ์น๋ค์ ๋ํ ์ค๋ช ๊ณผ UI/UX ์ ์์, ๊ทธ๋ฆฌ๊ณ ๊ด๋ จํด์ ์ฝ์ผ๋ฉด ์ข์ ๋งํ ์ํฐํด ๋งํฌ๋ค์ ์ ๊ณตํ๊ณ ์๋ค.
์ปดํฌ๋ํธ์ ์ญํ ์ด ์ปค์ง๋ฉด์ ์ ์ ๋ง์ props๊ฐ ๋ง๋ค์ด์ง๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ์ ์๋ ์ด๋ฅผ YAP(Yet Another Prop)๋ผ๊ณ ๋ช ํ๊ณ , YAP์ ํผํ๋ ๋ฐฉ๋ฒ์ ๊ฐ๋จํ ์นด๋ UI๋ฅผ ๊ตฌํํ๋ฉด์ ์๊ฐํ๋ค.
Headless UI library์ธ Radix์ ์ฌ์ฉ๋๋ฉด์ ์ ๋ช ํด์ง asChild ํจํด์ TypeScript๋ก ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํ๋ค.
ํ๊ธ ๋ฒ์ญ ํฌ์คํธ๋ก ํธํ๊ฒ ์ฝ์ ์ ์๋ค
๋ณต์กํ UI ์์ ์ ์ฒ๋ฆฌํ๋ ๊ฐ๋ ฅํ ์ ๊ทผ๋ฒ์ธ Headless Component ํจํด์ ์๊ฐํ๋ค. Headless Components ํจํด์ UI์ ๋์์ ๋ถ๋ฆฌํ๊ณ , ๋์๊ณผ ๊ด๋ จ๋ ๋ก์ง์ ๋ชจ์์ ๊ด๋ฆฌํ์ฌ ์ ์ง ๋ณด์๋ฅผ ์ฝ๊ฒ ๋ง๋ ๋ค.
์ฌ๋ฏธ์๋ ๊ฒ์์ ํํ๋ก CSS ์ ํ์๋ฅผ ๋ฐฐ์ฐ๊ณ ์ฐ์ตํด ๋ณผ ์ ์๋ค.
์ ์ฌํ ๊ฒ์์ ํํ๋ก flexbox๋ฅผ ๋ฐฐ์๋ณผ ์ ์๋ ๋ค์ ์ฌ์ดํธ๋ ์ฐธ๊ณ ํด ๋ณด๊ธฐ ๋ฐ๋๋ค.
next.js, tRPC, tailwind css, prisma, next-auth ๋ฑ์ ๊ธฐ์ ์ ์กฐํฉํด์ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ full-stack web app์ ๊ฐ๋ฐํ ์ ์๋๋ก ๋์์ฃผ๋ CLI ๋๊ตฌ์ด๋ค.
์์ ๋ชจ๋ ๊ธฐ์ ์ ์ฌ์ฉํ ํ์๋ ์๋ค. ๋ํํ ์ธํฐํ์ด์ค๋ฅผ ํตํด์ ์ ์ธํ๊ณ ์ถ์ ๊ธฐ์ ์ ์ ์ธํ๊ณ ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ฑํ ์ ์๋ค.
T3 Stack Tutorial - FROM 0 TO PROD FOR $0 t3-app์ ๋ง๋ Theo๊ฐ ์ง์ ๋ง๋ ํํ ๋ฆฌ์ผ ์์์ด ์๋ค
ํฌ๋กฌ ์ต์คํ ์ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋น ๋ฅด๊ฒ ๊ตฌ์ถํด ์ฃผ๋ scaffolding ๋๊ตฌ์ด๋ค. ์ฌ๋ฌ ์น ํ๋ ์์ํฌ, HMR, ๋คํฌ ๋ชจ๋ ๋ฑ์ ์ง์ํ๋ค.
์ธ์์์ ๊ฐ์ฅ ์์ reactive UI framework๋ผ๊ณ ์ค์ค๋ก๋ฅผ ์๊ฐํ๋ JavaScript ํ๋ ์์ํฌ๋ค.
const Counter = () => {
const counter = van.state(0);
return div(
'โค๏ธ ',
counter,
' ',
button({ onclick: () => ++counter.val }, '๐'),
button({ onclick: () => --counter.val }, '๐')
);
};
van.add(document.body, Counter());0.9kB์ ์์ ๋ฒ๋ค ์ฌ์ด์ฆ๊ฐ ํน์ง์ด๋ฉฐ, React์ ์ ์ฌํ๊ฒ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ด์ React์ ์ต์ํ ๊ฐ๋ฐ์๊ฐ ๊ฐ๋จํ๊ฒ Vanilla ์ฝ๋๋ฅผ ์์ฑํ ๋ ์ ์ฉํด ๋ณด์ธ๋ค.

.png)





