์ฃผ์ ์์
- ํ๋ก๊ทธ๋ ์ค๋ฐ ์ ๋๋ฉ์ด์ ๊ตฌํ ๋ฐ ํ์ด์ง ์ด๋
- ๋ฆฌํฉํ ๋ง (์ปดํฌ๋ํธ ์ฌ์ฌ์ฉ์ฑ ๋์ด๊ธฐ)

ํ์ต ํค์๋
- requestAnimationFrame
- CSS - transition
๊ณ ๋ฏผ ๋ฐ ํด๊ฒฐ๊ณผ์ (+ ๋ฆฌ๋ทฐ ์์ฒญ)
์๋ ํ์ธ์ ๋ฉํ ๋! ์ค๋๋ ๊ณ ์ ๋ง์ผ์ญ๋๋คใ ใ ์ด์ ์ ๋ ๋๋ถ๋ถ์ ui๋ฅผ ๊ตฌํํ๊ณ ํ์ฌ๋ ์ธ๋ถ์ ์ธ ์ํ๊ด๋ฆฌ์ ๊ฐ์ ๋ถ๋ถ์ ์กฐ๊ธ์ฉ ์ฑ์๋๊ฐ๊ณ ์์ต๋๋ค! ์๋์ ์๋ ๊ฒ๋ค์ ์ ๊ฐ ๊ตฌํ์ ํ๋ ๊ณผ์ ์์ ๊ณ ๋ฏผํ๊ณ ํด๊ฒฐํ๊ฑฐ๋ ์์ง๊น์ง ์๋ฌธ์ ์ด ์ข ๋จ์ ๊ฒ๋ค์ ์ ๋ฆฌํด ๋ณด์์ต๋๋ค. ํธํ๊ฒ ๋ด์ฃผ์๊ณ ๋ง์ํด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค๐โโ๏ธ๐โโ๏ธ
ํด๋ ๊ตฌ์กฐ ๊ฐ์
์ ๋ฒ ์๊ฐ์ ๋ฉํ ๋๊ป์๋ ๋ง์ํด์ฃผ์ จ๋ค์ํผ ํจํด์ ๊ทธ๋๋ก ์ฌ์ฉํด์ ํ๋ก์ ํธ๋ฅผ ์งํํ๊ธฐ์๋ ๋ฌด๋ฆฌ๊ฐ ์๋ค๊ณ ์๊ฐํ์ต๋๋ค. ๊ธฐ์กด์ fsd ํจํด์ ๋ชฉ์ ์ ๊ทธ๋๋ก ๊ฐ์ ธ๊ฐ๋, ์ ๊ฐ ๊ฐ๋นํ ์ ์์ ์ ๋์ ๊ท๋ชจ๊ฐ ๋ ์ ์๋๋ก ํด๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ ํด๋ณด์์ต๋๋ค.
- app : ์ฑ์ ์ํธ๋ฆฌ ํฌ์ธํธ๋ฅผ ์๋ฏธํฉ๋๋ค. ์ ๋ ๋จ์ผ ํ์ด์ง๋ง ์ฌ์ฉํ ์์ ์ด๊ธฐ ๋๋ฌธ์ pages ๋๋ ํ ๋ฆฌ๋ฅผ ๋ฐ๋ก ๋๋ ํ์๊ฐ ์๋ค๊ณ ํ๋จํ์ฌ app์ ์ปดํฌ๋ํธ๋ค์ ์กฐํฉํ์ฌ ๋ฃ๊ฒ ๋์์ต๋๋ค.
- entities : ๊ฐ ๋๋ฉ์ธ๋ค์ ๋๋ ํ ๋ฆฌ๋ณ๋ก ๋๋์ด ๊ด๋ฆฌํฉ๋๋ค. ๊ฐ ๋๋ฉ์ธ ๋ณ๋ก
api,lib,model,ui์ ํ์ ํด๋๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.(autoRollingNews๋ ๋ฐ๋ก ํด๋์ ์์ )- api: ๋น์ฆ๋์ค ๋ก์ง๊ณผ api ํธ์ถ ๋ฑ์ ํฉ์น ํจ์๋ค์ ๋ณด๊ดํ ์์ ์ ๋๋ค.
- lib: ํด๋น ์ปดํฌ๋ํธ๋ค์ ์ ์ํ๋ ๊ณผ์ ์์ ํ์ ์ ์ผ๋ก ํ์ํ๊ณ , ๋ฐ๋ก ๋ค๋ฅธ ๋๋ฉ์ธ์ ์ปดํฌ๋ํธ๋ค์ด ๊ณต์ ํด์ ์ฌ์ฉํ์ง ์๋ ํจ์๋ค์ด๋ ์ปดํฌ๋ํธ๋ค์ ๋ํด์ ๋ชจ์ผ๋ ค๊ณ ํฉ๋๋ค.
- model : ๊ฐ ๋๋ฉ์ธ๊ณผ ์ปดํฌ๋ํธ์ ๊ด๋ จ๋ ๋ฐ์ดํฐ์ ํ์ ์ด๋ custom hook ๋ฑ์ ๋ณด๊ดํด๋๋ ๋๋ ํ ๋ฆฌ์ ๋๋ค.
- ui: ๋ค๋ฅธ ๋ก์ง๋ค์ ๋ถ๋ฆฌํ๊ณ ์ต๋ํ ์๊ฐ์ ์ผ๋ก ๋ณด์ฌ์ง๋ ui๋ง ๊ตฌ์ฑํด๋์ ์ปดํฌ๋ํธ ํ์ผ๋ค์ ๋๋ค.
- shared : ๊ณต์ ํ ์ ์๋ ํ์ผ๋ค์ ๋ณด๊ดํฉ๋๋ค. ์์ด์ฝ์ด๋, ๋ชจ๋ ์ปดํฌ๋ํธ์์ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ common ์ปดํฌ๋ํธ ํ์ผ๋ค์ ๋ณด๊ดํฉ๋๋ค.
- widgets: entities์ ๋๋ฉ์ธ๋ค์ด ๊ฐ์ง ์ปดํฌ๋ํธ๋ฅผ ํฉ์ณ ํฌ๊ฒ ๋๋ ์ ์๋ ์ปดํฌ๋ํธ ๋จ์๋ก ๋ฌถ์ด๋์ ์ปดํฌ๋ํธ์ ๋๋ค. ๊ฐ์ ํ ํด๋ ๊ตฌ์กฐ์์ ๋ ๊ฐ์ ํ๋ฉด ์ข์ ์ ์ด ์๋์ง ๋ง์ํด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค!
๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐฉ์
๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐฉ์
๋ฆฌ์คํธํ ๋ณด๊ธฐ์์๋ ๋ด์ค๋ฅผ ์ธ๋ก ์ฌ๋ค ๋ณ๋ก ๋ณผ ์ ์๋ค. ํ์ด์ง ์ ํ ์์ด์ฝ์ด๋ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ๋๋ฅด๋ฉด ํด๋น ์นดํ ๊ณ ๋ฆฌ์ ์ ์ฒด๊ฐ ๋ฌ๋ค.
์ฌ๊ธฐ์ ์นดํ ๊ณ ๋ฆฌ์ ์๋ ๋ชจ๋ ๋ด์ค๋ฅผ ๊ทธ๋๊ทธ๋๋ง๋ค ๋ถ๋ฌ์์ผ ํ ๊น, ์๋๋ฉด ํ๋ฒ์ ๋ฐ๊ณ ์ด๋ฅผ ๋ถ๋ฅํด์ ์นดํ ๊ณ ๋ฆฌ ํค๋์ ์์ชฝ ๋ด์ฉ์ ๋ง๋ค๋ฉด ๋ ๊น?์ ๋ํด ๊ณ ๋ฏผํ๋ ๊ฒ ๊ฐ๋ค. ๋ค์ด๋ฒ๋ฅผ ์ดํด๋ณด์๋๋ฐ, ์นดํ ๊ณ ๋ฆฌ๋ฅผ ๋๋ ์ ๋๋ ๋ค์ ๋ด์ค๋ฅผ ๋๋ ์ ๋ ๋ฐ๋ก data fetching์ด ์ด๋ฃจ์ด์ง๋ ๊ฒ ๊ฐ๋ ๊ฒ ๊ฐ๋ค. ๋ ๋ํ ์นดํ ๊ณ ๋ฆฌ, ์ธ๋ก ์ฌ ๋ณ๊ฒฝ ์๋ง๋ค ๊ณ์ํด์ ํต์ ์ ํ๋ ๊ฒ ์์ฒด๊ฐ ๋นํจ์จ์ ์ด๋ผ๊ณ ํ๋จํ๋ค. ๋ฐ๋ผ์ ์ฒ์์ ๋ชจ๋ ์นดํ ๊ณ ๋ฆฌ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ผ๋ฉด์๋, ์ด๋ฌํ ๋ฐ์ดํฐ๋ฅผ ์นดํ ๊ณ ๋ฆฌ, ์ธ๋ก ์ฌ๋ณ๋ก ๋ฐ๋ก ๊ตฌ๋ถํ๋ฉด์ ํ์ด์ง๋ค์ด์ ๊ณผ ๋น์ทํ๊ฒ ๋ง๋ค์ด๋์๋ค. ๊ธฐ์กด์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉด์ ๊ณ์ํด์ ์ธ๋ก ์ฌ๋ ์นดํ ๊ณ ๋ฆฌ๊ฐ ๋ฐ๋ ๋๋ง๋ค ํ์ด์ง๋ฅผ ๋ณ๊ฒฝํ ์ ์๋๋ก ํ์๋ค.
์ด ์ ์ ์ด์ ํ๋ฉด์ ๊ณ ๋ฏผ ๊ณผ์ ์ ์์๋๋ฐ ๋ค๋ฅธ ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์๋ ๋ง์ด ๊ณ ๋ฏผํ๋ ๋ฌธ์ ๊ฐ์ต๋๋ค. ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํ๋ฒ์ ๊ฐ์ ธ์์ ๋ถ๋ฅํ๋๋ vs. ๊ฐ๊ฐ ์นดํ
๊ณ ๋ฆฌ ๋ณ๋ก ๊ทธ๋๋ง๋ค ๋์ด๊ฐ ๋๋ง๋ค ๋ค์๊ธ ์นดํ
๊ณ ๋ฆฌ์ ๋ํด์๋ง fetching์ ๋ค์๊ธ ํด์์ผ ํ ๊น๋ผ๋ ๋ถ๋ถ์ ์์ด์ ๊ณ์ ํ์ ์ ๊ฐ์ง ๋ชปํ๋ ๊ฒ ๊ฐ์ต๋๋ค. (ํ์ฌ๋ ์ผ๋จ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํ๋ฒ์ ๊ฐ์ ธ์์ ๋ฐ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ผ๋ก ๊ตฌํํ์ต๋๋ค.)
์ ์์ ๊ฒฝ์ฐ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํ๋ฒ์ ๊ฐ์ ธ์ค๋ ๊ณผ์ ์์ฒด๊ฐ ๋ฐ์ดํฐ๊ฐ ๋ง๋ค๋ณด๋ ๋ณด๋ค ์๋ต์๊ฐ์ด ์ค๋ ๊ฑธ๋ ค ์ฌ์ฉ์ ๊ฒฝํ์ด ๋จ์ด์ง์ง ์์๊น๋ผ๋ ๊ณ ๋ฏผ์ด ์์ต๋๋ค. ํ์ง๋ง ๊ทธ๋ ๋ค๊ณ ํ์๋ฅผ ์ ํํ๊ธฐ์๋ ์นดํ
๊ณ ๋ฆฌ๋ง๋ค ์ด๋ํ๋ฉด์ ๊ณ์ํด์ ์๋ฒ์ ์์ฒญ์ ๋ ๋ฆฌ๊ฒ ๋๋ฉด ์๋ฒ๊ฐ ๊ฐ์ง๊ฒ ๋๋ ๋ถ๋ด์ด ๋์ง ์์๊น ๊ฑฑ์ ๋ฉ๋๋ค. ์ด์ ๋ํด์ ๋ฉํ ๋์ ์ด๋ป๊ฒ ์๊ฐํ์๋์ง ๊ณ ๊ฒฌ์ ์ฌ์ญ๊ณ ์ถ์ต๋๋ค!
์ค๋์ ์ด์ ๋์ธ ๊ฒ ๊ฐ์ต๋๋คใ ใ ๊ธด ๊ธ ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!! ํธ์ํ ๋ฐค ๋์ธ์ :)
๋ฆฌ์คํธํ ๋ณด๊ธฐ์์๋ ๋ด์ค๋ฅผ ์ธ๋ก ์ฌ๋ค ๋ณ๋ก ๋ณผ ์ ์๋ค.
ํ์ด์ง ์ ํ ์์ด์ฝ์ด๋ ์นดํ
๊ณ ๋ฆฌ๋ฅผ ๋๋ฅด๋ฉด ํด๋น ์นดํ
๊ณ ๋ฆฌ์ ์ ์ฒด๊ฐ ๋ฌ๋ค.