2023-02 
๋งํฌ & ์ฝ์๊ฑฐ๋ฆฌ
The Most Demanded Frontend Frameworks in 2022
ํ์ฌ ์ค์ ๋ก ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๊ณ ์๋ ํ๋ ์์ํฌ๋ ๋ฌด์์ผ๊น? ๊ฐ์ข ์ค๋ฌธ์กฐ์ฌ ๋ฑ์ ํตํด ๋๋ ์์ฐ๋๋ ์ฝํ ์ธ ๋ฅผ ํตํด ๊ฐ์ ์ ์ผ๋ก ํ์ ๋๊ธฐ๋ ํ์ง๋ง, ์ค์ ์ฌ์ฉ๋ฅ ์ ์ธ๊ธฐ์ ๋น๋กํ๋ค๊ณ ๋ณผ ์๋ ์๋ค.
๊ฐ๋ฐ์ ์ฑ์ฉ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ DevJobsScanner์์๋ 14๊ฐ์๊ฐ(โ21/10 ~ โ22/11) ๊ฐ ์ฑ์ฉ ์๋น์ค๋ค(LinkedIn, Glassdoor, RemoteOK, Dice ๋ฑ)์ ๋ฑ๋ก๋ ๊ตฌ์ธ ๊ธ์ ๋ถ์ํด โ22๋ ํ๋ ์์ํฌ์ ๋ํ ์์๊ฐ ๊ฐ์ฅ ๋ง์๋์ง ๊ณต๊ฐํ๋ค.
TypeScript vs JavaScript | Guido van Rossum and Lex Fridman
TypeScript์ JavaScript์ ๋ํด Python์ ์ฐฝ์์์ธ Guido Van Rossum์ ์ด๋ค ์๊ฐ์ ๊ฐ๊ณ ์์๊น? 6๋ถ ๋ถ๋์ ์งง์ ์์์ ํตํด ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๋๊ฐ์ ์๊ฒฌ์ ์ง์ ๋ค์ด๋ณด๊ธฐ๋ฅผ ์ถ์ฒํ๋ค.
A cure for React useState hell?
๋ง์ฝ ์ฌ๋ฌ๋ถ์ ์ฝ๋์์ ์ฌ๋ฌ ์ํ ๊ฐ์ ๋ค๋ฃจ๊ธฐ ์ํด useState hook์ ๋ค์ ์ฌ์ฉํ๊ณ ์๋ ๊ฒฝ์ฐ๋ผ๋ฉด, ์ด๋ ์ด์ฉ๋ฉด โuseState hook hellโ์ธ ์ํ์ ๋์ฌ์์ ์ ์๋ค.
์ด ๊ฒฝ์ฐ, useReducer hook์ ํตํด ๋ณต์ก๋๋ฅผ ๊ฐ์ ํ ์ ์๋ ๋ฐฉ๋ฒ๊ณผ ์ฌ์ฉ์ ๋ฐ๋ฅธ ์ฃผ์์ ๋ฑ์ ์๊ฐํ๋ค.
Introducing the WebAssembly JavaScript Promise Integration API
JSPI(JavaScript Promise Integration) API๋ ์ธ๋ถ ๊ธฐ๋ฅ์ ๋ํ ์ ๊ทผ์ด ๋๊ธฐํ๋ก ์ฒ๋ฆฌ๋๋ ๊ฒ์ ๊ฐ์ ํด ์์ฑ๋ wasm ์ ํ๋ฆฌ์ผ์ด์ ๋ค์ด ์ค์ ๋ก๋ ๋น๋๊ธฐ๋ก ์ฒ๋ฆฌ๋๋ ํ๊ฒฝ์์ ์ํํ๊ฒ ์๋๋๊ฒ ๋ง๋ค์ด ์ค๋ค.
JSPI๋ ๋๊ธฐ/๋น๋๊ธฐ Web API๋ค ๊ฐ์ ๋ธ๋ฆฌ์ง ์ญํ ์ ์ํํ๋ฉฐ, ๋๊ธฐ API ์์ฒญ์ด ๋ฐ์ํ๋ฉด, ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ์ ์ ์ ์ค๋จํ๋ค๊ฐ ๋น๋๊ธฐ I/O ์์ ์ด ์๋ฃ๋๋ฉด ๋ค์ ์ฌ๊ฐํ๋ ํ์์ผ๋ก ๋์ํ๋ค.
์ด ๊ธ์ JSPI API ํต์ฌ ๊ธฐ๋ฅ๋ค๊ณผ ์ด๋ป๊ฒ ์ฌ์ฉ๋ ์ ์๋์ง ๊ทธ๋ฆฌ๊ณ ์ด์ ๋ํ ์์ ๋ค์ ์ ๊ณตํ๋ค.
Summer Afternoon
์คํ์ธ ์ถ์ ์ Vicente Lucendo๊ฐ ๊ณต๊ฐํ ์คํ์ ์น ๊ฒ์(?)์ผ๋ก ์กฐ์ฉํ ์ด๋ ์ฌ๋ฆ๋ ์ ํ๊ฒฝ์ ๋ฐฐ๊ฒฝ์ผ๋ก ํ๋ค. ์ ์ฐจ์ 3D ์ํธ(Procedural 3D Art)๋ฅผ ์ฐ์ตํ๊ธฐ ์ํด ๋ง๋ค์๋ค๊ณ ํ๋ค.
์ํ, ๋น๋์ค ๊ฒ์ ๋ฑ์์ ํ์ฉ๋๋ 3์ฐจ์ ์ ๋๋ฉ์ด์ /์๊ฐํจ๊ณผ ์ํํธ์จ์ด์ธ SideFx์ Houdini์ Three.js, WebGL ๋ฑ์ ํ์ฉํด ๊ฐ๋ฐํ๋ค๊ณ ํ๋ค.
Scrollend, a new JavaScript event
์คํฌ๋กค์ด ์๋ฃ๋์์ ๋ ์ฌ์ฉํ ์ ์๋ ์๋ก์ด ์คํ์ onscrollend
์ด๋ฒคํธ๊ฐ ์ถ๊ฐ๋์๋ค. ๊ทธ๊ฐ ์คํฌ๋กค์ ๋ํ ์ด๋ฒคํธ๋ onscroll
์ด๋ฒคํธ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๋ง ์์๊ณ , ์ฌ์ฉ์์ ์คํฌ๋กค ์ก์
๋ง๋ค ๋ฌด์ธ๊ฐ ์ฒ๋ฆฌํ๊ณ ์ ํ๋ค๋ฉด, ๋ง์ง๋ง ์คํฌ๋กค์ด ๋ฐ์ํ ์์ ๋ถํฐ ์ผ์ ์๊ฐ(๋๋ต 1s ๋ค) ๋์ ์๋ก์ด ์คํฌ๋กค ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ง ์์ ๋ ์์
์ ์ฒ๋ฆฌํ๋ ์ ๊ทผ ๋ฐฉ๋ฒ์ ํ์ฉํ์๋ค.
์์ง ๋ธ๋ผ์ฐ์ ์ปค๋ฒ๋ฆฌ์ง(FF 109+, Chrome 109 chrome://flags/#enable-experimental-web-platform-features
ํ๋๊ทธ ํ์ฑํ ํ ๊ฒฝ์ฐ)๊ฐ ๋์ง๋ ์์ง๋ง, Chrome์ ๊ฒฝ์ฐ 112 ๋ฒ์ ์ ํตํด ์ ์ ์ง์๋ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.
[์ฐธ๊ณ ] MDN: Document: scrollend event
The State of JS 2022
์ง๋ 1๋ ๊ฐ Front-end ์์ญ์์์ ๋ณํ์ ์์ผ๋ก์ ์ ๋ง์ ์ดํด๋ณผ ์ ์๋ State of JS 2022 ๊ฒฐ๊ณผ๊ฐ ๋ฐํ๋์๋ค.
๊ธฐ์ ์ ๋ํ ์ ์ธ๊ณ์ ๊ฐ๋ฐ์๋ค์ ์ ํธ๋์ ๋ง์กฑ๋๋ฅผ ์ ๋ฆฌ๋ ์๋ฃ๋ฅผ ํตํด ์ฝ๊ฒ ์์๋ณผ ์ ์๋ค.
TL;DR
- ํ๋ ์์ํฌ: ์ฌ์ ํ ๋์ ์ฌ์ฉ๋์ React, ๋์ ๊ด์ฌ๊ณผ ๋ง์กฑ๋์ Svelte
- ํ ์คํ : ์๋ ๋ฑ์ฅํ vitest์ ๋์์ง ์ฌ์ฉ๋ (3% -> 14%)
- ๋ชจ๋ฐ์ผ & ๋ฐ์คํฌํฑ: ์๋ ๋ฑ์ฅํ Tauri์ ๋ถ์งํ ์ฑ์ฅ์ธ, ๊ณต๊ณ ํ ์๋ฆฌ๋ฅผ ์งํค๋ Electron, React Native
- ๋น๋ ๋๊ตฌ: ์ฒ์ฒํ ๋ด๋ ค๊ฐ๋ webpack ์ฌ์ฉ๋, ๊ธ ๋ถ์ํ๋ vite (30% -> 49%)
- webpack์ ๋ํ ๋์ ๋ถ์ ์ ๊ฒฝํ, vite์ ๋ํ ๋์ ๊ธ์ ์ ๊ฒฝํ
- ๋ชจ๋ ธ๋ ํฌ ๋๊ตฌ: ์๋ ๊ฐ์ฅ ๋์ ์ฌ์ฉ๋์ ๊ธฐ๋กํ lerna์ ๋ถ์ง (25% -> 22%), pnpm์ ๋์ ์์น์ธ (13% -> 21%)
passKey
์น๊ณผ ์ฑ ๋ชจ๋ passkey๋ฅผ ์ด์ฉํ๋ฉด ๋น๋ฐ๋ฒํธ ์์ด passkey๋ฅผ ์ง์ํ๋ ์๋น์ค์ ๋ก๊ทธ์ธํ ์ ์๋ค. ํ์ฌ๋ Chrome์ด M108๋ถํฐ passkey๋ฅผ ์ง์ํ์ง๋ง ํ์ฌ ์ฐ์ ์ ๋ฐ์์ ์ฌ์ฉ๋๊ณ ์๋ ์์ฒด์ธ์, PIN ํ๋ก์ฐ๋ฅผ ์ฑ์ฉํ๊ณ ์์ด์ ์์ผ๋ก ์ง์ ์ถ์ด๋ฅผ ์ดํด๋ณผ ํ์๊ฐ ์๋ ๊ธฐ๋ฅ์ด๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ ์ด๋ป๊ฒ ์ฝ์์ ์งํฌ๊น?
Promise, async/await, setTimeout์ด ๋ธ๋ผ์ฐ์ ์์ ์ด๋ป๊ฒ ๋์ํ๋์ง๋ฅผ ECMAScript ํ์ค ๋ฌธ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ถ์ ํ๊ณ ์ ๋ฆฌํ ๊ธ์ด๋ค. ๋น๋๊ธฐ ์ํ์ ๋ํ ์ฒ๋ฆฌ๋ ํญ์ ๋ง์ด ์ด์ผ๊ธฐ๋์๋ ์ฃผ์ ์ด๊ธฐ๋ ํ์ง๋ง ๊ทผ๋ณธ์ ์ผ๋ก ์น์ ๊ธฐ๋ฅ์ ์ดํดํ๊ธฐ ์ํด ์ด๋ป๊ฒ ์ ๊ทผํด์ผ ํ๋์ง๋ฅผ ์๋ ค์ฃผ๋ ์ข์ ๊ธ๋ก ๋ณด์ธ๋ค.
๋์์ธ์์คํ
์ด 8ํธ์ผ๋ก ๊ตฌ์ฑ๋ ๋์์ธ์์คํ ์ ๋ํ ์ํฐํด์ ๋๋ค. 2019๋ ์ ์์ฑ๋ ๊ฝค ์ค๋๋ ์ํฐํด์ด์ง๋ง ๋์์ธ์์คํ ์ ์ดํดํ๋ ๋ชฉ์ ์ด๋ผ๋ฉด ์์ง๋ ํ๋ฅญํ ๊ธ์ด๋ค. ์ค๋ฌด์์ ๋์์ธ์์คํ ์ ๋์ ํ๋ ค๊ณ ํ๋ ๋ถ์ด๋ผ๋ฉด ์ฝ์ด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.

