2023-04 
๋งํฌ & ์ฝ์ ๊ฑฐ๋ฆฌ
DEVIEW 2023

์ง๋ 2์ ์ผ์ฑ๋ ์ฝ์์ค ๊ทธ๋๋๋ณผ๋ฃธ์์ ๊ฐ์ต๋ ๊ตญ๋ด ์ต๋ ๊ท๋ชจ ๊ฐ๋ฐ์ ์ฝํผ๋ฐ์ค DEVIEW์ ์์์ด ์ ๋ก๋๋์๋ค. FE ๊ธฐ์ ๊ณผ ๊ด๋ จ ์๋ ๋ฐํ ์ฃผ์ ๋ ๋ค์๊ณผ ๊ฐ์ด 8๊ฐ๋ก DEVIEW ๊ณต์ ์ฌ์ดํธ์ Session ํ์ด์ง์์๋ filter๋ฅผ web์ผ๋ก ์ค์ ํด ํ์ธํ ์ ์๋ค.
- ํ๋์ ์ฝ๋๋ก React, Vue, Svelte ๋ฑ ๋ชจ๋ ํ๋ ์์ํฌ๋ฅผ ์ง์ํ ์ ์๋ CFCs Reactive
- ๋์ผ๋ก ๋ณด๋ฉฐ ๋ฃ๋ ์์ฑ ๊ธฐ๋ก, ํด๋ก๋ฐ๋ ธํธ ์๋น์ค์ ์น ๊ธฐ์ ํบ์๋ณด๊ธฐ
- UI ๋น๋๋ฅผ ์งํฑํ๋ ๋ ๊ณ ๋ธ๋ก ๊ฐ์ ์ํคํ ์ฒ ๋ง๋ค๊ธฐ
- ์ค์ํ ๊ฑด ๊บพ์ด์ง ์๋ ๋ง์: ์ค๋งํธ์๋ํฐ์ ๋์
- GraphQL ์ ์ฐ๊ณ ๊ณ์ ๊ฐ์? (Production-ready GraphQL)
- SSRํ๊ฒฝ์์์ Micro-Frontend ๊ตฌํ๊ณผ ํผํฌ๋จผ์ค ํฅ์์ ์ํ ์บ์์ ๋ต
- ์๋ฐ์คํฌ๋ฆฝํธ ํ์ดํธ๋ฐ์ค ์ํธ์ ํฌ๋กฌ ๋ผ์ธ ๋ฉ์ ์ ์ ๋ณด์ ๊ฐํ
- ์จ์ผ ๋ธ๋ผ์ฐ์ ์คํ ์์ค ์์กด๊ธฐ
10 Web Development Trends in 2023
์ฌํด์ ์น ๊ฐ๋ฐ ํธ๋ ๋๋ ์ด๋ป๊ฒ ๋ ๊น? 2023๋ ์ ์น ๊ฐ๋ฐ ํธ๋ ๋์ ๋ํด ์ ๋ฆฌ๋ ์๋ฃ๋ฅผ ํตํด ์ฝ๊ฒ ์์๋ณผ ์ ์๋ค. ํ๊ตญ์ด ๋ฒ์ญ๋ ์กด์ฌํ๋ค.
TL;DR
- ๋ฉํ ํ๋ ์์ํฌ: Next.js, Remix, Sveltekit, SolidStart
- ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ๋ ๋๋ง ํจํด: SSR, SSG, ISR, Streaming SSR, On-demand ISR, CSR
- ์ฃ์ง์์ ์๋ฒ๋ฆฌ์ค: Cloudflare Workers, Deno Deploy, Vercel
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฅด๋ค์์ค:
- ์๋ฒ๋ฆฌ์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค: PlanetScale(MySql), Neon(PostgreSQL), Xata(PostgreSQL)
- ํ๋ซํผํ: Fly.io, Railway
- Firebase ๋์ฒด์ฌ: Supabase
- ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์: Deno, Cloudflare Workers, Bun
- ์๋ฒ์ฌ์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์์ ํํธํ ์งํ ์ค, ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ WinterCG(Web-interpoerable Runtimes Community Group)
- ๋ชจ๋ ธ๋ ํฌ: Turborepo, Nx, Rush, Lerna
- SSR์ ๋ถ์์ ๋ฐ๋ฅธ CSS ๋ณํ
- Utility First CSS: Tailwind CSS, UnoCSS, CSS Modules
- ์ ๋ก ๋ฐํ์ CSS-in-JS: vanilla-extract, linaria, astroturf, compiled
- ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ํตํ E2E ํ์ ์์ ์ฑ: tRPC, Zod, Prisma, TanStack Router
- ๋น๋ ๋๊ตฌ: Vite, Esbuild, Turbopack, webpack
- AI ์ฃผ๋ ๊ฐ๋ฐ: copilot, chatGPT
- ๊ธฐํ: Tauri, Playwright, Wrap, Fig, CSS Container Queries, htmx
SPA view transitions land in Chrome 111

