[JS][ํ”„๋กœ์ ํŠธ] ๐ŸŽฌ์˜ํ™” ๊ฒ€์ƒ‰ UI(8) - ํ”„๋กœ์ ํŠธ ํšŒ๊ณ 

์šฐ์—ฅยท2024๋…„ 5์›” 9์ผ

๐ŸŽ ํ”„๋กœ์ ํŠธ ๊ฒฐ๊ณผ๋ฌผ

๐Ÿ”—๋งํฌ: https://github.com/Eunyoung-Jo/movie_nonot

ย 

๐ŸŠ ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

  • ํŒ€์›๋“ค๊ณผ ํ•จ๊ป˜ JS ๋ฌธ๋ฒ•์˜ ํ•ต์‹ฌ์„ ์ ์šฉํ•ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ์˜ํ™” ๊ฒ€์ƒ‰ ์‚ฌ์ดํŠธ๋ฅผ ์ œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ์กด์˜ ๊ฐœ์ธ ๊ณผ์ œ์—์„œ ์ˆ˜ํ–‰ํ•œ ๋‚ด์šฉ์˜ ์‹ฌํ™” ๋ฒ„์ „์œผ๋กœ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ”๋‹๋ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ ์˜จ์ „ํ•œ ๊ฒฐ๊ณผ๋ฌผ์„ ์ œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

โœ”๏ธ ํ”„๋กœ์ ํŠธ ์š”๊ตฌ์‚ฌํ•ญ

(1) ํ•„์ˆ˜์š”๊ตฌ์‚ฌํ•ญ

  1. TMDB Open API ์ด์šฉ
  2. ์˜ํ™”์ •๋ณด ์ƒ์„ธ ํŽ˜์ด์ง€ ๊ตฌํ˜„
    • ๊ธฐ์กด ์˜ํ™”์ •๋ณด ์นด๋“œ ๋ฆฌ์ŠคํŠธ์—์„œ ํŠน์ • item์„ ์„ ํƒํ•  ์‹œ, ํ•ด๋‹น item ์ƒ์„ธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋„๋ก ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
    • ์ƒ์„ธ ํŽ˜์ด์ง€์—์„œ ๋ฉ”์ธ ํŽ˜์ด์ง€(ํ™ˆ)๋กœ ์ด๋™ํ•˜๋Š” UI๋„ ํ•จ๊ป˜ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  3. ์ƒ์„ธ ํŽ˜์ด์ง€ ์˜ํ™” ๋ฆฌ๋ทฐ ์ž‘์„ฑ ๊ธฐ๋Šฅ ๊ตฌํ˜„
    • ์ƒ์„ธ ํŽ˜์ด์ง€์—์„œ ํ•ด๋‹น ์˜ํ™”์— ๋Œ€ํ•œ ์˜๊ฒฌ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” UI๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
    • ์ž‘์„ฑ์ž, ๋ฆฌ๋ทฐ, ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋„๋ก ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
    • ์ž‘์„ฑํ•œ ์ •๋ณด๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ localStorage์— ์ ์žฌํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  4. github PR์„ ํ†ตํ•œ ํ˜‘์—…
  5. UX๋ฅผ ๊ณ ๋ คํ•œ validation check
    • ์˜ํ™” ๊ฒ€์ƒ‰ ์‹œ โ†’ ๋นˆ ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰ ์‹œ alert ๋ฉ”์„ธ์ง€
    • ๋Œ“๊ธ€ ์ž‘์„ฑ ์‹œ โ†’ validation rules์— ๋งž์ง€ ์•Š๋Š” ๋ฆฌ๋ทฐ ์ž‘์„ฑ ์‹œ alert ๋ฉ”์„ธ์ง€
  6. JavaScript ๋ฌธ๋ฒ• ์š”์†Œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„

    (2) ์„ ํƒ์š”๊ตฌ์‚ฌํ•ญ

  • CSS

    • flex ์‚ฌ์šฉํ•˜๊ธฐ
    • grid ์‚ฌ์šฉํ•˜๊ธฐ
    • ๋ฐ˜์‘ํ˜• UI ์‚ฌ์šฉํ•˜๊ธฐ
  • ์ƒ์„ธ ํŽ˜์ด์ง€ ๋ฆฌ๋ทฐ ์ˆ˜์ • ๋ฐ ์‚ญ์ œ ๊ธฐ๋Šฅ ๊ตฌํ˜„

  • ๋ฉ”์ธ ํŽ˜์ด์ง€์— ์กฐ๊ฑด์— ๋งž๋Š” ์นด๋“œ ๋ฆฌ์ŠคํŠธ ์ •๋ ฌ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (์ด๋ฆ„์ˆœ, ๋ณ„์  ๋†’์€ ์ˆœ)

    ย 

๐Ÿ‹ Stacks

ย 

