๋๋ Habr์ด ๋ด๋ถ์์ ์ด๋ป๊ฒ ๊ตฌ์ฑ๋์ด ์๋์ง, ์ํฌํ๋ก๊ฐ ์ด๋ป๊ฒ ๊ตฌ์ฑ๋์ด ์๋์ง, ์ปค๋ฎค๋์ผ์ด์
์ด ์ด๋ป๊ฒ ๊ตฌ์ฑ๋์ด ์๋์ง, ์ด๋ค ํ์ค์ด ์ฌ์ฉ๋๋์ง, ์ฌ๊ธฐ์์ ์ผ๋ฐ์ ์ผ๋ก ์ฝ๋๊ฐ ์ด๋ป๊ฒ ์์ฑ๋๋์ง์ ํญ์ ๊ด์ฌ์ ๊ฐ์ ธ์์ต๋๋ค. ๋คํํ ์ต๊ทผ์ ํ๋ธ๋ผ ํ์ ํฉ๋ฅํ๊ฒ ๋์ด์ ์ด๋ฐ ๊ธฐํ๋ฅผ ์ป์์ต๋๋ค. ๋ชจ๋ฐ์ผ ๋ฒ์ ์ ์์ ๋ฆฌํฉํ ๋ง ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ ์ง๋ฌธ์ ๋ตํ๋ ค๊ณ ํฉ๋๋ค. ์ฌ๊ธฐ์ ์ต์ ์ ์์ ์ผํ๋ ๊ฒ์ ์ด๋ค๊ฐ์? ํ๋ก๊ทธ๋จ: Habr์์์ ๊ฐ์ธ์ ์ธ ๊ฒฝํ์ ๋ํ ๋ฉ๋ชจ์ ์์ค๊ฐ ํฌํจ๋ Node, Vue, Vuex ๋ฐ SSR.
๊ฐ๋ฐํ์ ๋ํด ๊ฐ์ฅ ๋จผ์ ์์์ผ ํ ๊ฒ์ ์ฐ๋ฆฌ๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค. ์์ ๊ฒ์ 3๊ฐ์ ์ ์ , 2๊ฐ์ ํ๋ฐฉ ๋ฐ ๋ชจ๋ Habr-Baxley์ ๊ธฐ์ ๋ฆฌ๋์ ๋๋ค. ๋ฌผ๋ก ํ ์คํฐ, ๋์์ด๋, ์ธ ๋ช ์ Vadim, ๊ธฐ์ ์ ๋น์๋ฃจ, ๋ง์ผํ ๋ด๋น์ ๋ฐ ๊ธฐํ Bumburum๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ Habr ์ฌ์ดํธ์ ์ง์ ๊ธฐ์ฌํ ์ฌ๋์ 6๋ช ๋ฟ์ ๋๋ค. ์ด๋ ๋งค์ฐ ๋๋ฌธ ์ผ์ ๋๋ค. ์๋ฐฑ๋ง ๋ฌ๋ฌ ๊ท๋ชจ์ ์ฒญ์ค์ ๋์์ผ๋ก ํ๋ ํ๋ก์ ํธ๋ ๊ฒ์ผ๋ก๋ ๊ฑฐ๋ ๊ธฐ์ ์ฒ๋ผ ๋ณด์ด์ง๋ง ์ค์ ๋ก๋ ๊ฐ์ฅ ์ํ์ ์ธ ์กฐ์ง ๊ตฌ์กฐ๋ฅผ ๊ฐ์ถ ์๋ํ ์คํํธ์ ์ ๊ฐ๊น์ต๋๋ค.
๋ค๋ฅธ ๋ง์ IT ํ์ฌ์ ๋ง์ฐฌ๊ฐ์ง๋ก Habr์ Agile ์์ด๋์ด, CI ๊ดํ ๋ฑ์ ๊ณต์ธํฉ๋๋ค. ํ์ง๋ง ์ ์๊ฐ์๋ Habr์ ์ง์์ ์ด๋ผ๊ธฐ๋ณด๋ค๋ ํ๋์ ์ ํ์ผ๋ก์ ๋ฐ์ ์ ๊ฑฐ๋ญํ๊ณ ์์ต๋๋ค. ๊ทธ๋์ ์ฐ์ํด์ ์ฌ๋ฌ ๋ฒ์ ์คํ๋ฆฐํธ ๋์ ์ฐ๋ฆฌ๋ ๋ถ์ง๋ฐํ ๋ฌด์ธ๊ฐ๋ฅผ ์ฝ๋ฉํ๊ณ , ๋์์ธํ๊ณ ์ฌ์ค๊ณํ๊ณ , ๋ฌด์ธ๊ฐ๋ฅผ ๋ถ์๊ณ ์์ ํ๊ณ , ํฐ์ผ์ ํด๊ฒฐํ๊ณ ์๋ก์ด ํฐ์ผ์ ๋ง๋ค๊ณ , ๋ง์นจ๋ด ๊ธฐ๋ฅ์ ์ถ์ํ๊ธฐ ์ํด ๊ฐํด๋ฅผ ๋ฐ๊ณ ๋ฐ์ ์์์ต๋๋ค. ๋ฏธ๋. ๊ทธ๋ฐ ๋ค์ ์ฌ๊ฐ๋ฐ ๊ธฐ๊ฐ, "์ค์-๊ธด๊ธ" ์ฌ๋ถ๋ฉด์ ์๋ ์์ ์ ์ํํ ์๊ฐ์ด ์ต๋๋ค.
์๋์์ ๋ ผ์ํ ๊ฒ์ ๋ฐ๋ก ์ด "์คํ ์์ฆ" ์คํ๋ฆฐํธ์ ๋๋ค. ์ด๋ฒ์๋ Habr ๋ชจ๋ฐ์ผ ๋ฒ์ ์ ๋ฆฌํฉํ ๋ง์ด ํฌํจ๋์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ํ์ฌ๋ ์ด์ ๋ํด ๋์ ๊ธฐ๋๋ฅผ ๊ฐ๊ณ ์์ผ๋ฉฐ ์์ผ๋ก๋ Habr์ ์ ์ฒด ๋๋ฌผ์์ ๋์ฒดํ๊ณ ๋ณดํธ์ ์ธ ํฌ๋ก์ค ํ๋ซํผ ์๋ฃจ์ ์ด ๋์ด์ผ ํฉ๋๋ค. ์ธ์ ๊ฐ๋ ์ ์ํ ๋ ์ด์์, PWA, ์คํ๋ผ์ธ ๋ชจ๋, ์ฌ์ฉ์ ๋ง์ถคํ ๋ฑ ๋ง์ ํฅ๋ฏธ๋ก์ด ๊ฒ๋ค์ด ์์ ๊ฒ์ ๋๋ค.
์๋ฌด๋ฅผ ์ค์ ํด๋ณด์
ํ๋ฒ์ ์ผ๋ฐ ์คํ ๋์ ์์ ํ๋ก ํธ ์ค ํ ๋ช ์ด ๋ชจ๋ฐ์ผ ๋ฒ์ ์ ๋๊ธ ๊ตฌ์ฑ ์์ ์ํคํ ์ฒ ๋ฌธ์ ์ ๋ํด ์ด์ผ๊ธฐํ์ต๋๋ค. ์ด๋ฌํ ์ ์์ผ๋ก ์ฐ๋ฆฌ๋ ์ง๋จ์ฌ๋ฆฌ์น๋ฃ ํ์์ ์๊ท๋ชจ ํ์๋ฅผ ๋ง๋ จํ์ต๋๋ค. ๋ชจ๋๊ฐ ๋ฒ๊ฐ์ ๊ฐ๋ฉฐ ์ด๋๊ฐ ์ํ์ง ๋งํ๊ณ , ์๋ฌด๋ ๋ฐ์๋ฅผ ์น์ง ์๋ ๊ฒ์ ์ ์ธํ๊ณ ๋ ๋ชจ๋ ๊ฒ์ ์ข ์ด์ ๊ธฐ๋กํ๊ณ ๊ณต๊ฐํ๊ณ ์ดํดํ์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ 20๊ฐ์ง ๋ฌธ์ ๋ชฉ๋ก์ด ๋์๊ณ , ์ด๋ฅผ ํตํด ๋ชจ๋ฐ์ผ Habr์ ์ฑ๊ณต์ ํฅํ ๊ธธ๊ณ ํ๋ํ ๊ธธ์ด ์ฌ์ ํ ๋จ์ ์์์ด ๋ถ๋ช ํด์ก์ต๋๋ค.
๋๋ ์ฃผ๋ก ๋ฆฌ์์ค ํจ์จ์ฑ๊ณผ ์์ ๋งค๋๋ฌ์ด ์ธํฐํ์ด์ค์ ๋ํด ๊ฑฑ์ ํ์ต๋๋ค. ๋งค์ผ '์ง-ํ์ฌ-์ง' ๊ฒฝ๋ก์์ ๋๋ ๋ด ์ค๋๋ ์ ํ๊ธฐ๊ฐ ํผ๋์ ํค๋๋ผ์ธ 20๊ฐ๋ฅผ ํ์ํ๋ ค๊ณ ํ์ฌ์ ์ผ๋ก ๋ ธ๋ ฅํ๋ ๊ฒ์ ๋ณด์์ต๋๋ค. ๊ทธ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ด ๋ณด์์ต๋๋ค:
๋ฆฌํฉํ ๋ง ์ ๋ชจ๋ฐ์ผ Habr ์ธํฐํ์ด์ค
์ฌ๊ธฐ์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋ ๊ฑธ๊น์? ์ฆ, ์๋ฒ๋ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด ๋ชจ๋ ์ฌ๋์๊ฒ ๋์ผํ ๋ฐฉ์์ผ๋ก HTML ํ์ด์ง๋ฅผ ์ ๊ณตํ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ํด๋ผ์ด์ธํธ JS๊ฐ ๋ก๋๋๊ณ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์์ฒญํ์ง๋ง ์ด๋ฒ์๋ ์ธ์ฆ์ ์ํด ์กฐ์ ๋ฉ๋๋ค. ์ฆ, ์ฐ๋ฆฌ๋ ์ค์ ๋ก ๋์ผํ ์์ ์ ๋ ๋ฒ ์ํํ์ต๋๋ค. ์ธํฐํ์ด์ค๊ฐ ๊น๋ฐ์๊ณ ์ฌ์ฉ์๋ 100KB๋ฅผ ์ถ๊ฐ๋ก ๋ค์ด๋ก๋ํ์ต๋๋ค. ์ธ๋ถ์ ์ผ๋ก ๋ณด๋ฉด ๋ชจ๋ ๊ฒ์ด ๋์ฑ ์๋ฆ๋ผ์ณ ๋ณด์์ต๋๋ค.
์ค๋๋ SSR-CSR ๋ฐฉ์. ์น์ธ์ Node JS๊ฐ HTML์ ์์ฑํ๋ ๋ฐ ๋ฐ์์ง ์๊ณ ์์ฒญ์ API์ ํ๋ก์ํ ์ ์๋ C3 ๋ฐ C4 ๋จ๊ณ์์๋ง ๊ฐ๋ฅํฉ๋๋ค.
Habr ์ฌ์ฉ์ ์ค ํ ๋ช ์ด ๋น์์ ์ํคํ ์ฒ๋ฅผ ๋งค์ฐ ์ ํํ๊ฒ ์ค๋ช ํ์ต๋๋ค.
๋ชจ๋ฐ์ผ ๋ฒ์ ์ ๋ฅ์ด๋ค์. ๋๋ ๊ทธ๋ฐ ์์ผ๋ก ๋งํ๊ณ ์๋ค. SSR๊ณผ CSR์ ๋์ฐํ ์กฐํฉ์ ๋๋ค.
์๋ฌด๋ฆฌ ์ฌํ๋๋ผ๋ ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ์ธ์ ํ ์๋ฐ์ ์์์ต๋๋ค.
์ ๋ ์ต์ ์ ํ๊ฐํ๊ณ Jira์์ "์ง๊ธ์ ์ข์ง ์์ต๋๋ค. ๊ด์ฐฎ๊ฒ ๋ง๋์ธ์" ์์ค์ ์ค๋ช ์ด ํฌํจ๋ ํฐ์ผ์ ์์ฑํ ๋ค์ ์์ ์ ํญ๋๊ฒ ๋ถํดํ์ต๋๋ค.
- ๋ฐ์ดํฐ ์ฌ์ฌ์ฉ,
- ๋ค์ ๊ทธ๋ฆฌ๋ ํ์๋ฅผ ์ต์ํํ๊ณ ,
- ์ค๋ณต ์์ฒญ์ ์ ๊ฑฐํ๊ณ ,
- ๋ก๋ฉ ํ๋ก์ธ์ค๋ฅผ ๋์ฑ ๋ช ํํ๊ฒ ๋ง๋ญ๋๋ค.
๋ฐ์ดํฐ๋ฅผ ์ฌ์ฌ์ฉํ์
์ด๋ก ์ ์ผ๋ก ์๋ฒ ์ธก ๋ ๋๋ง์ ๋ ๊ฐ์ง ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ก ์ค๊ณ๋์์ต๋๋ค.
๊ธฐ์ ์ด ๋ฑ์ฅํ ์ง 6๋ ์ด์์ด ์ง๋ฌ๊ณ ์ด ๊ธฐ๊ฐ ๋์ ํ๋ฐํธ์๋ ์ธ๊ณ์ ๋ค๋ฆฌ ์๋๋ก ๋ง์ ๋ฌผ์ด ์ง๋๊ฐ์์๋ ๋ถ๊ตฌํ๊ณ ๋ง์ ๊ฐ๋ฐ์์๊ฒ ์ด ์์ด๋์ด๋ ์ฌ์ ํ ๋น๋ฐ์ ์ธ์ฌ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ SSR์ ์ง์ํ๋ Vue ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋ก๋์ ์ ์ถ์ํ์ง ์๊ณ ํ ๊ฐ์ง ์์ ์ธ๋ถ ์ฌํญ์ ๋์ณค์ต๋๋ค. ์ด๊ธฐ ์ํ๋ฅผ ํด๋ผ์ด์ธํธ์ ์ ๋ฌํ์ง ์์์ต๋๋ค.
์? ์ด ์ง๋ฌธ์ ๋ํ ์ ํํ ๋ต์ ์์ต๋๋ค. ๊ทธ๋ค์ ์๋ฒ์ ์๋ต ํฌ๊ธฐ๋ฅผ ๋๋ฆฌ๊ณ ์ถ์ง ์์๊ฑฐ๋ ๋ค๋ฅธ ์ํคํ
์ฒ ๋ฌธ์ ๋ก ์ธํด ๋ฐ์ํ์ง ์์๊ฑฐ๋ ์ฑ๊ณตํ์ง ๋ชปํ์ต๋๋ค. ์ด๋ค ์์ผ๋ก๋ ์ํ๋ฅผ ๋ฒ๋ฆฌ๊ณ ์๋ฒ๊ฐ ์ํํ ๋ชจ๋ ๊ฒ์ ์ฌ์ฌ์ฉํ๋ ๊ฒ์ ์๋นํ ์ ์ ํ๊ณ ์ ์ฉํด ๋ณด์
๋๋ค. ์ด ์์
์ ์ค์ ๋ก ์ฌ์ํ ๊ฒ์
๋๋ค. window.__INITIAL_STATE__
.
๋ฐ์ํ ๋ฌธ์ ์ค ํ๋๋ ์ํ ๊ตฌ์กฐ๋ฅผ JSON์ผ๋ก ๋ณํํ ์ ์๋ค๋ ๊ฒ์
๋๋ค(
๋ํ UGC ์ฝํ
์ธ ๋ฅผ ๋ค๋ฃฐ ๋ HTML์ด ๊นจ์ง์ง ์๋๋ก ๋ฐ์ดํฐ๋ฅผ HTML ์ํฐํฐ๋ก ๋ณํํด์ผ ํ๋ค๋ ์ ์ ๊ธฐ์ตํด์ผ ํฉ๋๋ค. ์ด๋ฌํ ๋ชฉ์ ์ ์ํด ์ฐ๋ฆฌ๋
๋ค์ ๊ทธ๋ฆฌ๊ธฐ ์ต์ํ
์ ๋ค์ด์ด๊ทธ๋จ์์ ๋ณผ ์ ์๋ฏ์ด ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ ํ๋์ Node JS ์ธ์คํด์ค๋ SSR๊ณผ ์ฌ์ฉ์ ์ธ์ฆ์ด ๋ฐ์ํ๋ API์ "ํ๋ก์"๋ผ๋ ๋ ๊ฐ์ง ๊ธฐ๋ฅ์ ์ํํฉ๋๋ค. ์ด๋ฌํ ์ํฉ์์๋ ๋ ธ๋๊ฐ ๋จ์ผ ์ค๋ ๋์ด๊ณ SSR ๊ธฐ๋ฅ์ด ๋๊ธฐ์์ด๋ฏ๋ก JS ์ฝ๋๊ฐ ์๋ฒ์์ ์คํ๋๋ ๋์ ์ธ์ฆ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค. ์ฆ, ์ฝ์คํ์ด ๋ค๋ฅธ ์์ ์ผ๋ก ๋ฐ์ ๋์์๋ ์๋ฒ๊ฐ ์์ ์๊ฒ ์์ฒญ์ ๋ณด๋ผ ์ ์์ต๋๋ค. ์ํ๋ฅผ ์ ๋ฐ์ดํธํ์ง๋ง ์ฌ์ฉ์ ์ธ์ ์ ๊ณ ๋ คํ์ฌ ํด๋ผ์ด์ธํธ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ธํฐํ์ด์ค์ ๊ฒฝ๋ จ์ด ๋ฉ์ถ์ง ์์ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ์ฌ์ฉ์์ ๋ก๊ทธ์ธ์ ๊ณ ๋ คํ์ฌ ์ด๊ธฐ ์ํ์ ์ฌ๋ฐ๋ฅธ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ต์กํด์ผ ํ์ต๋๋ค.
๋ฌธ์ ์ ๋ํ ํด๊ฒฐ์ฑ ์ ๋ ๊ฐ์ง๋ฟ์ด์์ต๋๋ค.
- ์ธ์ฆ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ ๊ฐ ์์ฒญ์ ์ฐ๊ฒฐํฉ๋๋ค.
- Node JS ๋ ์ด์ด๋ฅผ ๋ ๊ฐ์ ๋ณ๋ ์ธ์คํด์ค๋ก ๋ถํ ํฉ๋๋ค.
์ฒซ ๋ฒ์งธ ์๋ฃจ์ ์ ์๋ฒ์์ ์ ์ญ ๋ณ์๋ฅผ ์ฌ์ฉํด์ผ ํ๊ณ , ๋ ๋ฒ์งธ ์๋ฃจ์ ์ ์์ ์๋ฃ ์๊ฐ์ ์ต์ ํ ๋ฌ ์ด์ ์ฐ์ฅํ์ต๋๋ค.
์ ํํ๋ ๋ฐฉ๋ฒ? Habr์ ์ข ์ข ์ ํญ์ด ๊ฐ์ฅ ์ ์ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ ์ด๋ํฉ๋๋ค. ๋น๊ณต์์ ์ผ๋ก๋ ์์ด๋์ด์์ ํ๋กํ ํ์ ๊น์ง์ ์ฃผ๊ธฐ๋ฅผ ์ต์ํ์ผ๋ก ์ค์ด๊ณ ์ ํ๋ ์ผ๋ฐ์ ์ธ ๋ฐ๋์ด ์์ต๋๋ค. ์ ํ์ ๋ํ ํ๋ ๋ชจ๋ธ์ booking.com์ ๊ฐ์ ์ ๋ค์ ์ฐ์์ํต๋๋ค. ์ ์ผํ ์ฐจ์ด์ ์ Habr์ด ์ฌ์ฉ์ ํผ๋๋ฐฑ์ ํจ์ฌ ๋ ์ง์งํ๊ฒ ๋ฐ์๋ค์ด๊ณ ๊ทธ๋ฌํ ๊ฒฐ์ ์ ๊ฐ๋ฐ์๋ก์ ๊ทํ์๊ฒ ๋งก๊ธด๋ค๋ ๊ฒ์ ๋๋ค.
์ด ๋
ผ๋ฆฌ์ ๋ฌธ์ ๋ฅผ ๋น ๋ฅด๊ฒ ํด๊ฒฐํ๋ ค๋ ๋ด ์๊ตฌ์ ๋ฐ๋ผ ์ ์ญ ๋ณ์๋ฅผ ์ ํํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํํ ๊ทธ๋ ๋ฏ์ด ์กฐ๋ง๊ฐ ๊ทธ์ ๋ํ ๋น์ฉ์ ์ง๋ถํด์ผ ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๊ฑฐ์ ์ฆ์ ์ง๋ถํ์ต๋๋ค. ์ฃผ๋ง์ ์ผํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ฆฌํ๊ณ ๊ธ์ ์ผ์ต๋๋ค.
๋ฆฌํฉํ ๋ง์ ์ฒซ ๋ฒ์งธ ๋จ๊ณ ์ดํ์ ๋ชจ๋ฐ์ผ Habr ์ธํฐํ์ด์ค
๊ถ๊ทน์ ์ผ๋ก ๋ชจ๋ฐ์ผ ๋ฒ์ ์ SSR-CSR ์ํคํ ์ฒ๋ ๋ค์๊ณผ ๊ฐ์ ๊ทธ๋ฆผ์ผ๋ก ์ด์ด์ง๋๋ค.
๏ฟผ"3๋ ธ๋" SSR-CSR ํ๋ก. Node JS API๋ ํญ์ ๋น๋๊ธฐ I/O๋ฅผ ์ํด ์ค๋น๋์ด ์์ผ๋ฉฐ SSR ๊ธฐ๋ฅ์ ๋ณ๋์ ์ธ์คํด์ค์ ์์นํ๋ฏ๋ก SSR ๊ธฐ๋ฅ์ ์ํด ์ฐจ๋จ๋์ง ์์ต๋๋ค. ์ฟผ๋ฆฌ ์ฒด์ธ #XNUMX์ ํ์ํ์ง ์์ต๋๋ค.
์ค๋ณต ์์ฒญ ์ ๊ฑฐ
์กฐ์์ด ์ํ๋ ํ ํ์ด์ง์ ์ด๊ธฐ ๋ ๋๋ง์ ๋ ์ด์ ๊ฐ์ง์ ์ ๋ฐํ์ง ์์์ต๋๋ค. ๊ทธ๋ฌ๋ SPA ๋ชจ๋์์ Habr์ ์ถ๊ฐ๋ก ์ฌ์ฉํ๋ฉด ์ฌ์ ํ ํผ๋์ด ๋ฐ์ํ์ต๋๋ค.
์ฌ์ฉ์ ํ๋ฆ์ ๊ธฐ๋ณธ์ ํํ์ ์ ํ์ด๊ธฐ ๋๋ฌธ์ ๊ธฐ์ฌ ๋ชฉ๋ก โ ๊ธฐ์ฌ โ ๋๊ธ ๋ฐ๋๋ก, ์ฐ์ ์ด ์ฒด์ธ์ ์์ ์๋น๋ฅผ ์ต์ ํํ๋ ๊ฒ์ด ์ค์ํ์ต๋๋ค.
๊ฒ์๋ฌผ ํผ๋๋ก ๋์๊ฐ๋ฉด ์๋ก์ด ๋ฐ์ดํฐ ์์ฒญ์ด ํธ๋ฆฌ๊ฑฐ๋ฉ๋๋ค.
๊น๊ฒ ํ๊ณ ๋ค ํ์๊ฐ ์์์ต๋๋ค. ์์ ์คํฌ๋ฆฐ์บ์คํธ์์ ๋ค๋ก ์ค์์ดํํ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๊ธฐ์ฌ ๋ชฉ๋ก์ ๋ค์ ์์ฒญํ๊ณ ์์ฒญํ๋ ๋์ ๊ธฐ์ฌ๊ฐ ํ์๋์ง ์๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ์ด๋ ์ด์ ๋ฐ์ดํฐ๊ฐ ์ด๋๊ฐ์์ ์ฌ๋ผ์ง์ ์๋ฏธํฉ๋๋ค. ๊ธฐ์ฌ ๋ชฉ๋ก ๊ตฌ์ฑ ์์๊ฐ ๋ก์ปฌ ์ํ๋ฅผ ์ฌ์ฉํ๊ณ ํ๊ธฐํ๊ธฐ ์ํด ์ด๋ฅผ ์์ด๋ฒ๋ฆฐ ๊ฒ ๊ฐ์ต๋๋ค. ์ค์ ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ญ ์ํ๋ฅผ ์ฌ์ฉํ์ง๋ง Vuex ์ํคํ ์ฒ๋ ์ ๋ฉด์ผ๋ก ๊ตฌ์ถ๋์์ต๋๋ค. ๋ชจ๋์ ํ์ด์ง์ ์ฐ๊ฒฐ๋๊ณ , ํ์ด์ง๋ ๋ค์ ๊ฒฝ๋ก์ ์ฐ๊ฒฐ๋ฉ๋๋ค. ๋ํ ๋ชจ๋ ๋ชจ๋์ "์ผํ์ฑ"์ ๋๋ค. ์ดํ ํ์ด์ง๋ฅผ ๋ฐฉ๋ฌธํ ๋๋ง๋ค ์ ์ฒด ๋ชจ๋์ด ๋ค์ ์์ฑ๋์์ต๋๋ค.
ArticlesList: [
{ Article1 },
...
],
PageArticle: { ArticleFull1 },
์ ์ฒด์ ์ผ๋ก ์ฐ๋ฆฌ๋ ๋ชจ๋์ ๊ฐ์ง๊ณ ์์์ต๋๋ค ๊ธฐ์ฌ๋ชฉ๋ก, ์ฌ๊ธฐ์๋ ์ ํ์ ๊ฐ์ฒด๊ฐ ํฌํจ๋ฉ๋๋ค. ๊ธฐ์ฌ ๋ฐ ๋ชจ๋ ํ์ด์ง๊ธฐ์ฌ, ์ด๋ ๊ฐ์ฒด์ ํ์ฅ ๋ฒ์ ์ด์์ต๋๋ค. ๊ธฐ์ฌ, ์ผ์ข ์ ๊ธฐ์ฌ์ ์ฒด. ์ ๋ฐ์ ์ผ๋ก ์ด ๊ตฌํ ์์ฒด์๋ ๋์ฐํ ๊ฒ์ด ์์ต๋๋ค. ๋งค์ฐ ๊ฐ๋จํ๊ณ ์์งํ๋ค๊ณ ๋งํ ์๋ ์์ง๋ง ๋งค์ฐ ์ดํดํ ์ ์์ต๋๋ค. ๊ฒฝ๋ก๋ฅผ ๋ณ๊ฒฝํ ๋๋ง๋ค ๋ชจ๋์ ์ฌ์ค์ ํ๋ฉด ๊ทธ๋๋ก ์ฌ์ฉํ ์๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์๋ฅผ ๋ค์ด ๊ธฐ์ฌ ํผ๋ ๊ฐ ์ ํ์ /ํผ๋ โ /๋ชจ๋, ๊ฐ์ธ ํผ๋์ ๊ด๋ จ๋ ๋ชจ๋ ๊ฒ์ ๋ฒ๋ฆฌ๋ ๊ฒ์ด ๋ณด์ฅ๋ฉ๋๋ค. ๊ธฐ์ฌ๋ชฉ๋ก, ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํด์ผ ํฉ๋๋ค. ์ด๋ก ์ธํด ๋ค์ ์์ฒญ์ด ์ค๋ณต๋ฉ๋๋ค.
์ฃผ์ ์ ๋ํด ํํค์น ๋ชจ๋ ๊ฒ์ ์์งํ ํ ์๋ก์ด ์ํ ๊ตฌ์กฐ๋ฅผ ๊ณต์ํํ์ฌ ๋๋ฃ๋ค์๊ฒ ๋ฐํํ์ต๋๋ค. ๋ ผ์๋ ๊ธธ์์ง๋ง ๊ฒฐ๊ตญ ์ฐฌ์ฑ๋ก ์ด ์๊ตฌ์ฌ์ ๋ฅ๊ฐํ๊ณ ์ ๋ ์คํ์ ์์ํ์ต๋๋ค.
๊ฒฐ์ ์ ๋ ผ๋ฆฌ๋ ๋ ๋จ๊ณ์์ ๊ฐ์ฅ ์ ๋๋ฌ๋ฉ๋๋ค. ๋จผ์ ํ์ด์ง์์ Vuex ๋ชจ๋์ ๋ถ๋ฆฌํ๊ณ ๊ฒฝ๋ก์ ์ง์ ๋ฐ์ธ๋ฉํ๋ ค๊ณ ํฉ๋๋ค. ์, ์คํ ์ด์ ๋ฐ์ดํฐ๊ฐ ์กฐ๊ธ ๋ ๋ง์์ง๊ณ getter๋ ์ข ๋ ๋ณต์กํด์ง์ง๋ง ๊ธฐ์ฌ๋ฅผ ๋ ๋ฒ ๋ก๋ํ์ง๋ ์์ต๋๋ค. ๋ชจ๋ฐ์ผ ๋ฒ์ ์ ๊ฒฝ์ฐ ์ด๋ ์๋ง๋ ๊ฐ์ฅ ๊ฐ๋ ฅํ ์ฃผ์ฅ์ผ ๊ฒ์ ๋๋ค. ๋ค์๊ณผ ๊ฐ์ด ๋ณด์ผ ๊ฒ์ ๋๋ค:
ArticlesList: {
ROUTE_FEED: [
{ Article1 },
...
],
ROUTE_ALL: [
{ Article2 },
...
],
}
ํ์ง๋ง ๊ธฐ์ฌ ๋ชฉ๋ก์ด ์ฌ๋ฌ ๊ฒฝ๋ก ๊ฐ์ ๊ฒน์น ์ ์๊ณ ๊ฐ์ฒด ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฌ์ฉํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น์? ๊ธฐ์ฌ ๊ฒ์๋ฌผ ํ์ด์ง๋ฅผ ๋ ๋๋งํ์ฌ ๊ธฐ์ฌ์ ์ฒด? ์ด ๊ฒฝ์ฐ์๋ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ๋ ผ๋ฆฌ์ ์ ๋๋ค.
ArticlesIds: {
ROUTE_FEED: [ '1', ... ],
ROUTE_ALL: [ '1', '2', ... ],
},
ArticlesList: {
'1': { Article1 },
'2': { Article2 },
...
}
๊ธฐ์ฌ๋ชฉ๋ก ์ฌ๊ธฐ์๋ ์ผ์ข ์ ๊ธฐ์ฌ ์ ์ฅ์๊ฐ ์์ต๋๋ค. ์ฌ์ฉ์ ์ธ์ ์ค์ ๋ค์ด๋ก๋๋ ๋ชจ๋ ๊ธฐ์ฌ์ ๋๋ค. ์ฐ๋ฆฌ๋ ์ด๋ฅผ ์ต๋ํ ์ฃผ์ ๊น๊ฒ ๋ค๋ฃน๋๋ค. ์ด๋ ์ญ ์ฌ์ด์ ์งํ์ฒ ์ด๋๊ฐ์์ ๋ค์ด๋ก๋๋์์ ์ ์๋ ํธ๋ํฝ์ด๊ธฐ ๋๋ฌธ์ด๋ฉฐ, ์ด๋ฏธ ๋ค์ด๋ก๋ํ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ๋๋ก ๊ฐ์ํ์ฌ ์ฌ์ฉ์์๊ฒ ๋ค์๋ ์ด๋ฌํ ๊ณ ํต์ ๋ผ์น๊ณ ์ถ์ง ์์ต๋๋ค. . ๊ฐ์ฒด ๊ธฐ์ฌ ID ๋จ์ํ ๊ฐ์ฒด์ ๋ํ ID(์: "๋งํฌ")์ ๋ฐฐ์ด์ ๋๋ค. ๊ธฐ์ฌ. ์ด ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฒฝ๋ก์ ๊ณตํต๋ ๋ฐ์ดํฐ๊ฐ ์ค๋ณต๋๋ ๊ฒ์ ๋ฐฉ์งํ๊ณ ๊ฐ์ฒด๋ฅผ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ธฐ์ฌ ํ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณํฉํ์ฌ ๊ฒ์๋ฌผ ํ์ด์ง๋ฅผ ๋ ๋๋งํ ๋.
๊ธฐ์ฌ ๋ชฉ๋ก์ ์ถ๋ ฅ๋ ๋์ฑ ํฌ๋ช ํด์ก์ต๋๋ค. ๋ฐ๋ณต์ ๊ตฌ์ฑ ์์๋ ๊ธฐ์ฌ ID๊ฐ ์๋ ๋ฐฐ์ด์ ๋ฐ๋ณตํ๊ณ ๊ธฐ์ฌ ํฐ์ ๊ตฌ์ฑ ์์๋ฅผ ๊ทธ๋ ค ID๋ฅผ ์ํ์ผ๋ก ์ ๋ฌํ๊ณ ํ์ ๊ตฌ์ฑ ์์๋ ์ฐจ๋ก๋ก ๋ค์์์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํฉ๋๋ค. ๊ธฐ์ฌ๋ชฉ๋ก. ์ถํ ํ์ด์ง๋ก ์ด๋ํ๋ฉด ๋ค์์์ ๊ธฐ์กด ๋ ์ง๋ฅผ ๊ฒ์ํฉ๋๋ค. ๊ธฐ์ฌ๋ชฉ๋ก, ๋๋ฝ๋ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋๋ก ์์ฒญํ๊ณ ์ด๋ฅผ ๊ธฐ์กด ๊ฐ์ฒด์ ์ถ๊ฐํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
์ด ์ ๊ทผ ๋ฐฉ์์ด ๋ ๋์ ์ด์ ๋ ๋ฌด์์ ๋๊น? ์์์ ์ด ๊ฒ์ฒ๋ผ ์ด ์ ๊ทผ ๋ฐฉ์์ ๋ค์ด๋ก๋ํ ๋ฐ์ดํฐ์ ๋ํด ๋ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ด๊ณ ์ด๋ฅผ ์ฌ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋๋ค. ๊ทธ๋ฌ๋ ์ด ์ธ์๋ ์ด๋ฌํ ์ํคํ ์ฒ์ ์๋ฒฝํ๊ฒ ๋ค์ด๋ง๋ ๋ช ๊ฐ์ง ์๋ก์ด ๊ฐ๋ฅ์ฑ์ ๊ธธ์ ์ด์ด์ค๋๋ค. ์๋ฅผ ๋ค์ด ๊ธฐ์ฌ๊ฐ ํ์๋๋ ๋๋ก ํผ๋์ ๊ธฐ์ฌ๋ฅผ ํด๋งํ๊ณ ๋ก๋ํฉ๋๋ค. ์ต์ ๊ฒ์๋ฌผ์ ๊ฐ๋จํ "์ ์ฅ์"์ ๋ฃ์ ์ ์์ต๋๋ค. ๊ธฐ์ฌ๋ชฉ๋ก, ์ ID์ ๋ณ๋ ๋ชฉ๋ก์ ๊ธฐ์ฌ ID ๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ์ฌ์ฉ์์๊ฒ ์๋ฆฝ๋๋ค. "์ ์ถํ๋ฌผ ํ์" ๋ฒํผ์ ํด๋ฆญํ๋ฉด ํ์ฌ ๊ธฐ์ฌ ๋ชฉ๋ก ๋ฐฐ์ด์ ์์ ๋ถ๋ถ์ ์ ID๋ฅผ ์ฝ์ ํ๊ธฐ๋ง ํ๋ฉด ๋ชจ๋ ๊ฒ์ด ๊ฑฐ์ ๋ง์ ์ฒ๋ผ ์๋ํฉ๋๋ค.
๋ค์ด๋ก๋๋ฅผ ๋์ฑ ์ฆ๊ฒ๊ฒ ๋ง๋ค๊ธฐ
๋ฆฌํฉํ ๋ง ์ผ์ดํฌ์ ์ฅ์์ ๋๋ฆฐ ์ธํฐ๋ท์์ ์ฝํ ์ธ ๋ฅผ ๋ก๋ํ๋ ๊ณผ์ ์ ์กฐ๊ธ ๋ ์ข์ ํ๊ฒ ๋ง๋๋ ๋ผ๋ ๊ฐ๋ ์ ๋๋ค. ์ด ๋ฌธ์ ์ ๋ํ ๋ ผ์๋ ์์์ผ๋ฉฐ ์์ด๋์ด์์ ํ๋กํ ํ์ ๊น์ง์ ๊ณผ์ ์ ๋ฌธ์ ๊ทธ๋๋ก 2์๊ฐ์ด ๊ฑธ๋ ธ์ต๋๋ค. ๋์์ธ์ ์ค์ ๋ก ๊ทธ ์์ฒด๋ก ๊ทธ๋ ค์ก์ผ๋ฉฐ, ์ฐ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋์ ๊ฐ๋จํ๊ณ ๊ฑฐ์ ๊น๋ฐ์ด๋ div ๋ธ๋ก์ ๋ ๋๋งํ๋๋ก ๊ตฌ์ฑ ์์๋ฅผ ๊ฐ๋ฅด์ณค์ต๋๋ค. ์ฃผ๊ด์ ์ผ๋ก ์ด๋ฌํ ๋ก๋ฉ ๋ฐฉ์์ ์ค์ ๋ก ์ฌ์ฉ์ ์ ์ฒด์ ์คํธ๋ ์ค ํธ๋ฅด๋ชฌ ์์ ๊ฐ์์ํต๋๋ค. ๋ผ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํ๋ธ๋ผ๋ก๋ฉ
๋ฐ์
์ ๋ Habr์์ 6๊ฐ์ ๋์ ์ผํ๋๋ฐ ์น๊ตฌ๋ค์ด ์์ง๋ ๋ฌป์ต๋๋ค. ์, ๊ทธ๊ณณ์ด ๋ง์์ ๋๋์? ์์์ด, ํธ์ํด - ์. ํ์ง๋ง ์ด ์ง์ ์ด ๋ค๋ฅธ ์ง์ ๊ณผ ๋ค๋ฅธ ์ ์ด ํ๋ ์์ต๋๋ค. ์ ๋ ์ ํ์ ์์ ํ ๋ฌด๊ด์ฌํ๊ณ ์ฌ์ฉ์๊ฐ ๋๊ตฌ์ธ์ง ๋ชจ๋ฅด๊ฑฐ๋ ์ดํดํ์ง ๋ชปํ๋ ํ์์ ์ผํ์ต๋๋ค. ํ์ง๋ง ์ฌ๊ธฐ์๋ ๋ชจ๋ ๊ฒ์ด ๋ค๋ฆ ๋๋ค. ์ฌ๊ธฐ์ ๋น์ ์ ์์ ์ด ํ๋ ์ผ์ ๋ํด ์ฑ ์๊ฐ์ ๋๋๋๋ค. ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๋ ๊ณผ์ ์์ ๊ทํ๋ ๋ถ๋ถ์ ์ผ๋ก ํด๋น ๊ธฐ๋ฅ์ ์์ ์๊ฐ ๋๊ณ , ๊ธฐ๋ฅ๊ณผ ๊ด๋ จ๋ ๋ชจ๋ ์ ํ ํ์์ ์ฐธ์ฌํ๊ณ , ์ ์ํ๊ณ ์ค์ค๋ก ๊ฒฐ์ ์ ๋ด๋ฆฝ๋๋ค. ๋งค์ผ ์ฌ์ฉํ๋ ์ ํ์ ์ง์ ๋ง๋๋ ๊ฒ์ ๋งค์ฐ ๋ฉ์ง ์ผ์ด๋ฉฐ, ์์ ๋ณด๋ค ์ด๋ฅผ ๋ ์ ์ดํดํ๋ ์ฌ๋๋ค์ ์ํด ์ฝ๋๋ฅผ ์์ฑํ๋ค๋ ๊ฒ์ ์ ๋ง ๋๋ผ์ด ๋๋์ ๋๋ค(๋น๊ผฌ๋ ๋ง์ด ์๋๋๋ค).
์ด๋ฌํ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์ถ์๋ ํ ์ฐ๋ฆฌ๋ ๊ธ์ ์ ์ธ ํผ๋๋ฐฑ์ ๋ฐ์์ผ๋ฉฐ ๋งค์ฐ ์ข์์ต๋๋ค. ๊ทธ๊ฒ์ ๊ณ ๋ฌด์ ์ ๋๋ค. ๊ฐ์ฌํฉ๋๋ค! ๋ ๋ง์ด ์ฐ์ธ์.
์ ์ญ ๋ณ์ ์ดํ์ ์ํคํ
์ฒ๋ฅผ ๋ณ๊ฒฝํ๊ณ ํ๋ก์ ๋ ์ด์ด๋ฅผ ๋ณ๋์ ์ธ์คํด์ค์ ํ ๋นํ๊ธฐ๋ก ๊ฒฐ์ ํ์์ ์๊ธฐ์์ผ ๋๋ฆฝ๋๋ค. "2๋
ธ๋" ์ํคํ
์ฒ๋ ์ด๋ฏธ ๊ณต๊ฐ ๋ฒ ํ ํ
์คํธ ํํ๋ก ์ถ์๋์์ต๋๋ค. ์ด์ ๋๊ตฌ๋ ์ด๋ฅผ ์ ํํ์ฌ ๋ชจ๋ฐ์ผ Habr์ ๊ฐ์ ํ๋ ๋ฐ ๋์์ ์ค ์ ์์ต๋๋ค. ์ค๋์ ๊ทธ๊ฒ ๋ค์ผ. ๋๊ธ์ ํตํด ๊ทํ์ ๋ชจ๋ ์ง๋ฌธ์ ๊ธฐ๊บผ์ด ๋ต๋ณํด ๋๋ฆฌ๊ฒ ์ต๋๋ค.
์ถ์ฒ : habr.com