๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โœ๏ธ DevLog/Devcourse

[DevCourse] ์ƒ์„ฑํ˜• AI ํ™œ์šฉ ๋ฐฑ์—”๋“œ ๋ฐ๋ธŒ์ฝ”์Šค 16์ผ์ฐจ

by hyebin (Helia) 2025. 4. 24.
๋ฐ˜์‘ํ˜•

์˜ค๋Š˜์€ React๋‚˜ jQuery ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ,

Vanilla JS(๊ธฐ๋ณธ JavaScript)๋งŒ์œผ๋กœ DOM์„ ์กฐ์ž‘ํ•˜๊ณ  UI๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์‹ค์Šต์„ ์ค‘์‹ฌ์œผ๋กœ ์ง„ํ–‰๋๋‹ค.

๊ธฐ๋ณธ๊ธฐ๊ฐ€ ํƒ„ํƒ„ํ•ด์•ผ ์–ด๋–ค ๋„๊ตฌ๋ฅผ ์“ฐ๋“  ํ”๋“ค๋ฆฌ์ง€ ์•Š๋Š”๋‹ค๋Š” ๋ง์ฒ˜๋Ÿผ, ์ด๋ฒˆ ์‹ค์Šต๋“ค์€ ๋‹จ์ˆœํ•˜์ง€๋งŒ ๊ฝค ์˜๋ฏธ ์žˆ๋Š” ์‹œ๊ฐ„์ด์—ˆ๋‹ค.


๐Ÿ“Œ ์˜ค๋Š˜ ๋ฐฐ์šด ์ฃผ์š” ๊ฐœ๋… ์ •๋ฆฌ

  • DOM ์ œ์–ด ๊ธฐ๋ณธ HTML ์š”์†Œ๋ฅผ ์ง์ ‘ ์กฐ์ž‘ํ•˜๋Š” ๋ฐฉ์‹ ์ตํž˜
  • getElementById, addEventListener, textContent, classList ๋“ฑ์„ ํ™œ์šฉํ•ด
  • jQuery vs Vanilla JS ๋น„๊ต์ฝ”๋“œ ๊ธธ์ด์˜ ์ฐจ์ด์™€ ๋ช…ํ™•์„ฑ์˜ ์ฐจ์ด๋ฅผ ๋น„๊ตํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค
  • ๊ฐ™์€ ๋™์ž‘์„ ๋‘ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•ด ๋ณด๋ฉฐ,
  • fetch API๋กœ JSON ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
  • .then()๊ณผ .catch()๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋ฐ›์•„์˜ค๋Š” ๋ฐฉ์‹ ์ตํž˜

๐Ÿงช ์‹ค์Šต ์ค‘์‹ฌ ํ๋ฆ„

์˜ค๋Š˜์€ ์ •๋ง ๋‹ค์–‘ํ•œ ๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ๋“ค์„ Vanilla JS๋กœ ์ง์ ‘ ๊ตฌํ˜„ํ•ด ๋ณด๋ฉด์„œ

DOM ์ œ์–ด์˜ ๊ธฐ๋ณธ ํ๋ฆ„๊ณผ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์— ์ต์ˆ™ํ•ด์ง€๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ๋‹ค.

 

โœ” ์ด๋ฏธ์ง€ ์นด๋“œ ๋ฆฌ์ŠคํŠธ

  • JSON ํŒŒ์ผ์—์„œ ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์™€ ์นด๋“œ ํ˜•ํƒœ๋กœ ๋ Œ๋”๋ง
  • createElement, appendChild, innerHTML ํ™œ์šฉ

โœ” ์ด๋ฏธ์ง€ ๊ฐค๋Ÿฌ๋ฆฌ

  • ๋ฐฐ์—ด๋กœ ๊ด€๋ฆฌ๋˜๋Š” ์ด๋ฏธ์ง€ ๋ชฉ๋ก์—์„œ ๋ฒ„ํŠผ ํด๋ฆญ์œผ๋กœ ์ˆœํ™˜ ํ‘œ์‹œ
  • ์ƒํƒœ ๋ณ€์ˆ˜(current)๋ฅผ ํ™œ์šฉํ•ด ํ˜„์žฌ ์ธ๋ฑ์Šค ์ถ”์ 

