๐Ÿ“š ํŒจํŠธ์Šค์บ ํผ์Šค ๋ฐ๋ธŒ์บ ํ”„ ํ”„๋ก ํŠธ์—”๋“œ 8์ฃผ์ฐจ ํ•™์Šต ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.
๐Ÿ“š ์ž˜๋ชป๋œ ์ •๋ณด๋Š” ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์‹œ๋ฉด ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

html, css, javascript ์ˆ˜์—…์ด ๋๋‚˜๊ณ  ๋“œ๋””์–ด ๊น€๋ฏผํƒœ ๊ฐ•์‚ฌ๋‹˜์˜ ๋ฆฌ์•กํŠธ ์ˆ˜์—…์ด ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค!

๋ณธ๊ฒฉ์ ์ธ ์ˆ˜์—…์ด ์‹œ์ž‘๋˜๊ธฐ ์ „ ํ•™์Šตํ•˜๋Š” ๋‚ด์šฉ์˜ ๊ฑฐ์˜ ๋Œ€๋ถ€๋ถ„์ด ๋ฆฌ์•กํŠธ์—๋งŒ ์†ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ๋‹ค๋ฅธ ์–ด๋–ค ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋˜ ๊ณตํ†ต์ ์ธ ๋ถ€๋ถ„์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์‹œ์ž‘ํ•˜์ž๋ผ๋Š” ์กฐ์–ธ์„ ํ•ด์ฃผ์…จ์Šต๋‹ˆ๋‹ค.


๋ฆฌ์•กํŠธ๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋œ ๋ฐฐ๊ฒฝ

๐Ÿ˜ž "JavaScript๋กœ DOM์„ ๋‹ค๋ฃจ๋ฉฐ UI๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์€ ํž˜๋“ค์—ˆ์–ด์š”.."

ํŠน์ • ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒ ํ–ˆ์„ ๋•Œ, DOM์„ ์—…๋ฐ์ดํŠธ ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ๊ฐ ๋ฐฉ์‹์˜ ์žฅ์ ๊ณผ ๋‹จ์ ์„ ์ •๋ฆฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

createElement

  • ์žฅ์  : ํŠน์ • DOM ์š”์†Œ๋ฅผ ์„ ํƒํ•ด ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์–ด ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์—…๋ฐ์ดํŠธ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋‹จ์  : ๋‹ค์–‘ํ•œ ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๊ฒŒ ๋˜๋ฉด์„œ ์ฝ”๋“œ๊ฐ€ ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

innerHTML

  • ์žฅ์  : HTML ๋ฌธ์ž์—ด์„ ์‚ฌ์šฉํ•˜์—ฌ DOM์„ ์‰ฝ๊ฒŒ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋‹จ์  : ํŠน์ • DOM ์š”์†Œ๋ฅผ ์„ ํƒํ•˜๊ณ  ์ˆ˜์ •ํ•˜๊ธฐ ์–ด๋ ค์›Œ, ๋ถˆํ•„์š”ํ•œ ๋ Œ๋”๋ง์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋•Œ ๋‘๊ฐ€์ง€ ๋ฐฉ์‹ ๋ชจ๋‘ ๋ณต์žกํ•œ ๊ตฌ์กฐ๋ฅผ ๋‚˜ํƒ€๋‚ผ ๋•Œ๋Š” ๋‹ค๋ฃจ๊ธฐ ํž˜๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๊ณ  ์ด๋Ÿฌํ•œ ๋ถˆํŽธํ•จ์„ ๊ฐœ์„ ํ•˜๊ณ ์ž ๋‹ค์Œ ๋‘๊ฐ€์ง€ ๊ฐœ๋…์ด ๋“ฑ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.

step1. DOM ์ •๋ณด๋ฅผ ๊ฐ์ฒด๋กœ ๊ด€๋ฆฌํ•˜์ž๋Š” ๊ฐœ๋…์ด ๋“ฑ์žฅ โ†’ Virtual DOM
step2. ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, ์ƒˆ๋กœ์šด ๊ฐ์ฒด ์ •๋ณด๋ฅผ ๋งŒ๋“ค๊ณ  ๊ธฐ์กด๊ณผ ๋น„๊ต ํ›„ ์ฐจ์ด์ ๋งŒ Real DOM์— ์—…๋ฐ์ดํŠธํ•œ๋‹ค. โ†’ (CRUD์—์„œ Create๋งŒ ์‹ ๊ฒฝ์“ฐ์ž)


JSX

JSX๋กœ ๋งˆํฌ์—… ์ž‘์„ฑํ•˜๊ธฐ

JSX๋Š” ๊ธฐ์กด์˜ HTML ๋งˆํฌ์—… ๋ฐฉ์‹๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.

