Frontend ๐Ÿ“š 63

[React] TMDB API๋ฅผ ํ™œ์šฉํ•œ ๋„ทํ”Œ๋ฆญ์Šค ํด๋ก  ์ฝ”๋”ฉ - 3. API ํ˜ธ์ถœ๊ณผ Local Storage๋ฅผ ํ™œ์šฉํ•œ ์˜ํ™” ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ

API ํ˜ธ์ถœ๊ณผ Local Storage๋ฅผ ํ™œ์šฉํ•œ ์˜ํ™” ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ์ด๋ฒˆ ๋‹จ๊ณ„์—์„œ๋Š” TMDB API๋ฅผ ํ™œ์šฉํ•œ ๋ฐ์ดํ„ฐ ํ˜ธ์ถœ๊ณผ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ํ™œ์šฉํ•œ ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” API ํ˜ธ์ถœ๊ณผ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€ ๊ด€๋ จ ์ฝ”๋“œ์˜ ์ฃผ์š” ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.1. TMDB API ์„ค์ •TMDB(The Movie Database)๋Š” ์˜ํ™” ๋ฐ์ดํ„ฐ API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.์ด ํ”„๋กœ์ ํŠธ์—์„œ๋Š” TMDB API๋ฅผ ์‚ฌ์šฉํ•ด ์ธ๊ธฐ ์˜ํ™”, ํŠน์ • ์˜ํ™” ์ •๋ณด, ์˜ํ™” ๊ฒ€์ƒ‰ ๋“ฑ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.API ์„ค์ • ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:import axios from "axios";// TMDB API ๊ธฐ๋ณธ ์„ค์ •const BASE_URL = "";const API_KEY = process.env.REACT_APP_TMDB_API_KEY; // ํ™˜๊ฒฝ ..

[React] TMDB API๋ฅผ ํ™œ์šฉํ•œ ๋„ทํ”Œ๋ฆญ์Šค ํด๋ก  ์ฝ”๋”ฉ - 2. ์„ค์น˜ ๋ฐ ์ดˆ๊ธฐ ์„ค์ •

์ด ๊ธ€์—์„œ๋Š” ๋„ทํ”Œ๋ฆญ์Šค ํด๋ก  ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ํ™˜๊ฒฝ ์„ค์ •๊ณผ ์ดˆ๊ธฐ ํŒŒ์ผ ๊ตฌ์กฐ ๊ตฌ์„ฑ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋‹ค๋ฃน๋‹ˆ๋‹ค. 1. React ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ๋จผ์ €, React ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด React ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:npx create-react-app netflix-clonenpx create-react-app ๋ช…๋ น์–ด๋Š” React ๊ณต์‹ ํ…œํ”Œ๋ฆฟ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.netflix-clone์€ ํ”„๋กœ์ ํŠธ ํด๋” ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์ƒ์„ฑ์ด ์™„๋ฃŒ๋˜๋ฉด ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค:cd netflix-clone์˜์กด์„ฑ ์„ค์น˜ ํ™•์ธReact ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•„์š”ํ•œ ์˜์กด์„ฑ๋“ค์ด ํ•จ๊ป˜ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค. package.json ํŒŒ์ผ์„ ์—ด์–ด ๋‹ค์Œ ํŒจํ‚ค์ง€๊ฐ€..

[React] TMDB API๋ฅผ ํ™œ์šฉํ•œ ๋„ทํ”Œ๋ฆญ์Šค ํด๋ก  ์ฝ”๋”ฉ - 1. ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

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

[React]GitHub Pages + React๋กœ ๋‚˜๋งŒ์˜ ํฌํŠธํด๋ฆฌ์˜ค ๋งŒ๋“ค๊ธฐ - 6. ์™„์„ฑ ๋ฐ ํšŒ๊ณ 

