- API ์ฌ์ดํธ: The Open Movie Database
- ๋ฐฐํฌ ์ฃผ์:
https://jolly-malasada-e12b2c.netlify.app
React ํ๋ก์ ํธ๋ฅผ ํ๊ธฐ ์ , ๋ชจ๋ JS์ ๋ํ ์ดํด๋ฅผ ๋์ด๊ณ ์๋ จ๋๋ฅผ ์ต๋ํ ๋์ด๊ธฐ ์ํ ๋ง์์ ๋ฐ๋๋ผ JS๋ก ๊ตฌํํ๋ ๊ฒ์ ์ ํํ์๋ค. ์ด๋ฅผ ํตํด ๊ธธ๊ฒ ๋์ด์ ธ์ ์ธ์ ์๋ ์ฝ๋๋ฅผ ์ต๋ํ ๋ณด๊ธฐ ์ฝ๊ณ ๊ฐ๊ฒฐํ ๋ก์ง์ผ๋ก, ๋ฌธ๋ฒ์ผ๋ก ์์ฑ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํด ๊น์ด ๊ณ ๋ฏผํด ๋ณผ ์ ์์๋ ๊ฒ ๊ฐ๋ค.
history.pushState
API๋ฅผ ํ์ฉํ์ฌ ํ์ด์ง๋ฅผ ๋ค์ ๋ก๋ํ์ง ์๊ณ URL์ ํ์ํ ์ ์๋๋ก ํ์์ผ๋ฉฐ,window.location
API๋ฅผ ํตํด url ํ๋ผ๋ฏธํฐ์ ์ ๋ณด๋ฅผ JS๋ก ๊ฐ์ ธ์ค๋๋ก ํ์ฌ ์ฟผ๋ฆฌ์คํธ๋ง์ ํํ๋ก ๋ฐ์ดํฐ์ ์ ๋ณด๋ฅผ ์ ๋ฌํ ์ ์๋๋ก ํ์๋ค.- ์ด๋ฅผ ํตํด url ํ๋ผ๋ฏธํฐ ์ฃผ์์์์ ์ฟผ๋ฆฌ์คํธ๋ง์ ํํ๋ฅผ ์ค์ํ๋ฉด์ ํ๋ผ๋ฏธํฐ๋ฅผ ์์ ํ์ฌ ๋ ๋๋งํ์ฌ๋ ์ํํ๊ฒ ๊ฒ์ ๋ฐ ๋ฐ์ดํฐ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค. ์๋ฅผ๋ค์ด 'https://์ฃผ์/?s=๊ฒ์์ด'์ ๊ฒ์์ด๋ง ์กฐ์ ํ์ฌ ์ ์ํ์ฌ๋ ๊ฒ์๊ฒฐ๊ณผ๊ฐ ๊ทธ๋ ค์ง ํ๋ฉด์ ๋ณผ ์ ์๊ฒ ๋๋ค.
- ๋ํ ์ฟผ๋ฆฌ์คํธ๋ง์ ํ์ฉํ์ฌ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ๋๋ฌธ์ API์ ๋ฐ์ดํฐ๋ฅผ ํต์ ํ๋ ๋ชจ๋๋ถ๋ถ์ ํ์ํ ๋งค๊ฐ๋ณ์์ ์๊ฐ ์ค์ด๋๋ ๊ฒ์ ํ์ธํ ์ ์์๋ค.(ํธ๋ฆฌํ๋ค)
3. Babel์ ํตํด JS ํธ๋์คํ์ผ๋ง์ ์ ์ฉํ์์ผ๋ฉฐ, WebPack์ ํตํด ํ์ผ ๋ฒ๋ค๋ง์ ์ฌ์ฉํ์๋ค.
๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ๋์ฌ์ฃผ๊ธฐ ์ํด Babel์ ์ฌ์ฉ, ํ์ผ ๋ฒ๋ค๋ง ๋ฟ๋ง ์๋๋ผ ํ๊ฒฝ ์ธํ ๋ฉด์์๋ ๋ค์ํ ๋์์ ์ค ์ ์๋ค๊ณ ์๊ฐํ์ฌ WebPack์ ์ฌ์ฉํ๊ฒ ๋์๋ค.
- ์นํฉ์ ํตํด ์ด๋ฏธ์ง๋ฅผ ๋ก๋ํ๊ณ , ๊ธฐ๋ณธ path๋ฅผ ์ง์ ํ๋ฉฐ, ๊ธฐ๋ณธ ๊ฒฝ๋ก ๋ฐ ์๋ตํ ํ์ฅ์๋ช ๋ํ ์ค์ ํ์๋ค.
- ์นํฉ์ ํ์ฉํ์ฌ ํน์ฌ๋ ๋ฐ์ํ ๋คํธ์ํฌ์ ๋ถํ๋ฅผ ๋ค์ ์ํ์์ผ์ฃผ์๋ค.
- ๋ฐ๋ฒจ์ ํตํด ์ต์ ๋ฒ์ ์ ๋ฌธ๋ฒ์ ๊ตฌ๋ฒ์ ์ผ๋ก ๋ณํ(ํธ๋์คํ์ผ๋ง)ํ์ฌ ์กฐ๊ธ ๋ ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ด ๋์ ์ ์๋๋ก ํ์๋ค.
SCSS์ ๊ฒฝ์ฐ, ๊ธฐ์กด CSS๋ฅผ ์์ฑํ์์ ๋์ ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ, ๋ณต์กํ ์์ ์ถ๊ฒฉ ๋ฐ ๊ฐ์์ฑ๋ฑ์ ๋ฌธ์ ๋ฅผ ๋ค์ ํด๊ฒฐํ ์ ์์ด ์ฑ์ฉํ๊ฒ ๋์๋ค.
- SCSS๋ฅผ ํ์ฉํ์ฌ ๋น์ทํ ์คํ์ผ๋ง์ ๋ํ ์ฌ์ฌ์ฉ,
- mixin, include๋ฅผ ํตํด ๊ฐํธํ ๋ชจ๋ํ๋ฅผ ๊ฒฝํํ์๋ค.(๋ฐ์ํ ์์ ์์ ์ด๋ฅผ ํ์ฉํ์๋ค.)
- ํ๊ทธ์ ์์์์(ํน์ ๋ถ๋ชจ์์)๋ฅผ ์ง์ ํ ๋, ๋ธ๋ก in ๋ธ๋ก์ ํํ๋ฅผ ๋๊ธฐ ๋๋ฌธ์ ์ฝ๋ ๊ฐ๊ฒฐ์ฑ ๋ฉด์์๋, ๊ฐ์์ฑ ๋ฉด์์๋ ๋งค์ฐ ํธ๋ฆฌํ ๋ชจ์ต์ ๋ณด์ฌ์ฃผ์๋ค.
5. ์ต๋ํ API์์ ๋์ฌ ์ ์๋ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ๋ค์ํ ๊ธฐ๋ฅ์ ๊ตฌํํ๋๋ก ํ์๋ค.
- ์ํ ๊ฒ์ ๊ธฐ๋ฅ์ ๋ฉ์ธ์ผ๋ก ์ด๋ค ์ํ๋ฅผ ๊ฒ์ํ ์ง, ํ ๋ฒ์ ๋ช๊ฐ๋ฅผ ๋ณผ ์ ์์์ง, ์์ธ ์ ๋ณด๋ ์ด๋ป๊ฒ ๋์์ผ ํ ์ง, ์์ธ ์ ๋ณด ์์๋ ์ด๋ค ์ปจํ ์ธ ๋ฅผ ํฌํจ์์ผ์ผ ํ ์ง ๋ฑ ๋ฒํผ์ด๋ ์์ดํ , ์ปจํ ์ธ ๋ค์ ๋ฐฐ์น๋ ๊ธฐ๋ฅ๋ค์ ์ด๋ป๊ฒ ์ฌ์ฉํ๊ณ ๋ณด์ฌ์ค์ผ ์ฌ์ฉ์๊ฐ ๋ณด๋ค ํธํ๊ฒ ์ด์ฉํ ์ ์์์ง์ ๋ํด ๊น์ด ๊ณ ๋ฏผํ๊ณ ๋ง์ ์๊ฐ์ ๋ค์ฌ ๊ตฌํํ์๋ ๊ฒ ๊ฐ๋ค.
- ์ด๋ฅผ ํตํด ๋์จ ๊ธฐ๋ฅ๋ค์ ๋ค์๊ณผ ๊ฐ๋ค.
- ๊ฒ์ ์, ์ํฐ or ํ๋ฉด์์ ์๋ ๋ฒํผ์ ํด๋ฆญํ์ฌ ๊ฒ์
- ์ฒ์ ์ด๊ธฐ ๋ฉ์ธ ํ๋ฉด๊ณผ ๊ฒ์ ํ๋ฉด์ ๋๋์ด ํ์ด์ง ์ฒ๋ฆฌ
- ์๋ก๊ณ ์นจ์ ํ๋๋ผ๋ ์๋ ๊ฒ์ํ๋ ค๋ ์ ๋ณด๋ ๊ทธ๋๋ก ๋จ์ ์ ์๋๋ก ํ๋ค.(์ฟผ๋ฆฌ์คํธ๋ง ํ์ฉ)
- ์ต๋ํ ํ๊ทธ๋ ์์ดํ ๋ค์ ์ฌ๋ฐฐ์นํ๊ฑฐ๋ ๋ ๋๋ง ํ๋ ์์๋ ์์ ๋๋ก ํ๋ค.(๋ก๋ฉ ์๊ฐ์ ๋ฎ์ถ๋ค.) -> ์ํ์ ๋ํ ์์ธ ์ ๋ณด๋ modal ์ฐฝ์ ํ์ฉํ๋ค.
- ์ต์ ์ ๊ผญ ํ์ํ ๊ฒ ๊ฐ์ ์ต์ ๋ง ๋ฃ์ด๋๋ฉฐ, ํด๋น ์ต์ ์ ๊ฑด๋๋ฆฌ์ง ์์๋ ๊ฒ์์ ์ํํ๊ฒ ํ ์ ์๋๋ก ํ๋ค.
- ํ์ด์ง ์ฒ๋ฆฌ๋ ๋ฌดํ์คํฌ๋กค์ ์ฌ์ฉํ์๋ค.
- ์ ๋ ฅํ๋ ๊ฐ์ ํญ์ ๋ฒํผ ํ๋๋ก ์ด๊ธฐํ ํ ์ ์๋๋ก ํ๋ค.(input/form clear ๋ฒํผ)
- ํ์ฌ ๋์์๋ ์ํ ์ ๋ณด๋ค ๋ด์์ ์ต์ ์, ์ค๋๋ ๋ ๋ ์์ผ๋ก ์ ๋ ฌ ํ ์ ์๋๋ก ํ๋ค.(์ ์ฒด ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ฉด ์ข์ ๊ฒ ๊ฐ์ง๋ง, ์ฃผ์ด์ง API์ ํ๊ณ๋ก ์ธํด ๊ตฌํํ ์ ์์๋ค.)
- OS๊ฐ(window, mac) ๋ณด์ด๋ ํ๋ฉด์ด ์กฐ๊ธ์ฉ ๋ฌ๋ผ ์คํ์ผ๋ง์ด๋ ๋ ์ด์์์ ๋ง์ถ๊ธฐ ์ด๋ ค์ ๋ค. ๊ทธ ๊ฒฐ๊ณผ window ํ๋ฉด์ ์กฐ๊ธ์ฉ ํฝ์ ๋จ์๋ก ๊ทธ๋ฆผ์ด ์งค๋ฆฌ๊ฑฐ๋ ๋ถ์กฑํ ํ๋ฉด์ ์ฐพ์ ๋ณผ ์ ์๋ค.
- ์ฌ๋ฌ๊ฐ์ ํจ์์์ ๊ฐ์ด ์ฌ์ฉํ๋ ๋ณ์๋ค์ ํ ๋ชจ๋์ ์ ์ญ๋ณ์๋ก ๋ชฐ์์ ๋ฃ์ด๋์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ํ์ ๋ํ ์ ๋ก์ฌํญ์ด ์กฐ๊ธ ์์๋ค.(์ ์ญ๋ณ์๋ก ์ธํด ๋ชจ๋ํํ ์ ์๋ ํจ์/์ฝ๋๋ฅผ ํ ๊ณณ์ ๋ฃ์ ์ ๋ฐ์ ์์๋ค.)
- ํ์ด์ง๋ฅผ ์ด๊ธฐ์ ๋ ๋๋งํ ๊ฒฝ์ฐ, css๋ฅผ ์ ์ฉํ์ง ์์ htmlํ๊ทธ์ ๋ชจ์ต์ด ํ๋ฉด์ ์ ๊น ๋์จ๋ค. ํด๋น ๋ถ๋ถ์ ๋ํ ์ด์ ๋ ์ฐพ์ ์ ์์๋ค.(scss์ ์ํฅ? webpack?)
- ํน์ ๊ธฐ๋ฅ(ํ๊ทธ๊ฐ ๋ณด์ด๊ณ ์๋ณด์ด๊ณ , ํ๊ทธ๋ฅผ ํด๋ฆญ ์ ๋ฐ์ํ๋ ์ก์
)์ ๊ตฌํํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์ค๋ณต๋๋
queryselector
,addeventlistener
๊ฐ ๋๋ฌด ๋ง์๋ค. ๋ํ์ ์ธ ์๋ก ํ htmlํ์ผ ์์ ๊ฒ์ํ์ด์ง์ฉ ๊ฒ์ form, ๋ฉ์ธํ์ด์ง์ฉ ๊ฒ์ form ์ด ๋๊ฐ๋ฅผ ๋ชจ๋ ์์ฑํ๊ณ ์ฌ์ฉํ๋ ค๊ณ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์กฐ์ํ๋๊ฒ ๋ํ ํ์ ์กฐ์์ 2๋ฐฐ์ ๋ ๋ฆฌ์์ค๊ฐ ๋ค์๋ ๊ฒ ๊ฐ๋ค. ์ฆ, form ์์ input value๋ฅผ ๋ฐ์ api๋ฅผ ํธ์ถํ๋ ค ํ๋ฉด, ์ฐ์ ํด๋น input์ด ๋ฉ์ธํ๋ฉด์์ input์ธ์ง, ๊ฒ์ ํ์ด์ง ์์ input์ธ์ง๋ฅผ ๋จผ์ ํ๋ณ๋ถํฐ ํด์ผ ํ๋ค. ์ด๋ฅผ ํ์ธํ๊ธฐ ์ํ ์ฝ๋๊ฐ ์๊ฐ๋ณด๋ค ๊ธธ๊ฒ ์์ฑ๋์๋ค. ์ฐจ๋ผ๋ฆฌ ํ form ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ฉด์์ ์์น๋ง ๋ณ๊ฒฝํ๋๋ก ํ๋ค๋ฉด ๋ ๋ซ์ง ์์์๊น ํ๋ ์๊ฐ์ด ๋ ๋ค. - scss์ mixin์ด๋ include๊ฐ์ ๊ธฐ๋ฅ์ ๋ง์ด ์ฌ์ฉํ์ง ๋ชปํ์๋ค.
- UX/UI๋ฅผ ๊ณ ๋ คํ ๋ ์ด์์/๋์์ธ ์ค๊ณ๋ ๋ง์ด ์ด๋ ต๋ค๋ ๊ฒ์ ๊นจ๋ฌ์๋ค.. ๋ฐ์ํ ์ค๊ณ๊ฐ ๋๋ฌด ๊น๋ค๋ก์ด ๊ฒ ๊ฐ๋ค.
- ์ ์ฒด์ ์ผ๋ก ๋ชจ๋ํ๋ผ๊ธฐ ๋ณด๋ค๋ ํจ์๋ฅผ ๋ง๊ตฌ์ก์ด๋ก ์ฐข์ด ๋ถ๋ฆฌํด ๋์ ๋๋์ด๋ค. ๋ค์ด๋ฐ ๋ํ ๊ท์น์ ์ด๊ณ ์ง๊ด์ ์ด์ง ์์ ๊ฒ ๊ฐ๋ค.
- ํ์ด์ง ์ ์ง๋ณด์
- ๋ฐ์ํ ์น ๋ํ ์ผ ๊ตฌํ
- local storage๋ฅผ ํ์ฉํ ์ฐ, ์ต๊ทผ ๋ณธ ์ํ ๋ชฉ๋ก ๊ตฌํํด๋ณด๊ธฐ
- ํด๋ก์ ์ ๊ฐ๋ ์ ์ฌ์ฉํ ๋งํ ๊ณณ์ด ์์์ง ๊ณ ๋ฏผํ๊ณ ์ ์ฉํด๋ณด๊ธฐ
- git clone ํ,
root path
์ ํฐ๋ฏธ๋์ ํด๋น ๋ช ๋ น์ด ์ ๋ ฅ
npm install
npm run dev