๋ฌธ๋ฒ•์€ HTML๊ณผ ๊ฑฐ์˜ ๋™์ผํ•˜์ง€๋งŒ ํ•ญ์ƒ ํ•จ์ˆ˜๋กœ ๊ฐ์‹ธ์ค˜์•ผํ•˜๊ณ , JSX ๋งˆํฌ์—…์„ return ํ•˜๋„๋ก ๋งŒ๋“ค์–ด์•ผํ•œ๋‹ค๋Š” ์ ์—์„œ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

โ†’ ์ด๊ฑธ ๊ฐ€์ง€๊ณ  ์–ด๋–ป๊ฒŒ dom์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?

  • ํ•œ๋ฐฉํ–ฅ์œผ๋กœ ํ˜๋Ÿฌ๊ฐ„๋‹ค๋Š” ๊ฐœ๋…์„ ์ด์šฉ
  • ์ฝœ๋ฐฑ ํ•จ์ˆ˜๊ฐ€ ๋๋‚˜์•ผ ๋‚ด ์ž‘์—…์„ return ํ•  ์ˆ˜ ์žˆ๋‹ค
    (โ†’ ์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ๋ฅผ ํ•จ๊ป˜ ๋ฌถ์–ด์„œ ๋‚ด๊ฐ€ ์ตœ์ข…์ ์œผ๋กœ return ํ•œ๋‹ค!)

๋ฆฌ์•กํŠธ๋Š” ํ•จ์ˆ˜๋ฅผ ํ•˜๋‚˜์˜ UI ๋‹จ์œ„๋กœ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋‹น์—ฐํžˆ ํ•˜๋‚˜์˜ ํ•จ์ˆ˜๊ฐ€ ์–ด๋–ค UI๋“ค์„ ์ปค๋ฒ„ํ•˜๋Š” ์ง€๋Š” ๊ฐœ๋ฐœ์ž์˜ ๋ชซ์ด ๋ฉ๋‹ˆ๋‹ค. (ํ•จ์ˆ˜ ํ•˜๋‚˜์— ์–ผ๋งˆ๋‚˜ ๋งŽ์€ UI๋ฅผ ๊ตฌ์„ฑํ•˜๋А๋ƒ๋Š” ๊ฐœ๋ฐœ์ž์˜ ์„ ํƒ์‚ฌํ•ญ)

์˜ˆ๋ฅผ ๋“ค์–ด ๋‚˜๋Š” Page ๋‹จ์œ„๋กœ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌ์„ฑํ• ๊ฑฐ์•ผ vs ๋‚˜๋Š” ํŽ˜์ด์ง€๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์š”์†Œ๋“ค์„ ๊ฐ๊ฐ ์ปดํฌ๋„ŒํŠธ๋กœ ๊ด€๋ฆฌํ• ๊ฑฐ์•ผ(Title, Form, Item...) ์ฒ˜๋Ÿผ ๊ฐœ๋ฐœ์ž์˜ ์„ ํƒ์— ๋”ฐ๋ผ UI ์กฐ๊ฐ์˜ ๊ตฌ์„ฑ์€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ง!

๋‹ค๋งŒ, ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ ๊ตฌ๋ฌธ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ฒŒ๋˜๋ฉด UI์˜ ๋ชจ์–‘(๊ตฌ์„ฑ)์ด ์ž˜ ์•ˆ๋ณด์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์— JSX๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜ ํ˜ธ์ถœ๋ฐฉ๋ฒ•์ด์•„๋‹ˆ๋ผ, HTML ํ˜•์‹์œผ๋กœ ํƒœ๊น…ํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง€๊ณ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ ํ•จ์ˆ˜๋ช…์€ ๋ฐ˜๋“œ์‹œ ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋ฉฐ, JSX UI ์ •๋ณด๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ปดํฌ๋„ŒํŠธ๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

function MyButton() {
	return (
		<button>๋ฒ„ํŠผ</button>
	)
}

// MyButton ์ปดํฌ๋„ŒํŠธ ์‚ฌ์šฉํ•˜๊ธฐ
export default function MyApp() {
	return (
		<div>
			<h1>์–ด์„œ์˜ค์„ธ์š”</h1>
			<MyButton />
			MyButton() // ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค!
		</div>
	)
}

์ถ”๊ฐ€๋กœ class ์†์„ฑ ์‚ฌ์šฉ์‹œ์—๋Š” className="" ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•ด์•ผํ•˜๊ณ , ์‹ฑ๊ธ€ํƒœ๊ทธ ๋˜ํ•œ <br /> ์ฒ˜๋Ÿผ ์ข€ ๋” ์—„๊ฒฉํ•œ ๋ฌธ๋ฒ•์„ ์ ์šฉ๋œ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ์Šต๋‹ˆ๋‹ค!

profile
๐Ÿ“š ๋ฐฐ์›€์˜ ๊ณผ์ •์„ ๊ธฐ๋กํ•ด์š” | ๐Ÿ’ฌ ๊ฐ€๋ณด์ž๊ณ 

0๊ฐœ์˜ ๋Œ“๊ธ€