1. ์™„์„ฑ ๐ŸŽ‰https://seungjaelee00.github.io React App seungjaelee00.github.io 2.ํšŒ๊ณ ํ•œ 10์ผ..์— ๊ฑธ์ณ ๋Œ€์ถฉ ํฌํŠธํด๋ฆฌ์˜ค๊ฐ€ ์™„์„ฑ๋˜์—ˆ๋‹ค. ์‚ฌ์‹ค ์™„์„ฑ๋„๊ฐ€ ์•„์ฃผ ๋†’์€ ํŽธ์€ ์•„๋‹ˆ์ง€๋งŒ, ๋‚ด๊ฐ€ ํ•˜๋‚˜๋ถ€ํ„ฐ ์—ด๊นŒ์ง€ ๋‹ค ์ง์ ‘ ๋งŒ๋“ค์–ด์„œ ์ž์œ ๋กญ๊ฒŒ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ด ์ •๋„์— ๋งŒ์กฑํ•˜๋ ค ํ•œ๋‹ค. ์ˆ˜์ •ํ•  ๊ฑฐ ์ƒ๊ธฐ๋ฉด ํ•˜๋ฉด ๋˜์ง€.. ๋งˆ์ธ๋“œ๋กœ..๊ทธ๋‚˜์ €๋‚˜ ์—ญ์‹œ css ๋งŒ์ง€๊ธฐ๋Š” ์–ด๋ ต๋‹ค...๊ธฐ๋Šฅ? ๊ตฌํ˜„ ์ฝ”๋“œ๋Š” ๊ธˆ๋ฐฉ๊ธˆ๋ฐฉ ์งœ๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ, css๋ฅผ ๋งŒ์ง€๋ ค๋‹ค ๋ณด๋‹ˆ ์ƒ๊ฐ๋ณด๋‹ค ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ์ง€์ฒด๋˜์—ˆ๋‹ค. ํ™”๋ฉด ํฌ๊ธฐ 360px ์ดํ•˜๋กœ๋Š” ๊ณ„์† ์—๋Ÿฌ๊ฐ€ ๋‚˜์„œ ๋ฐ˜์‘ํ˜•์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ณต๋ถ€๋ฅผ ๊ณ„์†ํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค๊ทธ๋ฆฌ๊ณ  ๋ฌด์—‡๋ณด๋‹ค ๊ณ„ํš ์—†์ด ์šฐ๋‹ค๋‹ค ๋งŒ๋“ค๋‹ค ๋ณด๋‹ˆ ํ‹ฐ์Šคํ† ๋ฆฌ๋ฅผ ๊ณ„์† ์—…๋กœ๋“œํ•ด์•ผ์ง€ ํ–ˆ๋Š”๋ฐ ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ์—ญ์‹œ ๊ณ„ํš..

[React]GitHub Pages + React๋กœ ๋‚˜๋งŒ์˜ ํฌํŠธํด๋ฆฌ์˜ค ๋งŒ๋“ค๊ธฐ - 5. ํ”„๋กœ์ ํŠธ ์Šฌ๋ผ์ด๋” + ํ”„๋กœ์ ํŠธ ๋‚ด ์ด๋ฏธ์ง€ ์Šฌ๋ผ์ด๋”

1. ํ”„๋กœ์ ํŠธ ์Šฌ๋ผ์ด๋”- ๋‚ด๊ฐ€ ์ฐธ์—ฌํ–ˆ๋˜ ํ”„๋กœ์ ํŠธ๋“ค์„ ์›๋ž˜๋Š” aํƒœ๊ทธ๋งŒ ๋‹ฌ์•„์„œ ํ•ด๋‹น ํŽ˜์ด์ง€๋กœ ๋„˜๊ธฐ๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ, ๊ฐ„๋žตํ•œ ์†Œ๊ฐœ๊ฐ€ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์„œ ํ”„๋กœ์ ํŠธ ์Šฌ๋ผ์ด๋”๋ฅผ ๋งŒ๋“ค๊ธฐ๋กœ ๊ฒฐ์ •!1) ํ”„๋กœ์ ํŠธ ๋‚ด์šฉ ํŒŒ์ผ ์ƒ์„ฑ- ์šฐ์„ , ํ”„๋กœ์ ํŠธ ๋‚ด์šฉ๋“ค์„ ๊ฐ์ฒด ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ์ •๋ฆฌํ•ด์„œ projectItems๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ €์žฅํ•จ.projectItems.jsexport const projectItems = [ { title: "๐Ÿ›’๋ฌผํ’ˆ๋Œ€์—ฌ์„œ๋น„์Šค", category: "๊ฐœ์ธ ํ”„๋กœ์ ํŠธ", imageUrl: ``, githubLink: "", description: "", features: "", techStack: "", }, { title: "๐Ÿ’‍โ™€๏ธ๋‚˜๋งŒ์˜ ํฌํŠธํด๋ฆฌ..