์น์์ ๋ค์ดํฐ๋ธ ์ฑ์ฒ๋ผ ์์ฐ์ค๋ฌ์ด ์ ํ์ ๊ตฌํํ๋ ๊ฒ์ ์ด๋ ต๊ณ , ๊ท์ฐฎ์ ์์ ์ด์๋ค.
view transitions API
์ ์์ฐ์ค๋ฌ์ด ์ ํ ํจ๊ณผ๋ฅผ ์ฝ๊ฒ ๊ตฌํํ ์ ์๊ฒ ํด์ค๋ค. ํด๋น ๊ธฐ๋ฅ์ ํฌ๋กฌ์ ์ต์ ๋ฆด๋ฆฌ์ค ๋ฒ์ ์ธ 111 ๋ฒ์ ๋ถํฐ ์ง์๋๋ค.
Why Turborepo is migrating from Go to Rust

Vercel์ด ๋ชจ๋ ธ๋ ํฌ ํด Turborepo๋ฅผ ๊ธฐ์กด์ Go ์ธ์ด์์ Rust๋ก ์ฎ๊ธฐ๊ธฐ๋ก ๊ฒฐ์ ํ ๋ฐฐ๊ฒฝ์ ๋ํด์ ์ค๋ช ํ๋ค. Turbopack๊ณผ ์ฝ๋ ์ค๋ณต์ ์ ๊ฑฐํ๊ณ , ๊ฐ๋ฐ์ ๊ฒฝํ ํฅ์ ๋ฑ์ ์ด์ ๊ฐ ์์๋ค๊ณ ํ๋ค.
Programmers Dev Survey 2023
์ฝ๋ฉ ํ ์คํธ ํ๋ซํผ ํ๋ก๊ทธ๋๋จธ์ค์์ ๊ตญ๋ด ๊ฐ๋ฐ์ 4,034๋ช ์ ๋์์ผ๋ก ํ ์ค๋ฌธ ์กฐ์ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค.
์ฐ๋ด, ์ธ์ด, ํ๋ ์์ํฌ/๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๊ณ ๋ฏผ๊ฑฐ๋ฆฌ ๋ฑ์ ํญ๋ชฉ์ผ๋ก ๊ตฌ์ฑ๋์ด์ ๊ตญ๋ด ๊ฐ๋ฐ์๋ค์ ๊ฒฝํ๊ณผ ์๊ฐ์ ์ฟ๋ณผ ์ ์๋ค.
Announcing TypeScript 5.0
typescript 5.0์ด ๋ฆด๋ฆฌ์ค ๋์๋ค.
Decorators
, const Type Parameters
๋ฑ์ ๋ฌธ๋ฒ, ๊ธฐ๋ฅ์ ์
๋ฐ์ดํธ๋ ์์์ง๋ง ๋์ฑ ๋์ฌ๊ฒจ๋ด์ผ ํ ๊ฒ์ ESM
์ผ๋ก์ ์ ํ์ด๋ค.
TypeScriptโs Migration to Modules ํฌ์คํธ๋ฅผ ํตํด ESM
์ผ๋ก ์ ํํ๊ฒ ๋ ๋ฐฐ๊ฒฝ์ ๋ํด์ ๋ฐํ๊ณ ์๋ค.
Introducing react.dev
์ง๋ 3์ 16์ผ, ์๋ก์ด React ์ฌ์ดํธ react.dev๊ฐ ๊ณต๊ฐ๋์๋ค. React๋ ์ด์ ๊ณง ๊ณต๊ฐ 10๋ ('13๋ 5์ 29์ผ ๊ณต๊ฐ, [JSConfUS 2013] Tom Occhino and Jordan Walke: JS Apps at Facebook)์ ๋ง์ดํ๋ฉด์ ์ค๋๋ UI ๊ฐ๋ฐ์ ์์ด React๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋๋จํ๋ค๋ ์ ์ ์๋ฆฌ๊ธฐ ์ํด ์๋กญ๊ฒ ํํ์ด์ง๋ฅผ ๋จ์ฅํ๋ค๊ณ ํ๋ค.
๊ธฐ์กด ๋ฌธ์๋ค์ legacy.reactjs.org๋ฅผ ํตํด ์ ๊ทผํ ์ ์์ผ๋ฉฐ, ์๋กญ๊ฒ ๊ฐํธ๋ ํํ์ด์ง๋ ๋ค์ 2๊ฐ์ ๋ฉ์ธ ์น์ ์ผ๋ก ๋๋์ด ์๋ค.
- Learn React: React๋ฅผ ์ฒ์๋ถํฐ ๋ฐฐ์ธ ์ ์๋ ์๊ธฐ ์ฃผ๋ํ ๊ณผ์
- API Reference: ๋ชจ๋ React API์ ๋ํ ์ธ๋ถ ์ฌํญ๊ณผ ์ฌ์ฉ ์์ ๋ฅผ ์ ๊ณต
How to start a React Project in 2023
FE-news ๊ตฌ๋ ์๋ถ๋ค์ด๋ผ๋ฉด ์ง๋ 3์ Replace Create React App recommendation with Vite์์ ๊ณต์ ๋ฌธ์์ ์ถ์ฒ ๋๊ตฌ๋ก CRA ๋์ Vite๋ก ๋์ฒดํ์๋ PR๊ณผ ๊ทธ์ ๋ํ Dan Abramov์ ๋ต๋ณ์ ์๊ฐํ ์ฌ์ค์ ์๊ณ ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค.
์ง๊ธ ์๊ฐํ๋ ์ด ๊ธ์ ์์ ๋ต๋ณ ์ดํ ์์ฑ๋ react.dev์ Start a new React Project๋ฅผ ๋ณด๊ณ ์์ฑ๋์๋ค. Start a new React Project์์๋ Next.js, Remix, Gatsby, Expo๋ฅผ ์ถ์ฒํ๋๋ฐ, ์๊ฐ๋ ์ปค๋ฎค๋ํฐ๋ค์์ ์ด ์ถ์ฒ ๋ชฉ๋ก์ด ์๋ฒฝํ๊ฒ ๋ฐ์๋ค์ฌ์ง์ง ์๋ ๊ฒ ๊ฐ๋ค๊ณ ์ด์ผ๊ธฐํ๋ฉด์, ์ด๋ณด์๋ค์๊ฒ ์ข ๋ ๋ค์ํ ์ ํ์ง๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด Vite, Next.js, Astro๋ฅผ ์ถ์ฒํ๋ค. ๊ฐ๊ฐ์ ์ฅ๋จ์ ์ ๊ธฐ์ ํ๋ฉด์ ์ถ์ฒ๋ ์ด์ ์ ์ถ์ฒ๋์ง ๋ชปํ ์ด์ ๋ค์ ์ง์ด๋ณธ๋ค.
ํ๊ตญ์ด ๋ฒ์ญ๋ ์กด์ฌํ๋ค.
ํํ ๋ฆฌ์ผ
Progressive Web Apps (PWA) for Beginners - Microsoft
Microsoft์์ ์ด๋ณด์๋ฅผ ์ํ PWA ๊ฐ์๋ฅผ ๊ณต๊ฐํ๋ค. 4๊ฐ ์ฑํฐ, 17๊ฐ์ ๋น๋์ค๋ก ๊ตฌ์ฑ๋์ด ์๋ค. ๋น๋์ค๋น 10๋ถ ๋ด์ธ์ ๊ธธ์ด๋ผ์ ๋ถ๋ด ์์ด ๋ค์ ์ ์๋ค.
PWA: PWA๋ 'Progressive Web Apps'์ ์ค์ธ ๋ง๋ก, ๋ชจ๋ฐ์ผ ์ฌ์ดํธ์์ ๋ค์ดํฐ๋ธ ์ฑ๊ณผ ๊ฐ์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ๊ธฐ์ ์ด๋ค. ์ค์นํ ํ์๊ฐ ์์ง๋ง ํ ํ๋ฉด์ ์์ด์ฝ ์ถ๊ฐ ๋ฐ ํธ์ ์๋ฆผ๋ ๊ฐ๋ฅํ์ฌ ์ฌ์ฉ์์์ ์ ์ด ๊ธฐํ๋ฅผ ๋๋ฆด ์ ์๋ค. ๊ทธ๋ฟ๋ง ์๋๋ผ ์ฝ๊ธฐ ์๋์ ํ์์ ํฅ์, ์คํ๋ผ์ธ ์ง์ ๋ฑ ๋ค์ํ ์ด์ ์ ์ป์ ์ ์๋ค.
The complete guide to CSS media queries
CSS Media Queries์ ๋ํ ๊ธฐ๋ณธ ๊ฐ๋ ๋ถํฐ ๊ณ ๊ธ ๊ธฐ์ ๊น์ง ๋ค๋ฃฌ๋ค.
CSS Media Queries: ๋ฐ์ํ ๋์์ธ์ ๊ตฌํํ๋ ๋ฐ ํ์์ ์ธ ๊ธฐ์ ๋ก, ๋ฏธ๋์ด ์ ํ, ๋๋ฐ์ด์ค ์ค์ ๋ฐ ์ ๋ณด ๋ฑ์ ๊ธฐ์ค์ผ๋ก CSS ์คํ์ผ์ ์ ์ฉํ ์ ์๋ค. ์ด๋ฅผ ํตํด ๋๋ฐ์ด์ค์ ํฌ๊ธฐ๋ ๋ฐฉํฅ ๋ฑ์ ๋ฐ๋ผ ์ต์ ํ๋ ๋์์ธ์ ์ ๊ณตํ ์ ์๊ฒ ๋๋ค.
FP and OOP are close siblings
์ด ๊ธ์ FP์ OOP๊ฐ ์กฐํ๋กญ๊ฒ ๊ฐ์ด ์ฌ์ฉ๋ ์ ์๋ค๋ ์ ์ ์๊ธฐํ๊ธฐ ์ํ ๋ชฉ์ ์ ๊ฐ๊ณ ์์ง ์๋ค. ๊ทธ๋ฌ๋ ์ด ๋์ ๋งค์ฐ ์ ์ฌํ๋ฉฐ, ๋ ์ธ๊ณ์ ํน์ ํจํด์ ๋ํ ์ถ๋ก ์ ๋ํด ๋ช ๊ฐ์ง๋ฅผ ๋ฐฐ์ฐ๋ฉด ๋ ๊ฐ์ง๋ฅผ ๋ชจ๋ ์ง์ ์ผ๋ก ์ดํดํ ์ ์๋ค๋ ์ ์ ๋งํ๋ค.
OOP์ FP๋ ๋ชจ๋ ์ธ๊ฐ ์ธ๊ณ์ ๋ณต์กํ ๋ฌธ์ ๋ฅผ ๋ ์ ํํํ๊ณ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ด๋ผ๋ ๋์ผํ ๋ฌธ์ ์ ๋ํ ํด๊ฒฐ์ฑ ์ด๋ฉฐ, Function Currying์ ํตํด ์ ๊ทผํ๊ณ ์๋ค. ๊ฐ๋จํ ์์ฝํ์๋ฉด, ์ด ๊ธ์ "OOP ๊ฐ๋ฐ์๋ฅผ ์ํ FP"๋ก ์๊ฐํ๋ฉด ๋๋ค.
Speeding up the JavaScript ecosystem - npm scripts
npm script
๋ ๋์ ๋น๋๋ก ๋ชจ๋ ๊ณณ์์ ์คํ๋์ง๋ง, ์ต์ ํ๊ฐ ์๋์ด ์์ง ์์ผ๋ฉฐ ๋์ ๋ฐ๋ผ 400ms์ ์ค๋ฒํค๋๋ฅผ ์ถ๊ฐํ๊ธฐ๋ ํ๋ค. ์ด ๊ธ์์๋ 0 ~ 22ms๋ก ์ด๋ป๊ฒ ๋ฎ์ถ ์ ์๋์ง๋ฅผ ์ค๋ช
ํ๋ค.
[์ฐธ๊ณ ] ์ด ๊ธ์ "Speeding up the JavaScript ecosystem"์ 4๋ฒ์งธ ์๋ฆฌ์ฆ ๊ธ๋ก, ์ด์ ์ ๋ค๋ฅธ ์๋ฆฌ์ฆ์ ๊ธ๋ค๋ ๊ฐ์ด ์ฐธ๊ณ ํด ๋ณด๋ฉด ์ข๋ค.
์ฝ๋์ ๋๊ตฌ
JSVerbalExpressions
์ ๊ท ํํ์์ ๊ฐ๋ ฅํ์ง๋ง, ๊ฐ๋ ์ฑ์ด ํญ์ ์์ฝ๋ค. JSVerbalExpressions์ ์ ๊ท ํํ์์ ๋ ๋์ ๊ฐ๋ ์ฑ์ผ๋ก ์์ฑํ๊ฒ ๋์์ค๋ค.
๋น์ทํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก magic-regexp๋ ์ดํด๋ณด๊ธธ ๋ฐ๋๋ค.
const tester = VerEx()
.startOfLine()
.then('http')
.maybe('s')
.then('://')
.maybe('www.')
.anythingBut(' ')
.endOfLine();
// ๐๐ป ์ ์ฝ๋๋ /^(http)(s)?(\:\/\/)(www\.)?([^\ ]*)$/ ์ ๊ท์์ ํํํ๋ค.
if (tester.test('https://www.naver.com')) {
alert('url ํ
์คํธ ํต๊ณผ');
}
Framework7
๋ค์ดํฐ๋ธ ์ฑ๊ณผ ์ ์ฌํ ๋ชจ์ต๊ณผ ๊ฒฝํ์ ์น ์ฑ์ ๊ฐ๋ฐํ๊ธฐ ์ํ ํ๋ ์์ํฌ๋ค. ์ ๋ช ์บ๋ก์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ swiper ๊ฐ๋ฐ์๊ฐ ๊ฐ๋ฐํ๋ค.
์ ๊ณต๋๋ ๊ธฐ๋ฅ๋ค์ ๋ฐ๋ชจ์์ ํ์ด๋ณผ ์ ์๋ค.
์ ์ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก stackflow๋ ์ดํด๋ณด๊ธธ ๋ฐ๋๋ค.
Turbowatch
Nodemon๊ณผ ์ ์ฌํ ๋๊ตฌ๋ก ํ์ผ์ ๋ณ๊ฒฝ์ ๋น ๋ฅด๊ฒ ๊ฐ์งํ๊ณ , ์์ ๋ค์ ๋ํ ์ค์ผ์คํธ๋ ์ด์ ์ ์ํํ๋ค.
chatGPT JS2TS
Chat GPT๋ฅผ ํ์ฉํด JavaScript ์ฝ๋๋ฅผ TypeScript๋ก ๋ณํํด ์ฃผ๋ ๋๊ตฌ๋ก, ๊ฐ๋จํ๊ฒ ๊ธฐ์กด JavaScript ์ฝ๋๋ฅผ ๋ถ์ฌ๋ฃ๊ธฐํด ๋ณํํ ์ ์๋ค.