ํ๋ก ํธ์๋ ์์ง๋์ด ์ปค๋ฆฌ์ด ๋ก๋๋งต: ์ฃผ๋์ด๋ฅผ ์ํ 3๊ฐ์ง ์ ๋ฌธ์ฑ ํธ๋
Front-end ์์ง๋์ด๋ก ์ด๋ป๊ฒ ์ฑ์ฅํด์ผ ํ๋์ง์ ๋ํ ์ง๋ฌธ์ ๋ํ ์ง๋ฌธ์ ๋ํ ๊ธ์ด๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์๋์ด ์์ง๋์ด ์ญ๋์ ๋ชฉํ๋ฅผ ์ด๋์ ๋์ด์ผ ํ๋์ง์ ๋ํ ๋ช ์พํ ๋ต๋ณ์ด ์์ด์ ๊ธ์ ์ฝ๋ ๋์ ํต์พํจ์ ๋๊ผ์ ๋ฟ๋ง ์๋๋ผ ๋ถ์ผ๋ณ ์ ๋ฌธ์ฑ์ ์ ๋ฆฌ๋ฅผ ์ ํด ๋์ด์ ์์ ์ด ์ด๋ค ํธ๋์ผ๋ก ์ฑ์ฅ์ ํด๋๊ฐ์ผ ํ๋์ง์ ๋ํ ๊ณ ๋ฏผ๋ ํจ๊ป ํ ์ ์๋ ๊ธ์ด๋ค.
ํํ ๋ฆฌ์ผ
ChatGPT Tutorial for Developers - 38 Ways to 10x Your Productivity
๋น ๊ฐ๋ฐ์๋ค ์ฌ์ด์์๋ ์ด์๊ฐ ๋๊ณ ์๋ ChatGPT๋ 2022๋ 11์์ ์ถ์ํด์ ๋จ 5์ผ ๋ง์ 100๋ง ์ฌ์ฉ์๋ฅผ ํ๋ณดํ์ ์ ๋๋ก ์ธ๊ธฐ๊ฐ ๋จ๊ฒ๋ค. ์ด ์์์ ChatGPT์ ๋ํด์ ๊ฐ๋ณ๊ฒ ์ค๋ช ํ๊ณ Python, HTML, CSS, Javascript, SQL๊น์ง ์์ ๋ฅผ ํตํด ๊ฐ๋ฐ ์์ฐ์ฑ์ ๋์ด๋ 38๊ฐ์ง ๋ฐฉ๋ฒ์ ์๊ฐํด ์ค๋ค.
The truth about CSS selector performance
์๋ง๋ ํ ๋ฒ์ฏค์ CSS ์ ๋ ํฐ๊ฐ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น ์๋ ์๋ค๋ ์ฌ์ค์ ๋ค์ด๋ดค์ ๊ฒ์ด๋ค. ์ฑ๋ฅ์ด ๋๋ฆฐ ์ ๋ ํฐ๋ค์ ์์๋ผ ์ ์๋ค๋ฉด, ์ด๋ฅผ ๊ฐ์ ํ๊ธธ ์ํ ๊ฒ์ด๋ค.
๋ธ๋ผ์ฐ์ ์์ง์ ์น ํ์ด์ง ๋ด ํน์ ์์ญ์ ๋ํ ๋ณํ๋ก ์ธํด ์๋ก์ด DOM ํธ๋ฆฌ๊ฐ ์
๋ฐ์ดํธ๋๋ฉด, ํ์ฌ ํ์ด์ง์ ์ ์ฉ๋ CSS stylesheet๋ฅผ ํตํด ์คํ์ผ์ ์ ์ฉํ๋ฉฐ, ์คํ์ผ๊ณผ DOM ํธ๋ฆฌ๋ฅผ ๋งค์นญํ๋ ๊ฒ์ style recalculation
์ด๋ผ ๋ถ๋ฅธ๋ค.
์ด ํํ ๋ฆฌ์ผ์ Edge ๊ฐ๋ฐ์ ๋๊ตฌ(Chrome์ ์ง์ํ์ง ์์)์ Performance(์ฑ๋ฅ) ํญ์ ํตํด ๋์ ํ์ด์ง๋ฅผ ํ๋กํ์ผ๋ง ํ ํ, Main ์น์
์์ Recalculate Style ํญ๋ชฉ์ผ๋ก ์ํ๋ ์์
์์ ์
๋ ํฐ๋ค๊ณผ ์คํ ์๊ฐ(Selector Stats
๊ฒฐ๊ณผ ํญ)์ ํ์ธํด ๋ณผ ์ ์๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํ๋ค.
[์ฐธ๊ณ ] Analyze selector performance during Recalculate Style events
React Email First Look