๐Ÿˆ ์ฃผ์š” ๊ธฐ๋Šฅ

  • TMDB ์ธ๊ธฐ ์˜ํ™” ์ฝœ๋ ‰์…˜ ์กฐํšŒ
  • ์˜ํ™” ์ œ๋ชฉ์ˆœ, ๋ณ„์  ๋†’์€ ์ˆœ์œผ๋กœ ์˜ํ™” ๋ฆฌ์ŠคํŠธ ์กฐํšŒ ๊ฐ€๋Šฅ
  • ์˜ํ™” ์ œ๋ชฉ์„ ํ†ตํ•œ ์˜ํ™” ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ
  • ์˜ํ™” ์นด๋“œ ํด๋ฆญ์‹œ ํ•ด๋‹น ์˜ํ™” ์ƒ์„ธ ์ •๋ณด ์กฐํšŒ
  • ์˜ํ™” ์ƒ์„ธ ํŽ˜์ด์ง€์—์„œ ํ•ด๋‹น ์˜ํ™”์— ๋Œ€ํ•œ ๋Œ“๊ธ€ ์ž‘์„ฑ, ์ˆ˜์ •, ์‚ญ์ œ ๊ฐ€๋Šฅ

ย 

๐Ÿ‡ ํšŒ๊ณ 

๐Ÿ‘ Keep

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

๐Ÿซต Problem

  • ๋ณ€์ˆ˜๋ช… ์„ค์ •, ์ปค๋ฐ‹ ์ปจ๋ฒค์…˜ ๋“ฑ์˜ ๋ฃฐ์„ ๊ตฌ์ฒด์ ์œผ๋กœ ์ •ํ•˜์ง€ ์•Š์•„ ํ†ต์ผ์ ์ธ ํ˜‘์—…์„ ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.
  • ๊ธฐ๋ณธ ๊ณผ์ œ์—์„œ ๋” ๋ฐœ์ „๋œ ๊ตฌํ˜„ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ƒ๊ฐ์„ ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ์ด๋Š” ์šฐ๋ฆฌ ํŒ€์˜ ์ „๋ฐ˜์ ์ธ ๊ฐœ๋ฐœ ๋Šฅ๋ ฅ์ด ์•„์ง ๋‹ค๋ฅธ ํŒ€์— ๋น„ํ•ด ๋ถ€์กฑํ–ˆ๊ธฐ ๋•Œ๋ฌธ๋„ ์žˆ๋‹ค. ๊ทธ๋ž˜๋„ ๋” ๋‚˜์€ ๊ฒฐ๊ณผ๋ฌผ์„ ์œ„ํ•ด ๊ณ ๋ฏผํ•˜๋Š” ์‹œ๊ฐ„์ด ์ ์—ˆ๋˜ ๊ฒƒ์ด ์•„์‰ฝ๋‹ค.
  • TMDB API๋ฅผ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋„ˆ๋ฌด ํ•œ์ •์ ์ธ ๋ฐ์ดํ„ฐ๋งŒ ์‚ฌ์šฉํ–ˆ๋‹ค.

โœ๏ธ Try

  • ๋‹ค์Œ ํ˜‘์—…์—์„œ๋Š” ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ ์ „ ์ฝ”๋“œ ๊ทœ์น™์ด๋‚˜ ์ปค๋ฐ‹ ๊ทœ์น™์„ ๋ฏธ๋ฆฌ ์ž˜ ์„ธ์›Œ๋ณด๋„๋ก ํ•ด์•ผ๊ฒ ๋‹ค.
  • ๊ณผ์ œ์˜ ๋‚ด์šฉ์„ ์ „๋ถ€ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ ๋ฌผ๋ก  ํ•ญ์ƒ ๋ฐœ์ „๋œ ๊ฒฐ๊ณผ๋ฌผ์„ ๋‚ด๊ธฐ ์œ„ํ•ด ์š•์‹ฌ์„ ๋ถ€๋ฆฌ๋Š” ์‚ฌ๋žŒ์ด ๋˜์–ด์•ผ๊ฒ ๋‹ค. ์Šค์Šค๋กœ์˜ ์•„์ด๋””์–ด๊ฐ€ ๋ถ€์กฑํ•  ์‹œ ์ข‹์€ ๋ ˆํผ๋Ÿฐ์Šค๊ฐ€ ๋˜๋Š” ์‚ฌ์ดํŠธ๋ฅผ ์ฐธ๊ณ ํ•˜๋Š” ๊ฒƒ๋„ ๋ฐฉ๋ฒ•์ด๋‹ค.
  • ์ฝ˜์†” ๋กœ๊ทธ๋‚˜ ์ž„์‹œ๋กœ ์ฃผ์„ ์ฒ˜๋ฆฌ ํ•ด๋†“์€ ๊ฒƒ๋“ค์€ ์ตœ์ข… ๋ฐฐํฌ ์ „์— ๋ฌด์กฐ๊ฑด ๋‹ค ๊น”๋”ํ•˜๊ฒŒ ์ง€์šธ ๊ฒƒ!
  • ์‹œ๋ฉ˜ํ‹ฑํ•œ ์ฝ”๋“œ๋ฅผ ์งœ๋„๋ก ๋” ๋…ธ๋ ฅํ•ด์•ผ๊ฒ ๋‹ค.
  • ํ•ญ์ƒ ์‚ฌ์šฉ์ž์˜ UX๋ฅผ ๊ณ ๋ คํ•˜๋ฉฐ ๊ตฌํ˜„ํ•˜๋Š” ์Šต๊ด€์„ ๊ธธ๋Ÿฌ์•ผ๊ฒ ๋‹ค.
  • ์›น ํ”„๋กœ์ ํŠธ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ํ•ญ์ƒ ํ•ด์ƒ๋„๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค.
profile
๐ŸŒธ๐Ÿ˜Š๐ŸŒธ

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