๋ฐ๋ธ์ฝ์ค 6์ฃผ์ฐจ๊ฐ ์์๋์๋ค. ๊ฐ์ ์์ ์ค๋น๋ก ์ธํด ์ค๋์ ๋จผ์ CSS๋ฅผ ๋ฃ๊ฒ ๋์๋๋ฐ ์ต๊ทผ ๋ง๋ค์๋ ์ก์ก๋
ธ์
์์ ๊ฐ์ฅ ์ด๋ ค์ ๋ ์ ์ด ํ๋ก์ ํธ ์ค๊ณ๋ถ๋ถ
, CSS...
์๊ธฐ ๋๋ฌธ์ ์ฃผ๋ง๋ด๋ด html์ CSS๋ฅผ ์ด๋ป๊ฒ ๊ณต๋ถํด์ผํ ์ง์ ๋ํด ๊ณ ๋ฏผํ์๋ค. ๋ง์ด ๋ง๋ค์ด๋ณด๋๊ฒ์ด ์ค์ํ๋ค๊ณ ํ์ง๋ง ๋ญ ์์์ผ.. ๋ญ ์ด๋ป๊ฒ ์ง์ผ ์ข์๊ฑด์ง ์์์ผ ์งค ์ ์๋ค๋ ์๊ฐ์ ๋จธ๋ญ๋จธ๋ฆฌ๊ณ ์์๋๋ฐ, ๋ฑ ๋ง์นจ ๊ท์ ์์ ๋ค์ด์ค๋ CSS ์ค๋ช
๊ณผ orange
, royalblue
, tomato
๋ฅผ ์ข์ํ์๋ ๊ฐ์ฌ๋๋์ ๋ ์ด์์์ ์ง๋ CSS ์์์ ๋ํด ์๊ฒ ๋์๋ค. ๋ํ ๋ฐ๋ธ์ฝ์ค๋ง์ ๋คํธ์ํฌโญ์์ CSS๋ฅผ ๋ ์ฐ์ตํด๋ณผ ์ ์๋ ์ ๋ณด๋ฅผ ๊ฐ์ฑ - ํ๊ณ ! ๊ทธ๊ฑธ ์ด์ฉํด ์ฐจ๊ทผ์ฐจ๊ทผ ๋ถ์กฑํ ๋ถ๋ถ์ ์ฑ์ฐ๊ณ ์ถ๋ค.
์ผ๋ง ์ ๊ฐ๊ฐ์ ํ๋...... ๋ฒ์จ ๊ฐ์๊ฐ ๋ฐ๋ ค์๋... ๊ต์๋๋ค... ์กด๊ฒฝํฉ๋๋ค...
์์ง ๊ฐ๊ฐ ์ฒซ์ฃผ. ์ข
๊ฐ์ด ๋๋ฌด ๋๋ฌด ๊ฐ์ ํ์ง๋ง, ๋๋ ํ ์ ์์ด์!!!! ๊ทธ๋ฆฌ๊ณ ํํ์ด ์ฐํด๋ฅผ ํ ํ ํฌํธํด๋ฆฌ์ค ๋ง๋ค๊ธฐ
๋ฅผ ๋์ ํด๋ณผ๊นํ๋ค. ์ฐ์ , ์ด ๋ ๋ค๋ฅธ ์ฌ๋๋ค์ ํฌํธํด๋ฆฌ์ค๋ฅผ ๋ณด๊ณ ์๊ฐ์ ์ป๊ณ ์ถ์์ฐํด๋ ๋์ฒด ๊ณตํด์ผ์ฒ๋ผ ๋ฐ๋ธ์ฝ์ค ์์
์ด ์์ ๋ ๋ง๋ค์ด๋ณด๊ธฐ๋ก ํ๋ค. ํ์ดํ
!
์ด์ CSS๋ฅผ ๋ค๋ก ํ๊ณ ๋ค์ ๋ฐ๋๋ผJS ์ญ๋์ฌํ2๋ก ๋์ด์๋ค. ๊ฐ์ฅ ๋จผ์ ๋ง๋ ์ฃผ์ ๋ ๋ฐฐํฌ๋ฅผ ์ด๋ป๊ฒ ํ๋? ์๋ค. ๋ช๊ฐ์ง ์๋น์ค๋ฅผ ์๋ ค์ฃผ์๊ณ ๊ฐ๊ฐ SPA์์ ๊ฒช๋ 404์๋ฌ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ผํ๋์ง์ ๋ํด ๋ฐฐ์ ๋ค. ์ฒ์ ๋ณธ๊ฒ๋ ์๊ณ ๋ฉํ ๋๊ป ์ถ์ฒ ๋ฐ์๋ ํด๋ ์์๋ค. ์ด์ฌํ ๋ก์ปฌ์์ ๋ง๋ค์ด๋ ํผ์๋ฐ์ ๋ณผ ์ ์๋ค๋ฉด ๋งค๋ ฅ์ ์ด์ง ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐฐํฌ๋ฅผ ํด๋ณด๊ณ , ์ง์ ์ด์์ ํตํด ์ป๋๊ฒ๋ ๋ง๋ค๊ณ ํ์๊ธฐ ๋๋ฌธ์ ์ด๋ฒ์ ๋ง๋ค์๋ ์ก์ก๋ ธ์ ์ ๋ฐฐํฌํด๋ณผ๊น! ๊ณ ๋ฏผ์ค์ด๋ค.
๋ฐฐํฌ๋ ์ด๋ ค์ ๋ฐฐํฌ๋ ์ด๋ ค์
ํ๋ค๊ฐ github pages๋ฅผ ์ด์ฉํด ๋ฐฐํฌ๋ฅผ ํด๋ณด์๋ค. github์ ์ด์ฉํ ์ด์ ๋, 1) ๊นํ์ ๋ฌด๋ฃ๋ค. 2) ๋๋จธ์ง ๋๊ตฌ๋ฅผ ์ด์ฉํด๋ณด๊ธฐ์ ๋ง์์ด ์กฐ๊ธํ๋ค. 3) ์ถฉ๋ถํ ์ ์ ์ด๋ผ๊ณ ์๊ฐํ๋ค. ์ ๋๋ก ๋ค ์ ์๋ค. gh-pages ๋ธ๋์น๋ฅผ ์ด์ฉํด ๋ง๋ค๊ณ , ๋ธ๋์น๋ฅผ ์ด์ฉํด ์์ ๋ฐ ๋ฐฐํฌ๋ฅผ ํ๋ ์์ ๋ฐฉ๋ฒ์ผ๋ก ์งํํ๋ค. ์๋ ๋ง๋ค์ด๋์๋ ๊นํ ๋ธ๋ก๊ทธ๊ฐ ์์๊ณ , ๋ ๋ฐฐํฌ๋ฅผ ํด๋ณด๊ณ ์ถ์๊ธฐ ๋๋ฌธ์ repo ์ด๋ฆ์ ๋ฌ๋ฆฌ ์ค์ ํ๊ณ , depth ๋ฌธ์ ๋ฅผ ๋ง๋ฑ๋จ๋ ธ๋ค. ํ์ง๋ง ๋ผ์ฐํ
๊ณผ history API ์ชฝ์ url๋ฅผ ํ๋์ฝ๋ฉ์์ผ๋ก ์์ ํ๋๋ ์ค๋ฅ๋ ๋๋ฑ! ์กํ๋ค. ๋ชฌ๊ฐ ํ๋๋ฃจ๋ง๋๋ฃจ ๋๊ณ ์์ง๋ง ๋ง์์ ๋ค์ง ์๋๋ค.. ๐ญ ํ์ง๋ง ๊ทธ๊ฑธ ๊ณ ์น ์๋ ์์ง.. ๐ญ ๊ทธ๋๋ ๋ด๊ฐ ๋ง๋ ๋ด ์์์ด ์ด ์ธ์์ ๋ณด์ฌ์ง๋ค๋ ๊ฒ ์์ฒด๊ฐ ๋งค-์ฐ ๋ฟ๋ฏํ๋ค.
์ด์ ๋ฐฐํฌ ๊ฐ์๋ฅผ ๋ค๋ก ํ๊ณ ๋ง์น ํ๋ก ํธ์๋ ์ง์ํ๋ฉด ๋ง๋ ์ ์๋ ๊ฐ๋ฐ ๊ณผ์ ๊ฐ์ ๋๋์ ๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ ~
๊ฐ ์์๋์๋ค. :) ์ค๋ ์ฒซ๋ฒ์งธ๋ก ๋ง๋ ํ๋ก์ ํธ๋ ๋ฌดํ์คํฌ๋กค
๋ง๋ค๊ธฐ! ์ด๋ฏธ์ง์ Path๋ฅผ ์ ๊ณตํ๋ API์ ์ฐ๊ฒฐํด ์คํฌ๋กคํ๋ฉด์ ์์น์ด ์ฌ์ง์ ๋ณผ ์ ์๋ ํ๋ก์ ํธ๋ค. ์คํฌ๋กค์ ํฌ์ธํธ๋ ์ปจํ
์ธ ๋ง์ง๋ง ์์๋ฅผ ๋ณผ ์ฆ์ ๋ค์ ์ปจํ
์ธ ๋ฅผ ๋ถ๋ฌ์ค๋ ๋ฐฉ์
์ด๋ผ๊ณ ํ ์ ์๋ค. ์ด๋ฅผ ๊ตฌํํ๊ธฐ ์ํด์ 2๊ฐ์ง ์ ๊ทผ ๋ฐฉ๋ฒ์ด ์๋ค. 1) scroll ์ด๋ฒคํธ ์ด์ฉํ๊ธฐ 2) intersection observer ์ด์ฉํ๊ธฐ. ์ด ๋๊ฐ์ง๋ฅผ ์ด์ฉํด ๋ฌดํ ์คํฌ๋กค ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ค-
์ฌ์ค ์์ ์ ๊ณต๋ถ๋ฅผ ํ๋ฉด์, scroll ์ด๋ฒคํธ์ ๋ํด์ ์ค์ต์ ํด๋ณธ ๊ฒฝํ์ด ์์๋ค. ํ์ง๋ง scroll ์ด๋ฒคํธ ๋ฐ์ + ๊ฑฐ๊ธฐ์ ๋ฐ๋ฅธ API fetch + setState๋ฅผ ํ๋ ๊ณผ์ ๊ณผ ๋ ์ด์ ๋ถ๋ฌ์ฌ ์ด๋ฏธ์ง๊ฐ ์๋ ๊ฒฝ์ฐ ์ฒ๋ฆฌ + ๊ฐ์ฅ ๋ง์ง๋ง ์ด๋ฏธ์ง๊ฐ ํ๋ฉด์ ๋ค์ด์์ ๋ ๊ฐ์ง ํ๋ ๊ธฐ๋ฅ๊น์ง ์ถ๊ฐ๋์ด ๋ ํจ์จ์ ์ด๊ณ ์ฌ์ฉ๊ฐ์ด ํธํ ๋ฌดํ ์คํฌ๋กค ํ๋ก์ ํธ๋ ์ฒ์์ด์๋ค. ๋ ธ์ ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ๊ต์ฅํ ๋ฐ๋ณต์ ์ด๋ค? ๋ผ๊ณ ๋๊ผ๋ ๊ฑด ๊ฒฝ๊ธฐ๋ ์ค์ฐ...! ์ด๋ฒ์ฃผ๋ ๊ณ์ํด์ ์๋ก ์กฐ๋ก ๊ธฐ๋ฅ๋ค์ ๋ง๋๋ ์๊ฐ์ด ์ด์ด์งํ ๋ฐ ๋ง์ด ๊ธฐ๋๋๋ค. ๐
์ค๋ ๋ฐฐ์ด ์ฃผ์ ๋ ๊ณ ์์ด ์ฌ์ง์ฒฉ ๋ง๋ค๊ธฐ!! ๊ฐ๋จํ๊ฒ ์๊ธฐํ์๋ฉด, API๋ฅผ ์ด์ฉํด ์ฌ๋ฌ ๋๋ ํ ๋ฆฌ์ ํ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ ์ฌ์ง์ฒฉ์ ๊ตฌํํ๋ ๊ฒ! ํต์ฌ ๊ตฌํ ๋ด์ฉ์ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๋์ด์๋ ์ฌ์ง์ฒฉ์ ํํํ๊ธฐ
์ ์ด๋ฏธ์ง ์ธ ๋ถ๋ถ ํด๋ฆญ์ ๋ซ๊ธฐ
์ผ๋ก ๋๋ ์ ์๋ค. ์ฐ์ , ๋
ธ์
ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ API์๊ฒ ํ์ด์ง id๋ฅผ ๋ณด๋ด๊ธฐ ์ํด ์ฌ๊ท์ ์ผ๋ก id์ ๋ถ๋ชจ์ ๊ทธ ์์น๋ฅผ ์ฐพ์์ฃผ๋ ์์
์ ํ๋ค. ์ด๋ ๋ก์ง์ด ํ์ฐธ ๋ ์ค๋ฅด์ง์์ ์ํฐ๋ ์ค ๋ฐ์๋ ๊ธฐ์ต ๋๋ฌธ์ธ์ง, API ํธ์ถ๋ก ์ฝ๊ฒ ํด๊ฒฐ๋๋ ์ฌ์ง์ฒฉ์ ๋ณด๊ณ ์ฐ๋ฆฐ ์์ด ์ด์ใ
~ ํ๊ณ ๋ด๋ ค๊ฐ๋ ๊ธฐ๋ถ์ ๋๊ผ๋ค. ์ฌํ ๊ฐ์ฌ๋๊ณผ ํจ๊ป ํ๋ ์ปดํฌ๋ํธ ๋ฐฉ์ ๋ฐ๋๋ผ JS๋ก ๊ตฌํํ๊ธฐ
์ด๊ธฐ ๋๋ฌธ์ ์ฌ์ง์ฒฉ ๋ํ ์ปดํฌ๋ํธ ํ์์ผ๋ก ๋๋๊ณ state ๊ด๋ฆฌ๋ฅผ ํตํด ์์กด์ฑ์ด ๋ฎ๊ณ ๋ชจ๋์ ๋
๋ฆฝ์ฑ์ด ๋์ ๋ฉ์ง ํญ๋ฐํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ๋ค.
๋ฐ๋ธ์ฝ์ค์ ๋ค์ด์ค๊ธฐ ์ ์ ๋ฐ๋๋ผ JS ์ํ๋ค = ๋๋์ผ javascript ๋ฐฑ๊ณผ์ฌ์ ~?
์ด๋ผ๋ ํธ๊ฒฌ์ด ์์๊ณ , ๋ค์๋ ๊ฐ์๋ ์ฑ
์ ์์ ์์๋ ์ปดํฌ๋ํธ์์ผ๋ก ์ง๋ ๋ฐฉ๋ฒ์ ๋ํด ๋ฐฐ์ฐ์ง ์์์ ์์ํ์ง๋ง App.js
์์ state๋ฅผ ๊ด๋ฆฌํ๊ณ ํ์ ์ปดํฌ๋ํธ๋ค์ ๊ทธ์ ๋ด๋ ค์ค ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ๋๋๋งํ๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๋ค๋ ๊ฒ์ด ๋-๋ฌด ํจ์จ์ ์ด๊ณ ์ต์ํด์ง ๊ฒ ๊ฐ๋ค. ์ด๋์ ๋๊ฐ๊ณ (?)๋ ๊ธฐ๋ณธ์ ์ธ ํ์ ํ์ดํํ๋ ๋๋ฅผ ์นญ์ฐฌํดโฆ โญ
๋ฆ๊ฒ ์ฐ๋ TIL๋ผ ๊ธฐ์ต์ด ์๋์..
๋ฐ๋๋ผ JS๋ก ๊ตฌํํ๋ ๋ณต์๋ณต์ ์ฌ๋ฌ๊ธฐ๋ฅ์ 4๋ฒ์งธ! ์ด๋ฒ์๋ ๊ณ ์์ด ์ฌ์ง ๊ฒ์๊ธฐ์ ๋ํ ๊ฐ์๊ฐ ์ด์ด์ก๋ค. ์ด์ ๋ ์ปดํฌ๋ํธ๋ฐฉ์์ผ๋ก ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ด ๋ง์ด ์ต์ํด์ง ๊ฒ ๊ฐ๋ค. ํ์ง๋ง ์๋ก์ด๊ฑธ ๋ฐฐ์ฐ๋ฉด ๋ ๋๋ฌด ์๋กญ๊ฒ ๋๋ฌธ์ ใ
ใ
ใ
ใ
ใ
ใ
๊ฐ๊ธธ์ด ๋ฉ๋ค - !
์๋กญ๊ฒ ์๊ฒ ๋ ๊ฒ์ ์ต์
์ฐฝ์ ๋ํด์ ํค๋ณด๋ ์ํ ๋ฒํผ์ผ๋ก ์ ํ ๋ฉ๋ด๋ฅผ ๋ณ๊ฒฝํ๊ณ , ์ํฐ์ ๊ฐ์ ํค๋ก ๊ฒ์์ ๋ํ ํค์๋๋ฅผ ์
๋ ฅํ๋ ๋ฐฉ๋ฒ! ์ญ์๋ ๋๋ฐ์ด์ค ์ฒ๋ฆฌ๋ก ์๋ฒ์ ๋ํ ์์ฒญ์ ๊ฐ์ํํ๊ณ , ํจ์จ์ ์ธ ํ๋ก๊ทธ๋จ์ ๋ง๋ค ์ ์์๊ณ ์ปดํฌ๋ํธ๋ก ๋ค ๋ถํดํด ๊ฐ์ ์ฃผ์ด์ง ์ผ์ ์๋ก ์ํฅ์ฃผ์ง ์๊ณ ๋๋ฑ๋๋ฑ ๋ง๋ค์ด๋๋ค.
์ปดํฌ๋ํธ ๋ฐฉ์์ผ๋ก ๋ฐ๋๋ผ JS๋ง์ ์ฌ์ฉํด ์ฌ๋ฌ ๊ธฐ๋ฅ์ ๋ง๋ค์ด๋ณด๋ฉด์ ๋๋ ๊ฒ์, ๋ช
๋ นํ๋ณด๋ค ๋ญ๊ฐ ๋ฉ์ง๋ค-
๋ผ๋ ๊ฒ์ด์๋ค. ๋ฌผ๋ก ๋ช
๋ นํ ์ฒ์ ๋ฐฐ์ธ ๋ ์ด๋ ๊ฒ ๋ ๋ฉ์ง์๊ฐ ์์๋ค. ใ
ใ
ใ
ใ
ํ์ง๋ง ์ ๊ฐ๊ธฐ ๊ฐ๋จํ๊ฒ ๊ธฐ๋ฅ์ ํ๋ํ๋ ๋ง๋ค๊ณ ํ๋๋ก ํฉ์ณ์ก์ ๋ ์ํ๋ ๊ธฐ๋ฅ์ ๋!!! ํ๊ณ ๊ฐ์ ธ์จ๋ค๋ ๊ฒ์ด ๋-๋ฌด ๋ง์์ ๋ ๋ค. ๊ทธ๋์ ํ์ ๋ฐฐ์ธ ๋ฆฌ์กํธ๋ ๋ทฐ ๊ฐ์ ํ๋ ์์ํฌ๊ฐ ๋๋ฌด๋๋ฌด ๊ธฐ๋๋๋ ์ค - !