2021/12/14
๋ง ๋ฆฌ์กํธ๋ฅผ ๋ค๋ฃจ๋ ๊ธฐ์ ์ฑ ์ ๋๋์ ๋ฌด๋ ต, ๋ฌด์จ ํ๋ก์ ํธ๋ฅผ ํด๋ณผ๊น ์์ฑ๊ฑฐ๋ฆฌ๋ ์ฐจ์ ์ข์ ํ ์ด ํ๋ก์ ํธ ์์ด๋์ด๋ฅผ ๋ฐ๊ฒฌํ๋ค.
๋ฐ๋ก ์ธํฐ๋ท ์ปค๋ฎค๋ํฐ์์ ๋ฐ์ด ๋์ด๋ฒ๋ฆฐ โ๋ง๋๊พธ?!โ ์งค์ด๋ค. ์ฒ์ ์ด ์งค์ ๋ณด๊ณ ์ด์ด ์๋ ์์์ ์ง์ด๋ฒ๋ ธ๋๋ฐ, ๋ค๋ฅธ ์ด๋ค๋ ๋น์ทํ ๊ฒฝํ์ ํ๋์ง ์ดํ๋ก ์ฌ๋ฌ ํฉ์ฑ์งค๋ค์ด ๋ง๋ค์ด์ง๊ธฐ ์์ํ๋ค.
๋ฐ์งค ์์ฑ๊ธฐโฆ ์์ด๋์ด๋ ์๋ ๋ถํฐ ์์์ง๋ง ์ง๊ธ์ด ์ ๊ธฐ๋ผ๊ณ ์๊ฐํด ๊ฐ๋ฐ์ ์์ํ๋ค.
์ค๋๋ ๊ฐ๋ฐ์๊ฐ ์ ๋๋ค๊ณ ๋งํ๋ค
์ด์ ์ ํ ๊ณํผ ๊ฐ๋ฐ ๊ฒฝํ์ ๋น๋กฏ๋ ์ํ์ฐฉ์ค์ด๊ธฐ๋ ํ๋ค.
โ์ฌ์ง ์์ ๊ธ์๋ฅผ ๊ทธ๋ฆฌ๋ ๊ฑฐ๋ ๋น์ฐํ ์บ๋ฒ์ค๋ฅผ ์จ์ผ๊ฒ ์ง?โ ๋ผ๊ณ ์๊ฐํด๋ฒ๋ฆฐ ๊ฒ์ด๋ค. ์ ๋ฌผ๋ก ์บ๋ฒ์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ๋์๋ค๊ฑฐ๋ ํ๋ฆฐ ๊ฒ์ ์๋๋ค. ๋ค๋ง ํ์ ํ๊ฒ ์ง๋ง ๋ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ๊ตฌ์ํ๊ฒ ๋๋ค.
๊ทธ๋์ ์ฑ ์์ ๋ณธ ๋๋ก์ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ธํ ํ ๋ค, ์บ๋ฒ์ค๋ฅผ ๋ง์ง๊ธฐ ์์ํ๋ค. ์ด์ ์ ํด๋ดค์ผ๋ ์ด๋ฒ์๋ ๋๊ฒ ์ง๋ผ๋ ์ด์คํ ๋ง์๊ฐ์ง์ ๊ธ๋ฐฉ ๋ฌด๋์ก๋ค.
๋ง๋ฅ๋จ๋ฆฐ ๋ฌธ์ ๋
์บ๋ฒ์ค์ ๊ธ์๋ฅผ ์ฐ๊ณ , ๋ฐ๋ก๋ฐ๋ก ์ ๋ฐ์ดํธ๋ฅผ ํตํด ๋ณด์ฌ์ฃผ๋ ค๋ฉด ๋๋ ๋ฆฌ์์ค๊ฐ ์๋นํ๋ค.
์บ๋ฒ์ค ์์ ์ด๋ฏธ์ง๋ฅผ ๊ทธ๋ฆฌ๊ณ , ๊ทธ ์์ ๊ธ์๋ฅผ ๊ทธ๋ฆฌ๋ [์ด๋ฏธ์ง -> ๊ธ์] ์ ๊ณผ์ ์ input
์ change
์ด๋ฒคํธ ๋๋ง๋ค ํธ์ถํด์ผ ํ๋๋ฐโฆ ๋ง๋ง ๋ค์ด๋ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆด ๊ฑฐ ๊ฐ์ง ์์๊ฐ?
๋น์ฅ ์ด๋ฏธ์ง๋ฅผ ๋ ๋๋งํ๋ ๋ฐ์๋ ์๊ฐ์ด ์์๋ ํ ๋ฐ ๊ทธ๊ฑธ ๊ธ์ ํ๋ํ๋๋ง๋ค ๋ค์ ๊ทธ๋ฆฐ๋ค๊ณ โฆ??
ํ ๊ณํผ ๋๋ ์ด ๋ฌธ์ ๋ฅผ ํผํ๊ธฐ ์ํด ๋ฐ๋ก ๊ทธ๋ฆฌ๊ธฐ ๋ฒํผ์ ๋ง๋ค์์ง๋ง, ๋ฐ์ ํน์ฑ์ ์ ์ ๊ฐ ์งค์ ์ป๋ ๋ฐ๊น์ง ๊ฑธ๋ฆฌ๋ ์๊ฐ๊ณผ, ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ ์ค์ํ๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฐ ๋ฒํผ์ ํตํ ๊ทธ๋ฆฌ๊ธฐ๋ ์ง์ํด์ผ๋ง ํ๋ค.
ํ ๊ณํผ ๋๋ ๊ฒฝํํ๋ ๋ฌธ์ ์ค ํ๋์ด๋ค. ์บ๋ฒ์ค์ ํฌ๊ธฐ, ์ด๋ฏธ์ง์ ํฌ๊ธฐ์ ๋ฐ๋ผ ๊ธ์๊ฐ ๊น๋ํ๊ฒ ๊ทธ๋ ค์ง์ง ์๊ณ , ๋ง์น ์์ ๊ธ์๋ฅผ ํ๋ํ ๋ฏํ ๋๋์ ์ฃผ๊ฒ ๋๋ ๊ฒ์ด๋ค.
์์์ ์ธ๊ธํ๋ค์ํผ ๋ฐ ์งค์ ๋ง๋๋ ๋ฐ ์ค์ํ ์์ ์ค ํ๋๋ ์๋์ด๋ค. ๊ทธ๋ฐ๋ฐ ๋ฐ์ดํฐ๋ก ๋ฐ๊พธ๋ ๋ก์ง์ ์ง๋๋ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ ธ๋ค. ํด๊ฒฐํ๋ ค๋ฉด canvas2image ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฐ๋ก ์ฌ์ฉํด ์ด๋ฏธ์ง๋ฅผ ๋ณด์ฌ์ฃผ๋ฉด ๋์ง๋ง, ๋ค์ ์ ์ ๊ฐ ์ด๋ฏธ์ง๋ฅผ ๊พน ๋๋ฌ ๋ค์ด๋ก๋ ํด์ผํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์๊ธด๋ค.
๋ฐ์ํ ๋์์ธ์ ๋ง์ถ๋ ค๋ฉด ํ๋ฉด ํฌ๊ธฐ์ ๋ฐ๋ผ ์บ๋ฒ์ค ํฌ๊ธฐ, ์ด๋ฏธ์ง ํฌ๊ธฐ, ๊ธ์ ํฌ๊ธฐ, ๊ธ์ ์ขํ ๋ฑ์ ๋ค์ ์
๋ฐ์ดํธ ํด์ผํ๋ค.
css
๋ก ์บ๋ฒ์ค ์์ฑ ์กฐ์ ์ ์ ๋๋ js
๋ก ์ ๋ถ ์์ฑํด์ค์ผ ํ๋๋ฐโฆ ์ด๋ ์ธ์์โฆ
์ฐฝ ์ฌ์ด์ฆ ์กฐ์ ์ด๋ฒคํธ ๋ฆฌ์ค๋ ๋ฑ๋ก๋ถํฐ ํด์โฆ ๋ฑ๋ฑ
๊ฐ์์๋๋ค๋ ๊ฑด ๋๊ตฌ์๊ฒ๋ ์ฝ์ง ์์ ๊ฒฐ์ ์ด๋ค. ๋๋ ์์ฑํ๋ ์ฝ๋๋ค์ ๋ํด ๋ฏธ๋ จ์ ๊ฐ์ก๋ ์์ ์ด ์์๋ค.
ํ์ง๋ง ์ปดํจํฐ๋ฅผ ๊ณ ์น๋ ๊ฐ์ฅ ๋น ๋ฅธ ๋ฐฉ๋ฒ์ ์ฌ๋ถํ ์ด๋ฏ์ด ์ฝ๋ฉ ํ ์คํธ ๋ฌธ์ ๋ค์ ํ๋ฉด์ ๊ฐ์์๋ ๊ฒฐ์ ์ ํ๋ ์ผ์ด ๋ง์์ก๊ณ ์ต์ํด์ก๋ค.
๋ฌด์๋ณด๋ค๋ ๊ทธ๋ฅ ๋ง ๊ฐ์์์ ๊ฒ ์๋๋ผ, ๋ค๋ฅธ ์๋๋ฅผ ํด๋ณด๊ธฐ ์ํด ๊ฐ์์์ ๊ฒ์ด๋ค.
(๋์ฑ ์์ด ๊ฐ์์์ผ๋ฉด ์ ๋ผ์!!)
์ปค๋ฎค๋ํฐ์ ์ด๋ฏธ ๋ง๋ค์ด์ง ์งค๋ค์ด ๋ง์ด ๋์๋ค๋๊ธธ๋ ๊ฒ์ํด๋ณด๋, ๋๊ตฐ๊ฐ ์ด๋ฏธ ๋น ๋ฅด๊ฒ ๋ง๋ค์ด ์ถ์๋ฅผ ํ๋คโฆ
SSR
์ ์ํด Nextjs
๋ฅผ ์ฌ์ฉํ๊ณ , ๋น ๋ฅธ ๋์์ธ์ ์ํด UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๋ฅผ ์ฌ์ฉํ ๊ฒ ๊ฐ์๋ค.
ํ์ง๋ง ํฌ๊ธฐํ์ง ์์๋ค. ๋ด๊ฐ ๋ ์ข์ ๊ธฐ๋ฅ์ ๊ฐ์ถ ์์ ์ด ์์๊ธฐ ๋๋ฌธ์ด๋ค!
ํ๋ก์ ํธ๋ฅผ ์งํํ ๋ ํ์ง ๋ง์์ผ ํ ๊ฒ: ๊ตฌ๊ธ์ ๋ด๊ฐ ์งํํ๋ ํ๋ก์ ํธ ๊ฐ์ ์๋น์ค๊ฐ ์ด๋ฏธ ์๋์ง ๊ฒ์ํด๋ณธ๋ค.
์บ๋ฒ์ค๋ฅผ ์ฌ์ฉํ์ง ์๊ณ , ์ด๋ฏธ์ง ์์ ๊ธ์ ์ด๋ค๋ ๊ฐ๋ ์ ๋ค์ ์๊ฐํด๋ณด์๋ค. ๊ตณ์ด ์ด๋ ค์ด ๊ธธ์ ๊ฐ์ง ์๊ณ , ์ฌ์ด ๋ฐฉ๋ฒ์ด ์๋ค๋ ๊ฒ์ ๊นจ๋ฌ์๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฌํํ๋ค. div
๋ก ํ๋ ์์ ๋ง๋ค๊ณ , img
๋ฅผ ๋ฃ์ด ๋ฐฐ๊ฒฝ์ ๊ณ ์ ํ ๋ค, p
ํ๊ทธ๋ก ๋์ฌ๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค!
์ด๋ ๊ฒ ์ฌ์ด ์ผ์, ๊ณผ๊ฑฐ์ ํ๋ก์ ํธ ๊ฒฝํ ๋๋ฌธ์ ์ด๋ ต๊ฒ ๊ฐ๋ ค๊ณ ํ๋ ๊ฒ์ด๋คโฆ
์ด๋ ๊ฒ ๊ทธ๋ฅ ์ด๋ฏธ์ง ์์ ํ ์คํธ ํ๊ทธ๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค!
์ด๊ฑธ ์ด๋ป๊ฒ ์ ์ฅํด์ผ ํ๋์ง๋ ์ด๋ฏธ ์๊ณ ์์๋ค. ํฌ๋กฌ ๊ฐ๋ฐ์ ๋๊ตฌ์์ ์ปจํธ๋กค ํจ๋(ctrl + shift + p)
์ ์ด์ด capture
๋ฅผ ๊ฒ์ํ๋ฉด node capture
๊ฐ ๊ฐ๋ฅํ๋ค.
๊ทธ๋ ๋ค๋ ๊ฒ์ ์ด๊ฑธ ์ฝ๊ฒ ์ธ ์ ์๋๋ก ๊ตฌํํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์กด์ฌํ ๊ฒ์ด๋ ์ถ์ธก์ ํ๊ณ , ๊ทธ ์ถ์ธก์ ๋ค์ด๋ง์๋ค. html-to-image๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋์ ๋ดค๋ค.
๋๋ถ์ ์์์ ์์ ํ ๋ฌธ์ ๋ ๋ชจ๋ ํด๊ฒฐ๋์๋ค.
๊ทธ๋ฅ ๊ธ์๋ฅผ ํ๋ฉด์ ์ฐ๋ ๊ฒ ๋ฟ์ด๋ค. ๋ ๋๋ง ๋ถ๋ด๋ ์ ํ ์๊ณ , ๊ธ์๊ฐ ๊นจ์ง ์ฐ๋ ค๋ ์๋ค!
๊ธฐ์กด ํฌ๋กฌ ๊ฐ๋ฐ์ ๋๊ตฌ์ ์บก์ณ๋งํผ ๋น ๋ฅด์ง๋ ์์ง๋ง ์ถฉ๋ถํ ๊ฒฌ๋ ์ ์๋ ์์ค์ด๋ค.
img
ํ๊ทธ์ ํฌ๊ธฐ๋ฅผ ์ง์ ํด๋๋๋ค๋ฉด, ๋์ฌ๋ฅผ ๋ณด์ฌ์ฃผ๋ ํ๊ทธ์ ์์น๋ ์๋์ ์ผ๋ก ์กฐ์ ํด์ค์ผ ํ๋ค. ์ด๋ถ๋ถ์ %
์ vw
๋จ์๋ฅผ ์ฌ์ฉํด ์ ์ ํ ํด๊ฒฐํ๋ค.
๊ฐ๋ฐํ๋ค๋ณด๋ ์ ๊ฒฝ ์ธ ์ ๋ฐ์ ์๋ ์ ์ด ๋์๋คโฆ ๊ทธ๋์ ์ฐจ๋ณ์ฑ์ ์์ฃผ๋ก ๊ฐ๋ฐ์ ํ๊ฒ ๋๋ค. ๊ทธ ์ฐจ๋ณ์ฑ์ ์ ์ด๋ณด์๋ฉด
middle-dot
์ถ๊ฐํ๊ธฐPWA
ํจํค์ง๋๋ผ๋ฅผ ๋ชป ๋ฐ๊ธฐ์ ๋งํ์ ์ด ๊ทธ๋ฅ ์๋ ธ๋คใ ใ
์ฌ์ค ๊ธฐ์ ์ ์ผ๋ก ๋ฌธ์ ์ ์ ์์๋ค. ๊ทธ๋ฅ ๋ด ๊ฐ๋ฐ์ ๋ฌธ์ ๊ฐ ์์๋ ๊ฒ๋ฟโฆ
์๋ฌด๋๋ ์ ์ญ ์ํ ์ ์ฅ์๋ฅผ ์ธ๋งํผ ํฐ ํ๋ก์ ํธ๊ฐ ์๋๋ค๋ณด๋ ์ปดํฌ๋ํธ๋ผ๋ฆฌ props
๋ก ๋ด๋ ค๋ณด๋ผ ์ผ์ด ์ฆ๊ฒ ๋์๊ณ โฆ ๊ทธ๋งํผ ๋๋ props
๋ค์ ํ์
์ ์ ํด์ค์ผ ํ๊ณ โฆ
์ฝ๊ฐ ์ํคํ ์ณ์์ ๊ณ ๋ฏผ์ ํ๋ค. 2๊ฐ์ ์ปจํ ์ด๋ ์ปดํฌ๋ํธโฆ ๊ทธ ์์์ ์ค๋ณต๋๋ ๋ฉ์๋๋ฅผ ์ด๋ป๊ฒ ๋ ๊ฒ์ธ๊ฐโฆ ๊ฒฐ๊ตญ ์ค๋ณต๋๋๋ก ๋์๋ค. ๊ฐ๊ฐ ํ์ด์ง์ ๋ก์ง์ ์กด์คํด์ ๋ง์ด๋ค.
๋ฐ์ํ ๋์์ธ์ ๊ทธ๋ฅ ์ซ์ ๋ง์ถ๊ธฐ์ผ ๋ฟ์ด์ง๋งโฆ ํ๋ฉด ์ ์ฒด์ ๋ ์ด์์์ด๋ผ๋ ์ง, ๋ฐ์คํฌํ๊ณผ ๋ชจ๋ฐ์ผ ํฌ๊ธฐ์์๋ ์ด๋ป๊ฒ ๋ณด์ฌ์ง์ง์ ๋ํ ๋์์ธ์ด ํ์ํ๋ค. ๋ถํธ์คํธ๋ฉ
์ด๋ ant-design
๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ emotion
์ผ๋ก๋ง ํ๋ ํฐ๋ผ css
๋ฅผ ๋ค๋ฃจ๋ ๋ฐ์ ๋ค์ ํ ๋ฒ ์ ๋ก์ฌํญ์ด ๊ฝ์ ํผ์ ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฒํผ ์๊ณผ, ๋๋จธ์ง ํค๋๋ ๋ฐฐ๊ฒฝ์๋ ๊ณ ๋ฏผ ์ข ํ๋ค. ๋์์ธ ํ๋ ๋ฐ ์ด ์๊ฐ์ด ์๋ง ์ ์ผ ๋ง์ ๊ฒ์ด๋คโฆ
SSR
Nextjs
์ ์์คํจ์ ๊นจ๋ซ๋ ๊ฒฝํ๋ ๋ ๊ฒ ๊ฐ๋ค. ํค๋์ ๋ฃ์ด์ผํ ํ๊ทธ๋ฅผ ๋ชจ๋ public/index.html
์ ๋ฃ์ด๋์๋ SPA
๋ก์ ์กฐ๊ธ ์ฐ์ฐํ๋ค.
๊ทธ๋๋ ์ ๋์๊ฐ๋ ๋ง์กฑ!
์ด๋ฐ ์งค๋ ๋ง๋ค ์ ์๊ฒ ๋์๋ค!
๊ฐ๋ฐ์ ์ฌ์ ๋ค. ์ฌ์ค ํ๋์ ์ปดํฌ๋ํธ์ ๋น์ง๊ณ ๋ฐ์ด๋ฃ์ผ๋ฉด ๊ฐ๋ฅํ ์๋ ์๋ ํ๋ก์ ํธ๋ค. ํ์ง๋ง ๊ทธ๋ฐ ๊ฐ๋ฐ์ ๋ด ์์ ๊ฐ๋ฐ ์ํผ์ด ์ฉ์ํ์ง ์๋๋ค. ๋ญ๊ฐโฆ ๋ญ๊ฐ ์ต์ ํ ๋๊ณ ๊ฐ๋ ์ฑ ์ข์ ๊น๋ํ๊ณ ์ ๋๋ ์ฝ๋๋ฅผ ์ง์ผํดโฆ!! ๋ผ๋ ๋ง์์ด ํ๋ก์ ํธ๋ฅผ ์ด๋ ๊ฒ์ด ์๋๊ฐ ํ๋ ์๊ฐ๋ ๋ ๋ค.
์ ์๋ํ๋ค๋ ์ ์ด ๋ง์ ๋ค์ง๋ง, ์์ง๋ ๋ง์ ๊ฑธ๋ฆฌ๋ ๊ฑด ๋์์ธ๊ณผ ํ ์คํ ์ด๋ค.
์ด๋ฐ ๊ฒฝ์ฐ์ ํ ์คํ ์ ์ด๋ป๊ฒ ํด์ผํ์งโฆ?? ๋์ฌ๋ฅผ ์ฐ๊ณ ์ ์ฅ ๋ฒํผ์ ๋๋ฅด๋ฉด ์ ์บก์ณ๋์๋์ง ํ ์คํธ๋ก ํ์ธํ ๋ฐฉ๋ฒ์ด ์๊ธฐ๋ ํ ๊ฑธ๊น? ๊ฒฐ๊ตญ ๋ด๊ฐ ๊ฒฐ๊ณผ ์ด๋ฏธ์ง ํ์ผ์ ๋ด์ผํ๋ ๊ฑฐ์์? ๋ผ๋ ์๊ฐ์ด ์์ง๋ ๋จธ๋ฆฌ๋ฅผ ์ค์น๊ณค ํ๋ค.
์ ๋ฐฐํฌ์๋ ์ฒ์์ผ๋ก vercel
์ ์จ๋ณด์๋๋ฐ, ์ด๊ฑฐ ์ง์ง ๋ฌผ๊ฑด์ด๋คโฆ ์์ผ๋ก ์ด ์๋น์ค๋ง ์ฌ์ฉํ ๋ฏํ๋ค. ๋ธ๋์น๋ณ๋ก ๋ฐฐํฌ๋ ํด์ฃผ๊ณ ์ปค๋ฐ์ ๋ง์ถฐ ์๋๋ฐฐํฌ๊น์งโฆ
github page
๋ ์ด์ ์ฌ์๋๋ผ ์๋์ค์ค์ผ!
์ด๊ฒ์ ๊ฒ ๊ธฐ๋ฅ ์ถ๊ฐํ๋ค๋ณด๋ ํ๋ณด๋ฅผ ๊ฒ์๋ฆฌํด์ ์ ์ ๋ช ํ ๊ฑด ๋น๋ฐ
๋ฒ์จ ๋ฐ์ ์๋ช ์ด ๋๋๊ฐ๋ ๊ฒ๋ ๋น๋ฐใ