ํ๋ก ํธ์๋: ๊ธฐ์ , ์ญํ , ๋ฉด์ ๋๋น
1. ํ๋ก ํธ์๋๋?
ํ๋ก ํธ์๋๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค(UI)๋ฅผ ๋ด๋นํ๋ ์์ญ์ผ๋ก, ์ฌ์ฉ์๊ฐ ์ง์ ์ํธ์์ฉํ๋ ๋ถ๋ถ์ ํฌํจํฉ๋๋ค. HTML, CSS, JavaScript๋ฅผ ์ฃผ๋ก ์ฌ์ฉํ์ฌ ์น ํ์ด์ง์ ๋์์ธ๊ณผ ๋์์ ๊ตฌํํ๋ฉฐ, ์ต๊ทผ์๋ ๋ค์ํ ํ๋ ์์ํฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ฑ์ฅํ์ฌ ๊ฐ๋ฐ ์์ฐ์ฑ์ ๋์ด๊ณ ์์ต๋๋ค.
2. ํ๋ก ํธ์๋์ ์ญํ
ํ๋ก ํธ์๋์ ์ฃผ์ ์ญํ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ฌ์ฉ์ ๊ฒฝํ(UX) ๊ฐ์ : ์น ํ์ด์ง๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ต์ ํํ๊ณ , ์ง๊ด์ ์ด๋ฉฐ ํจ์จ์ ์ธ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
๋์์ธ ๊ตฌํ: ๋์์ด๋๊ฐ ๋ง๋ ๋์์ธ์ HTML, CSS, JavaScript ๋ฑ์ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ์น ํ์ด์ง๋ก ๊ตฌํํฉ๋๋ค.
๋ธ๋ผ์ฐ์ ํธํ์ฑ: ๋ค์ํ ๋ธ๋ผ์ฐ์ ์์ ์ผ๊ด๋ ๋์์ ๋ณด์ฅํ๊ณ , ๋ธ๋ผ์ฐ์ ๊ฐ์ ํธํ์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
์ฑ๋ฅ ์ต์ ํ: ์น ํ์ด์ง์ ๋ก๋ฉ ์๋๋ฅผ ์ต์ ํํ๊ณ , ํจ์จ์ ์ธ ๋ฆฌ์์ค ๊ด๋ฆฌ๋ฅผ ํตํด ๋น ๋ฅธ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
3. ์ฃผ์ ํ๋ก ํธ์๋ ๊ธฐ์
3.1 HTML(HyperText Markup Language)
HTML์ ์น ํ์ด์ง์ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋ ๋งํฌ์ ์ธ์ด๋ก, ์์(element)๋ฅผ ์ฌ์ฉํ์ฌ ์ฝํ ์ธ ๋ฅผ ๊ตฌ์กฐํํฉ๋๋ค.
<!DOCTYPE html>
<html>
<head>
<title>ํ์ด์ง ์ ๋ชฉ</title>
</head>
<body>
<h1>์๋
ํ์ธ์, ์น ํ์ด์ง!</h1>
<p>HTML์ ๋ฐฐ์ฐ๊ณ ์์ต๋๋ค.</p>
</body>
</html>
3.2 CSS(Cascading Style Sheets)
CSS๋ HTML ์์์ ์คํ์ผ๊ณผ ๋ ์ด์์์ ์ ์ํ์ฌ ์น ํ์ด์ง๋ฅผ ๋์์ธํ๋ ์คํ์ผ ์ํธ ์ธ์ด์ ๋๋ค.
body {
font-family: 'Arial', sans-serif;
background-color: #f0f0f0;
}
h1 {
color: #333;
}
3.3 JavaScript
JavaScript๋ ์น ํ์ด์ง์ ๋์ ์ธ ํ๋์ ๊ตฌํํ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก, ํด๋ผ์ด์ธํธ ์ธก์์ ์คํ๋ฉ๋๋ค.
function greet(name) {
alert('์๋
ํ์ธ์, ' + name + '๋!');
}
greet('์ฌ์ฉ์');
3.4 ํ๋ ์์ํฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
React: Facebook์์ ๊ฐ๋ฐํ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ์ปดํฌ๋ํธ ๊ธฐ๋ฐ์ ๊ฐ๋ฐ์ ์ง์ํฉ๋๋ค.
Angular: Google์์ ๊ฐ๋ฐํ ํ๋ ์์ํฌ๋ก, ๋จ์ผ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ (SPA)์ ๊ตฌ์ถํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
Vue.js: ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ์์ ์ง์ง๋ฐ๋ ํ๋ก ํธ์๋ ํ๋ ์์ํฌ๋ก, ๊ฐ๋ณ๊ณ ๊ฐํธํ ๋ฌธ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
4. ํ๋ก ํธ์๋ ๋ฉด์ ์ง๋ฌธ
HTML๊ณผ XHTML์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์?
- ๋ต๋ณ: XHTML์ XML ๊ธฐ๋ฐ์ HTML๋ก, ์๊ฒฉํ ๋ฌธ๋ฒ ๊ท์น์ ๊ฐ์ง๊ณ ์๊ณ , ๋์๋ฌธ์๋ฅผ ์๊ฒฉํ๊ฒ ๊ตฌ๋ถํฉ๋๋ค. HTML์ ๋ ์ ์ฐํ ๋ฌธ๋ฒ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
CSS์ ๋ฐ์ค ๋ชจ๋ธ์ ๋ํด ์ค๋ช ํด๋ณด์ธ์.
- ๋ต๋ณ: ๋ฐ์ค ๋ชจ๋ธ์ HTML ์์๊ฐ ์ฐจ์งํ๋ ๊ณต๊ฐ์ ์์๋ก ํํํ๋๋ฐ, content, padding, border, margin์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
JavaScript์ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ฐฉ์์๋ ์ด๋ค ๊ฒ๋ค์ด ์๋์?
- ๋ต๋ณ: Callbacks, Promises, Async/Await ๋ฑ์ด ์์ผ๋ฉฐ, ๋น๋๊ธฐ์ ์ธ ์์ ์ ๋ค๋ฃจ๊ธฐ ์ํ ๋ค์ํ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
**React์์ state์ props์ ์ฐจ์ด๋ ๋ฌด์
์ธ๊ฐ์?**
- ๋ต๋ณ: state๋ ์ปดํฌ๋ํธ์ ๋ด๋ถ ์ํ๋ฅผ ๋ํ๋ด๋ฉฐ ๋ณ๊ฒฝ ๊ฐ๋ฅํฉ๋๋ค. props๋ ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ก๋ถํฐ ์ ๋ฌ๋๋ ์ฝ๊ธฐ ์ ์ฉ ๋ฐ์ดํฐ์ ๋๋ค.
SPA์ MPA์ ์ฐจ์ด์ ์ ์ค๋ช ํ์ธ์.
- ๋ต๋ณ: SPA๋ ๋จ์ผ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก, ํ ๋ฒ์ ํ์ด์ง ๋ก๋ ํ ๋ฐ์ดํฐ๋ง ๋ณ๊ฒฝํ์ฌ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํต๋๋ค. MPA๋ ๋ค์ค ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก, ๊ฐ ํ์ด์ง๋ง๋ค ์์ ํ HTML์ ๋ก๋ํฉ๋๋ค.
Webpack์ด ๋ฌด์์ด๋ฉฐ, ์ด๋ป๊ฒ ๋์ํ๋์ง ์ค๋ช ํด๋ณด์ธ์.
- ๋ต๋ณ: Webpack์ ๋ชจ๋ ๋ฒ๋ค๋ฌ๋ก, ํ๋ก ํธ์๋์์ ์ฌ์ฉ๋๋ ์ฌ๋ฌ ํ์ผ๋ค์ ํ๋๋ก ๋ฌถ์ด์ฃผ๊ณ , ํ์ํ ์ต์ ํ๋ฅผ ์ํํฉ๋๋ค.
CSS์ flexbox์ grid ๋ ์ด์์์ ๋ํด ์ค๋ช ํด๋ณด์ธ์.
- ๋ต๋ณ: Flexbox๋ 1์ฐจ์(๋จ์ผ ํ ๋๋ ์ด) ๋ ์ด์์์ ๋ค๋ฃจ๋๋ฐ ์ฌ์ฉ๋๋ฉฐ, Grid๋ 2์ฐจ์(ํ๊ณผ ์ด) ๋ ์ด์์์ ๋ค๋ฃจ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ๊ณผ์ ์ ์ค๋ช ํ์ธ์.
- ๋ต๋ณ: ๋ธ๋ผ์ฐ์ ๋ HTML์ ํ์ฑํ๊ณ , DOM ํธ๋ฆฌ๋ฅผ ์์ฑํ ๋ค CSS๋ฅผ ํ์ฑํ์ฌ ์คํ์ผ ๊ท์น์ ์์ฑํ๊ณ , ์ดํ์ ๋ ๋ ํธ๋ฆฌ๋ฅผ ํ์ฑํ์ฌ ํ๋ฉด์ ์ถ๋ ฅํฉ๋๋ค.
ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ง์ด๋ ๋ฌด์์ธ๊ฐ์?
- ๋ต๋ณ: ๋ค์ํ ๋ธ๋ผ์ฐ์ ์์ ๋์ผํ ์น ํ์ด์ง๊ฐ ์ผ๊ด๋ ํํ๋ก ๋์ํ๋๋ก ๋ณด์ฅํ๋ ์์ ์ด๋ฉฐ, ์ฃผ๋ก CSS์ JavaScript์ ํธํ์ฑ์ ์๋ฏธํฉ๋๋ค.
CSS์ ์ฐ์ ์์์ ์ธ๋ถ์ฑ์ ๋ํด ์ค๋ช ํ์ธ์.
- ๋ต๋ณ: ์ฐ์ ์์๋ ์ ํ์์ ๊ตฌ์ฒด์ฑ๊ณผ ์ค์๋์ ๋ฐ๋ผ ๊ท์น์ด ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋ฉฐ, ์ธ๋ถ์ฑ์ ์ ๋ ํฐ์ ํน์ ์ฑ์ ๋ฐ๋ผ ๊ท์น์ด ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋๋ค.
JavaScript์ ํธ์ด์คํ (Hoisting)์ ๋ํด ์ค๋ช ํ์ธ์.
- ๋ต๋ณ: JavaScript์์ ์ ์ธ๋ฌธ์ด ํด๋น ์ค์ฝํ์ ์ต์๋จ์ผ๋ก ๋์ด์ฌ๋ ค์ง๋ ํ์์ ๋งํ๋ฉฐ, ๋ณ์ ์ ์ธ์ ์ด๊ธฐํ ์์ด ํธ์ด์คํ ๋๊ณ , ํจ์ ์ ์ธ์ ํจ์ ์ ์ฒด๊ฐ ํธ์ด์คํ ๋ฉ๋๋ค.
RESTful API์ GraphQL์ ์ฐจ์ด๋ ๋ฌด์์ธ๊ฐ์?
- ๋ต๋ณ: RESTful API๋ ์ ํด์ง ๊ท์น์ ๋ฐ๋ผ ์์์ ๊ด๋ฆฌํ๋ฉฐ, GraphQL์ ํด๋ผ์ด์ธํธ๊ฐ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ฟผ๋ฆฌํ์ฌ ๊ฐ์ ธ์ค๋ ๋ฐฉ์์ผ๋ก ์ ์ฐ์ฑ์ด ๋์ต๋๋ค.
Web Accessibility์ ๋ํด ์๋ ๋๋ก ์ค๋ช ํด๋ณด์ธ์.
- ๋ต๋ณ: ์น ์ ๊ทผ์ฑ์ ๋ชจ๋ ์ฌ์ฉ์๊ฐ ์น ์ฌ์ดํธ์ ์ ๊ทผํ ์ ์๋๋ก ํ๋ ๊ฒ์ผ๋ก, ์๊ฐ, ์ฒญ๊ฐ, ์ด๋ ๋ฅ๋ ฅ์ด ์ ํ๋ ์ฌ์ฉ์๋ค์๊ฒ๋ ๋๋ฑํ ์ด์ฉ ๊ธฐํ๋ฅผ ์ ๊ณตํฉ๋๋ค.
JavaScript์ ํด๋ก์ (Closure)์ ๋ํด ์ค๋ช ํ์ธ์.
- ๋ต๋ณ: ํด๋ก์ ๋ ์ธ๋ถ ํจ์์ ๋ณ์์ ์ ๊ทผํ ์ ์๋ ๋ด๋ถ ํจ์๋ฅผ ๊ฐ๋ฆฌํค๋ฉฐ, ๋ณ์๊ฐ ์๋ฉธ๋๋๋ผ๋ ํด๋น ๋ณ์์ ์ ๊ทผํ๋ ๋ด๋ถ ํจ์๊ฐ ์กด์ฌํ๋ ํ ์ ์ง๋ฉ๋๋ค.
React์ ๋ผ์ดํ์ฌ์ดํด ๋ฉ์๋์ ๋ํด ์ค๋ช ํ์ธ์.
- ๋ต๋ณ: ๋ง์ดํธ, ์ ๋ฐ์ดํธ, ์ธ๋ง์ดํธ ์ธ ๊ฐ์ง ๋จ๊ณ๋ก ๋
๋์ด์ง๋ฉฐ, ๊ฐ๊ฐ์ ๋จ๊ณ์์ ์คํ๋๋ ๋ผ์ดํ์ฌ์ดํด ๋ฉ์๋๊ฐ ์์ต๋๋ค.
์ฟ ํค์ ์ธ์ ์ ์ฐจ์ด๋ฅผ ์ค๋ช ํ์ธ์.
- ๋ต๋ณ: ์ฟ ํค๋ ํด๋ผ์ด์ธํธ์ ์ ์ฅ๋๊ณ ์๋ฒ์์ ํต์ ์ ํ์ฉ๋๋ฉฐ, ์ธ์ ์ ์๋ฒ์ ์ ์ฅ๋๊ณ ํด๋ผ์ด์ธํธ๋ ์ธ์ ํค๋ฅผ ํตํด ์๋ณ๋ฉ๋๋ค.
์ต์ ๋ ์ฒด์ด๋(Optional Chaining)์ด ๋ฌด์์ธ๊ฐ์?
- ๋ต๋ณ: ์ต์ ๋ ์ฒด์ด๋์ ํ๋กํผํฐ๋ ๋ฉ์๋์ ์์ ํ๊ฒ ์ ๊ทผํ๊ธฐ ์ํ ๋ฌธ๋ฒ์ผ๋ก, ํด๋น ํ๋กํผํฐ ๋๋ ๋ฉ์๋๊ฐ ์กด์ฌํ์ง ์์๋ ์๋ฌ๋ฅผ ๋ฐ์์ํค์ง ์์ต๋๋ค.
Redux์ ์๋ฆฌ์ ์๋ ๋ฐฉ์์ ๋ํด ์ค๋ช ํ์ธ์.
- ๋ต๋ณ: Redux๋ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ๋จ์ผ ์คํ ์ด์ ์ ํ๋ฆฌ์ผ์ด์ ์ํ๋ฅผ ์ ์ฅํ๊ณ , ์ํ ๋ณ๊ฒฝ์ ๋ถ๋ณ์ฑ์ ์ ์งํ๋ฉฐ ๋ฆฌ๋์๋ฅผ ํตํด ์ด๋ฃจ์ด์ง๋๋ค.
JWT(JSON Web Token)์ ๋ํด ์ค๋ช ํด๋ณด์ธ์.
- ๋ต๋ณ: JWT๋ JSON ํํ๋ก ์ ๋ณด๋ฅผ ์์ ํ๊ฒ ์ ์กํ๊ธฐ ์ํ ํ ํฐ์ผ๋ก, ์๋ฒ์์ ์์ฑ๋์ด ํด๋ผ์ด์ธํธ์ ์ ๋ฌ๋๋ฉฐ, ํด๋ผ์ด์ธํธ๋ ์ด๋ฅผ ์ด์ฉํ์ฌ ์ธ์ฆ ๋ฐ ๊ถํ ํ์ธ์ ์ํํฉ๋๋ค.
CSS-in-JS์ ๋ํด ์ด๋ค ๊ฒฝํ์ด ์๋์?
- ๋ต๋ณ: CSS-in-JS๋ JavaScript ํ์ผ ๋ด์์ ์คํ์ผ์ ์ ์ํ๊ณ ์ ์ฉํ๋ ๋ฐฉ์์ผ๋ก, Styled-components๋ Emotion๊ณผ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด๋ณด์์ต๋๋ค.
์ด์์ผ๋ก ํ๋ก ํธ์๋ ๊ฐ๋ฐ๊ณผ ๊ด๋ จ๋ ์ฃผ์ ๊ธฐ์ , ์ญํ , ๊ทธ๋ฆฌ๊ณ ๋ฉด์ ์์ ์์ฃผ ๋ฑ์ฅํ๋ ์ง๋ฌธ๊ณผ ๋ต๋ณ์ ๋ํด ์์๋ณด์์ต๋๋ค. ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ก์จ์ ์ญ๋์ ํฅ์์ํค๊ธฐ ์ํด ์ง์์ ์ธ ํ์ต๊ณผ ์ค์ต์ด ํ์ํ๋ฉฐ, ๋ค์ํ ํ๋ก์ ํธ๋ฅผ ํตํด ๊ฒฝํ์ ์๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
๋๊ธ