โœ” To-Do ๋ฆฌ์ŠคํŠธ

  • ํ•  ์ผ ์ถ”๊ฐ€, ํด๋ฆญ ์‹œ ์‚ญ์ œ๋˜๋Š” ๊ฐ„๋‹จํ•œ ๊ตฌ์กฐ
  • addEventListener์™€ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋ง ํŒจํ„ด ๋ณต์Šต

โœ” ํƒญ UI / ๋ชจ๋‹ฌ / ์•„์ฝ”๋””์–ธ

  • ํด๋ž˜์Šค๋ฅผ ํ† ๊ธ€ ํ•˜๊ฑฐ๋‚˜ ์Šคํƒ€์ผ์„ ์ง์ ‘ ์กฐ์ž‘ํ•˜๋ฉฐ
  • ๋‹ค์–‘ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„

โœ” ์ด๋ฒคํŠธ ์œ„์ž„ / ํผ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ

  • ๋™์  ์š”์†Œ์— ์ด๋ฒคํŠธ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•œ event.target ํ™œ์šฉ
  • ์ž…๋ ฅ ์กฐ๊ฑด ๊ฒ€์‚ฌ๋ฅผ ํ†ตํ•ด ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ

๐Ÿงก ๋А๋‚€ ์ 

์˜ค๋Š˜ ์‹ค์Šต์€ React ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ ์—†์ด, ์˜ค๋กœ์ง€ ์ˆœ์ˆ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋งŒ์œผ๋กœ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ์„ฑํ•œ ํ•˜๋ฃจ์˜€๋‹ค.

์ฒ˜์Œ์—” ๋งค๋ฒˆ document.querySelector()๋กœ ์š”์†Œ๋ฅผ ์ฐพ์•„ ์กฐ์ž‘ํ•˜๋Š” ๊ฒŒ ๋ฒˆ๊ฑฐ๋กญ๋‹ค๊ณ  ๋А๊ปด์กŒ์ง€๋งŒ, ์กฐ๊ธˆ์”ฉ ๊ตฌ์กฐ๋ฅผ ์ตํ˜€๊ฐ€๋ฉด์„œ ๋ฐ˜๋ณต๋˜๋Š” ํŒจํ„ด ์†์—์„œ ๊ฐ์„ ์žก์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

jQuery์— ๋น„ํ•ด ์ฝ”๋“œ๊ฐ€ ๊ธธ์–ด์ง€๋Š” ๊ฑด ์‚ฌ์‹ค์ด์ง€๋งŒ, ์–ด๋–ป๊ฒŒ DOM์ด ๊ตฌ์„ฑ๋˜๊ณ  ์ด๋ฒคํŠธ๊ฐ€ ํ๋ฅด๋Š”์ง€์— ๋Œ€ํ•œ ์ดํ•ด๋Š” Vanilla JS๋ฅผ ์จ๋ด์•ผ ํ™•์‹คํžˆ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

 

ํŠนํžˆ ์˜ค๋Š˜ ์‹ค์Šต์—์„œ ์žฌ๋ฏธ์žˆ์—ˆ๋˜ ๋ถ€๋ถ„์€ ๋ชจ๋‹ฌ, ํƒญ, ์ด๋ฏธ์ง€ ๊ฐค๋Ÿฌ๋ฆฌ ๊ฐ™์€ UI๋“ค์„ ์ง์ ‘ ์„ค๊ณ„ํ•ด์„œ ๊ตฌํ˜„ํ•ด ๋ดค๋‹ค๋Š” ์ ์ด๋‹ค.

์•„์ฃผ ๋ณต์žกํ•˜์ง„ ์•Š์•˜์ง€๋งŒ, ๋‚ด๊ฐ€ ๋งŒ๋“  ์ฝ”๋“œ๋กœ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋™์ž‘ํ•  ๋•Œ๋งˆ๋‹ค ์ž‘์€ ์„ฑ์ทจ๊ฐ์ด ์Œ“์˜€๊ณ , ์›น UI๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๊ทผ๋ณธ์ ์ธ ์ดํ•ด์— ํ•œ ๋ฐœ ๋” ๋‹ค๊ฐ€๊ฐ„ ๋А๋‚Œ์ด์—ˆ๋‹ค.

๋ฐ˜์‘ํ˜•