React๋ฅผ ์ฌ์ฉํด ์ด๋ฉ์ผ ํ ํ๋ฆฟ์ ์ฝ๊ฒ ๋ง๋ค๊ณ , ํธ์งํ๊ณ ๋ณด๋ผ ์ ์๋ ๋๊ตฌ์ธ react-email ์ ๋ํ ๊ธฐ์ด์ ์ธ ํํ ๋ฆฌ์ผ์ด๋ค.
๋ค์ํ ํ ํ๋ฆฟ์ ์ง์ํ๋ฉฐ Nodemailer์ ๊ฐ์ ๋๊ตฌ๋ค๊ณผ ํตํฉ์ด ๊ฐ๋ฅํ๊ณ Gmail, Outlook๊ณผ ๊ฐ์ ํด๋ผ์ด์ธํธ์์๋ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
์ฝ๋์ ๋๊ตฌ
Zod
Zod๋ TypeScript ์ฐ์ ์ ์ธ ์คํค๋ง ์ ์ธ ๋ฐ ๊ฒ์ฆ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค. ๊ฐ๋ฐ์ ์นํ์ ์ผ๋ก ์ค๊ณ๋์ด, ์ค๋ณต ํ์ ์ ์ธ์ ์ ๊ฑฐํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ค.
๊ฒ์ฆ์(validator)๋ฅผ ํ ๋ฒ ์ ์ธํ๋ฉด, ๋ฐํ์์์ ๋์ํ๋ ์ฝ๋์ ํผ์ ๊ฐ ๊ฒ์ฌ ๋ฑ์ ์ ์ฉํ ์ ์์ผ๋ฉฐ, ๋ํ ๋ณ๋์ ํฐ ์์ ์์ด๋ TypeScript ์ ํ์ผ๋ก ์ถ๋ก ํด ์ฌ์ฉํ ์๋ ์๋ค.
import { z } from "zod";
// 1) ๋ฌธ์ ์คํค๋ง ์์ฑ
const mySchema = z.string();
// ํ์ฑ
mySchema.parse("tuna"); // => "tuna"
mySchema.parse(12); // => throws ZodError
// โ์์ ํ" ํ์ฑ (๊ฒ์ฆ์ด ์คํจํ๋๋ผ๋ ์ค๋ฅ๋ฅผ throw ํ์ง ์์)
mySchema.safeParse("tuna"); // => { success: true; data: "tuna" }
mySchema.safeParse(12); // => { success: false; error: ZodError }
// 2) ๊ฐ์ฒด ์คํค๋ง ์์ฑ
const User = z.object({
username: z.string(),
});
User.parse({ username: "Ludwig" });
// TypeScript์์ ์ฌ์ฉ์ ์ํ ์ถ๋ก ๋ ํ์
์ ์ถ์ถ
type User = z.infer<typeof User>; // { username: string }
์ฐธ๊ณ :
TypeScript 5.0 Beta
TypeScript 5.0 ๋ฒ ํ๊ฐ ๋ฐํ๋์๋ค. 5๋ ๋์ ์คํ ๋ ผ์๊ฐ ์ด๋ฃจ์ด์ก๋ Decorator๊ฐ stage:3 ์ด ๋๋ฉด์ JavaScript์ superset์ธ TypeScript์์๋ ์ ์ ์คํ์ผ๋ก ์ถ๊ฐ๋์๋ค. ์ค์ํ ์ฑ๋ฅ ๊ฐ์ ๋ฟ๋ง ์๋๋ผ ๋ค์ํ ๊ธฐ๋ฅ๋ค๋ ์ถ๊ฐ๋์์ผ๋ ๊ด์ฌ ์๊ฒ ์ดํด๋ณด๊ธฐ ๋ฐ๋๋ค.
์ฐธ๊ณ ์์: https://www.youtube.com/watch?v=iOTAFRFgm8I
MSW(Mock Service Worker) 1.0.0 ๋ฆด๋ฆฌ์ฆ
23๋
1์ 25์ผ MSW 1.0 ์ ์ ๋ฆด๋ฆฌ์ฆ๋์๋ค. Web Service Worker๋ฅผ ๋ฐํ์ผ๋ก ๋คํธ์ํฌ ๊ตฌ๊ฐ์ mocking์ ํ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๋ผ๊ณ ์๊ฐํ๋ฉด ์ดํด๊ฐ ์ฌ์ธ ๊ฒ์ด๋ค. ๊ธฐ์กด์ HTTP ๋ชจํน์ ์ํ ๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (AxiosMockAdapter, supertest, ...)์ ๊ทผ๋ณธ์ ์ธ ์์กด์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ ๋ฟ๋ง ์๋๋ผ ์ต์ํ express ํํ์ ์ธํฐํ์ด์ค๋ ์ ๊ณตํ์ฌ ์์ฝ๊ฒ ์๋น์ค ์ด์์ ์ ์ฉํ ์ ์๋ค.
์ฐธ๊ณ ๋งํฌ: fe-news 2020.09์ํธ
SWR(Stale-While-Revalidate) 2.0.3 ๋ฆด๋ฆฌ์ฆ
22๋ 10์ 10์ผ 2.0 Major ๋ฆด๋ฆฌ์ฆ ์ดํ ์ฌ๋ฌ ๊ฐ์ง ํจ์น๊ฐ ์์ ๋ ๋ฒ์ ์ด 23๋ 1์ 29์ผ ๋ฆด๋ฆฌ์ฆ๋์๋ค. React 18๊ณผ SWRDevtool์ ์ถ๊ฐ์ ํจ๊ป 1.0์์ ๋ถ์กฑํ ๋ถ๋ถ์ ๋ณด์ํ๊ณ ๋์จ 2.0์ด react-query์ ์์ฑ์ ๋ฌด๋๋จ๋ฆด ์ ์์์ง ๊ท์ถ๊ฐ ์ฃผ๋ชฉ๋๋ค.
Future of Storybook in 2023
2020๋ 6.0 ๋ฆด๋ฆฌ์ฆ ์ดํ 3๋ ๋ง์ Major ๋ฆด๋ฆฌ์ฆ๋๋ Storybook 7.0์ ๋ํ ์ด์ผ๊ธฐ๋ฅผ ๋ค๋ฃจ๊ณ ์๋ค. ์ปดํฌ๋ํธ ๋จ์ UI ํ์ธ์ ์ํ ์ฉ๋์ Storybook์ด ํ ์คํธ ์ค์ฌ์ ์๋ก์ด ํ๋ซํผ์ผ๋ก์ ์ ํ์ ๋ชฉํ๋ก ํ๊ณ ์๋ค.
๋จ์ ์ปดํฌ๋ํธ๋ถํฐ ํ์ด์ง ๋จ์์ ํ ์คํธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ , CI๋ฅผ ํตํ ์ปค๋ฒ๋ฆฌ์ง ํ์ธ๊น์ง ๋ชฉํํ๊ณ ์๋ค. ๊ทธ ์ธ์ ๊ธฐ์กด์ ๋ถํ์ํ ๊ณผ์ ์ธ ๋ฒ๋ค ๊ณผ์ ์ ์ ๊ฑฐํจ์ผ๋ก์ ์ฑ๋ฅ ๋ฉด์์๋ ๊ฐ์ ๋ฐฉํฅ์ ์ ์ํ๊ณ ์๋ค. Front-end ๊ฐ๋ฐ์๋ผ๋ฉด ๊ด์ฌ ์๊ฒ ๋ฐ๋ผ๋ด์ผ ํ ํ๋ก์ ํธ์ด๋ค.
