๊ฐ๋ฐ์ 99% ์ปค๋ฎค๋ํฐ์์ ์๋ค ๋จ์ด์!
์ต์ข ๋ฐฐํฌ URL: https://pixel-workroom.herokuapp.com/
๊นํ๋ธ ๋งํฌ: https://github.com/ha-il/project-pixel
์๊ธฐ์๊ฐ
์๋ ํ์ธ์! ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ก ์ทจ์ ์ค๋นํ๊ณ ์๋ ๊นํ์ฐ๋ผ๊ณ ํฉ๋๋ค. ๋ ธ๋ง๋์ฝ๋ 10์ฃผ ์คํฐ๋๋ฅผ ์์์ผ๋ก ๋ ธ๋ง๋์ฝ๋์์ ์ธ์ฐ์ ๊ณ์ ์ด์ด๊ฐ๊ณ ์์ต๋๋ค. ๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ด๊ฒ ์ ๊ฒ ๊ตฌํํ๋ ๊ฒ์ ์ข์ํ๋๋ฐ, ๋ง์นจ ๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ๋ง์ผ๋ก ์ฑ์ ๊ตฌํํ๋ ๋ฉ๋ก ํด๋ก ์ฝ๋ฉ ์ปจํ ์คํธ๊ฐ ์ด๋ ค์ ๋ฐ๊ฐ์ด ๋ง์์ผ๋ก ์ฐธ๊ฐํ์ต๋๋ค.
ํ๋ก์ ํธ ๊ธฐํ
ํ๋ก์ ํธ๋ฅผ ๊ธฐํํ๋ฉด์, ์ผ๋จ ์ ๋ ์ธ์ ์์ ์ ๋ฃ๋์ง ์๊ฐํด๋ดค์ต๋๋ค. ์ ๋ ์ฃผ๋ก ํ๋ก๊ทธ๋๋ฐ ์์ ์ ํ ๋ ์์ ์ ๋ง์ด ๋ค์์ต๋๋ค. ๊ทธ๋ฌ๋ค๋ณด๋ ๋ ธํธ๋ถ์ด๋ ๋ฐ์คํฌํ์ผ๋ก ์์ ์ ์ฌ์ํ๊ฑฐ๋, ์น์ผ๋ก ์ ํ๋ธ๋ฅผ ๋์๋๊ณ ์์ ์ ๋ฃ๋ ๊ฒฝ์ฐ๋ ๋ง์์ต๋๋ค. ์ด๋ค ํ๋ก์ ํธ๊ฐ ํ์ํ ์ง ๋ชจ๋ฅด๊ฒ ์ผ๋, ์ผ๋จ ๋ด๊ฐ ์ฌ์ฉํ ํ๋ก์ ํธ๋ฅผ ๋ง๋๋ ๊ฒ์ด ์ข๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์ด์, '์์ ํ๋ฉด์ ์์ ์ ๋ฃ๋ ์ฌ๋๋ค์ ํ๊ฒ์ผ๋กํ ์น ๋ฎค์ง ํ๋ ์ด์ด'๋ฅผ ๋ง๋ค์ด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์์ต๋๋ค.
ํ์ง๋ง ๊ทธ๋ฐ ๋ฎค์ง ํ๋ ์ด์ด๋ ์ด๋ฏธ ๋๋ฌด ๋ง๊ณ , ์์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๋๋ผ๋ ์กฐ๊ธ์ ์ฐจ๋ณ์ ์ ์์ด์ผํ ๊ฒ ๊ฐ์์ ์๊ฐํด๋ธ ๊ฒ์ด, '์น์ผ๋ก ๊ฐ๋ฐํ๋๋งํผ ๋์ ํ๋ฉด์ ์ฌ์ฉํ ์ ์์ผ๋ ์ ์ ์๊ฒ ์ด๋ค ๊ณต๊ฐ์ ์ ๊ณตํด์ฃผ๊ณ ์ถ๋ค'๋ผ๋ ์๊ฐ์ ํ๊ฒ๋์์ต๋๋ค. ์์ ๋ง์ ์ทจํฅ์ผ๋ก ๊ฐ๋ ์ฑ์ด ์์ ์ค์ ๊ฐ๊ณ ์ถ๋ค๋ ์๊ฐ์ ์์ฃผํ๋๋ฐ, ์ ๊ฐ ๋ง๋ ์น์ ์ด์ฉํ๋ ์ ์ ์๊ฒ๋ ์์ ๋ง์ ์์ ์ค์ฒ๋ผ ๋๊ปด์ง ์ ์๋ ์์ ๊ณต๊ฐ์ ์ ๊ณตํ๊ณ ์ถ์ด์ ํ๋ก์ ํธ ์ด๋ฆ์ "๋น์ ์ ์์ ์ค"๋ก ์ง๊ฒ ๋์์ต๋๋ค.
์ด๊ธฐ ๋์์ธ
(์ฌ๊ฐํ ๋์์ธ ๊ฐ๊ฐ...)
๊ธฐํํ๋ฉด์ ํผ๊ทธ๋ง๋ก ๊ฐ๋จํ ์ค์ผ์นํ ์ด๊ธฐ ๋์์ธ์ ๋๋ค. ํ๋ฒํ ๋ฎค์ง ์ฑ์ฒ๋ผ ํค๋์ ๋ค๋น๊ฒ์ด์ ๋ฐ ๋ฑ์ ๋ฃ์ผ๋ฉด ๊ณต๊ฐ์ด ํ์ํด์ง๊ณ ์ง์ ๋ถํด๋ณด์์ต๋๋ค. ํค๋์ ๋ฉ๋ด๋ฅผ ๊ณผ๊ฐํ๊ฒ ์ ๊ฑฐํ ๋์ , ๊ฐ ๋ฉ๋ด์ ์ญํ ์ ๊ฐ๊ตฌ ์ค๋ธ์ ํธ์ ๋ฐฐ์นํ์ต๋๋ค. '์คํ๋ ค ์ ์ ๋ค์ด ์ด๊ฒ์ ๊ฒ ํด๋ฆญํด๋ณด๋ฉด์ ์ฌ๋ฏธ๋ฅผ ๋๋ ์ ์์ง ์์๊น?'๋ผ๋ ์๊ฐ๋ ์กฐ๊ธ์ ํด๋ดค์ต๋๋ค. ์์ดํจ๋์ ๋ ์ด์์์ ์กฐ๊ธ ์ฐธ๊ณ ํ์ต๋๋ค.
๋์์ธ ํ ๋ง๋ "ํฝ์ ์ํธ"
์ฌ์ค ํ๋ก๊ทธ๋๋ฐ๋ณด๋ค๋ ๊ฐ์ฅ ๊ฑฑ์ ํ๋ ๋ถ๋ถ์ ๋๋ค. ์ด๋ฒ ํ๋ก์ ํธ์ ์ฌ์ฉ๋ ํฝ์ ์ํธ ์ด๋ฏธ์ง ๋ฆฌ์์ค๋ค์ Aseprite๋ผ๋ ํฝ์ ์ํธํด๋ก ์ ๊ฐ ์ง์ ์ฐ์์ต๋๋ค. ๋ฌผ๋ก ๋์์ธ ์ ๋ถ๋ฅผ ์ ๊ฐ ํ๊ธฐ์๋ ์๊ฐ์ด ๋ง์ด ๋๋ ๊ด๊ณ๋ก, ํํฐ๋ ์คํธ ๋ฑ์์ ์ด๋ฏธ์ง๋ฅผ ๊ฒ์ํ๊ณ , ์ ๊ฐ ์ฐ์ ์ ์๋ ํํ๋ก ๋ณํํด์ ๋ง๋ค์์ต๋๋ค. ํ์์ ์ทจ๋ฏธ๋ก ํฝ์ ์ํธ๋ฅผ ์กฐ๊ธ์ฉ ์ฐ์์๋๋ฐ, ๊ทธ๋ ์ฐ์๋ ์ด๋ฏธ์ง๋ ํ์ฉํ์ต๋๋ค.
(ํ๋ก์ ํธ ์งํํ๋ฉด์ ์ฐ์ ํฝ์ ์ํธ ํ์ผ๋ค)
์ด๋ฒ ํ๋ก์ ํธ ๋ชฉํ
์ด๋ฒ ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ์ ๊ฐ ์ค์ค๋ก ์ค์ ํ ๋ชฉํ๊ฐ ์ธ ๊ฐ์ง ์์ต๋๋ค.
ํ๋. ์์ ์ด ๋๊ธฐ์ง ์๋๋ก SPA๋ก ๊ตฌํํ ๊ฒ. (๋ก๊ทธ์ธ, ๋ก๊ทธ์์์ ์ ์ธํ ๋๋จธ์ง ๊ธฐ๋ฅ๋ค์ ์ ๋ถ ์๋ก๊ณ ์นจ์ ๋ฐ์์ํค์ง ์์ต๋๋ค. )
๋. ํผ๊ทธ ํ์ผ์ layout.pug ํ์ผ์ div ํ๋๋ง ์์ฑํ๊ณ , ๋ฆฌ์กํธ์ฒ๋ผ ๋๋จธ์ง๋ ์ ๋ถ ํ๋ก ํธ์๋์์ ๋ ๋๋งํ ๊ฒ
์ . ํ๋ก ํธ์๋ ๊ตฌํํ ๋๋ ์ํ๊ด๋ฆฌ๋ฅผ ํ ์ ์๋ ์ปดํฌ๋ํธ ํด๋์ค๋ฅผ ๋ง๋ค๊ณ , ์ปดํฌ๋ํธ ํด๋์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ปดํฌ๋ํธ๋ฅผ ํ์ฅ์์ผ๊ฐ๋ฉด์ ๊ตฌํํ ๊ฒ
์ ์ธ ๊ฐ์ง๋ฅผ ๋๋ฆ์ ๋์ ๊ณผ์ ๋ก ์๊ฐํ๋ฉด์ ํ๋ก์ ํธ๋ฅผ ์งํํ์ต๋๋ค.
(ํด๋ผ์ด์ธํธ ํด๋ ๊ตฌ์กฐ)
(๋ชจ๋ ์ปดํฌ๋ํธ๋ Component ํด๋์ค๋ฅผ ์์๋ฐ์ ์์ฑํ์ต๋๋ค.)
(์ํ๊ด๋ฆฌ๋ ํ ์ ์๊ฒ ๊ตฌํํ์ต๋๋ค.)
ํ๋ก์ ํธ ๊ธฐ๋ฅ ์๊ฐ
๋ก๊ทธ์ธ ์ ํ๋ฉด๊ณผ ๋ก๊ทธ์ธ ์ฐฝ
ํํ์ด์ง ์ฒซ ์ง์ ์ ๋์ค๋ ํ๋ฉด์ ๋๋ค.
'click'์ด ๋ ์๋ ๋ชจ๋ํฐ๋ฅผ ํด๋ฆญํ๋ฉด URL์ด /login์ผ๋ก ๋ฐ๋๋ฉฐ ๋ก๊ทธ์ธ์ฐฝ์ด ๋์ต๋๋ค.
๋ก๊ทธ์ธ ํ ์ฒซ ์ง์ ํ๋ฉด
์ค๋งํธํฐ ์์ด์ฝ: ํด๋ฆญ์ ์ค๋งํธํฐ ์ค๋ธ์ ํธ๊ฐ ๋ ๋๋ง๋ฉ๋๋ค.
์นจ๋: ํด๋ฆญ์ ๋ก๊ทธ์์ ์๋์ฐฝ์ด ๋น๋๋ค.
์ฅ์์ฅ: ์ ์ ์ ํ๋ ์ด๋ฆฌ์คํธ๋ฅผ ๋์ดํฉ๋๋ค.
๋ฎค์ง๋ฑ ํฌ: ํด๋ฆญ์ ์ธ๊ธฐ์ฐจํธ ํ์ด์ง๋ฅผ ๋ ๋๋งํฉ๋๋ค.
ํ๋ ์ด๋ฆฌ์คํธ ์์ฑ๊ณผ ํ๋ ์ด๋ฆฌ์คํธ ํ์ด์ง
์ค๋งํธํฐ ์์ด์ฝ์ ํด๋ฆญํ๋ฉด ์ค๋งํธํฐ ์ค๋ธ์ ํธ๊ฐ ๋์ต๋๋ค.
๋ น์ ์์ด์ฝ์ ํ๋ ์ด๋ฆฌ์คํธ ์์ฑ ๊ธฐ๋ฅ์ ๋๋ค.
๋นจ๊ฐ์ ์์ด์ฝ์ ์ ํ๋ธ ์์์ผ๋ก ์์ ์ ์ถ๊ฐํ๋ ๊ธฐ๋ฅ์ ๋๋ค.
๋ น์ ์์ด์ฝ์ ๋๋ฅด๋ฉด ์ ๋ ฅ์ฐฝ์ด ๋์ต๋๋ค.
ํผ์ ์ ๋ ฅํ๊ณ ์๋ธ๋ฐ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ํด๋น ํ๋ ์ด๋ฆฌ์คํธ ํ์ด์ง๊ฐ ๋ ๋๋ง๋ฉ๋๋ค.
์์ ์ ์ถ๊ฐํ ์ ์๊ฒ ์ธ๊ธฐ์ฐจํธ ์์ ์ ๋ฐ์ ์ถ์ฒํด์ค๋๋ค.
+ ๋ฒํผ์ ๋๋ฅด๋ฉด ํ๋ ์ด๋ฆฌ์คํธ์ ์์ ์ด ์ถ๊ฐ๋ฉ๋๋ค.
๊ฒ์ํ๊ธฐ ์ฐฝ์ ๊ฒ์์ด๋ฅผ ์ ๋ ฅํ๋ฉด ์ธ๊ฐ์ฐจํธ ๊ณก ๋์ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ๋ ๋๋งํฉ๋๋ค.
ํ์ฌ๋ ๊ฒ์์ด ์ ์ฒด๋ฅผ ์ ํํ ์ ๋ ฅํด์ผ ๊ฒฐ๊ณผ๊ฐ ๋น๋๋ค.
์ฌ์ ๋ฒํผ์ ๋๋ฅด๋ฉด ๋ฎค์ง ํ๋ ์ด์ด๋ก ํ์ฌ ํ๋ ์ด๋ฆฌ์คํธ์ ์์ ์ ์ ๋ฌํ๊ณ ์ฌ์์ด ์์๋ฉ๋๋ค.
ํ๋ ์ด๋ฆฌ์คํธ๋ฅผ ์์ฑํ๊ณ ํ์ผ๋ก ๋์๊ฐ๋ฉด ์ฅ์์ฅ์ด ์ฑ์์ ธ์์ต๋๋ค.
์์ ์ถ๊ฐ ๊ธฐ๋ฅ
์ค๋งํธํฐ ์ค๋ธ์ ํธ์ ๋นจ๊ฐ ์ฑ์ ๋๋ฅด๋ฉด ์์ ์ ์ถ๊ฐํ ์ ์๋ ํผ์ด ๋ ๋๋ง๋ฉ๋๋ค.
์ ํ๋ธ URL๋ก ์์ ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
์ถ๊ฐํ ์์ ์ ํ๋ ์ด๋ฆฌ์คํธ ํ๋ฉด์์ ๊ฒ์ํ์ฌ ํ๋ ์ด๋ฆฌ์คํธ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
์ธ๊ธฐ์ฐจํธ
ํ ํ๋ฉด์์ '๋ฎค์ง๋ฑ ํฌ'๊ฐ ๋์ค๋ ํฐ๋น ์ค๋ธ์ ํธ๋ฅผ ํด๋ฆญํ๋ฉด ์ธ๊ธฐ์ฐจํธ๊ฐ ๋ ๋๋ง๋ฉ๋๋ค.
๊ฐ์ ํ๊ณ ์ถ์ ์
์ฌ์ค์ ์ด๋ฏธ์ง๊ฐ ๊ฐ์ฅ ์ค์ํ ํ๋ก์ ํธ์ธ๋ฐ, ์ด๋ฏธ์ง๋ฅผ ์ ์ ํ์ผ๋ก ์ ๊ณตํด์ ๊ทธ๋ฐ์ง ๋ฐฐํฌ ํ์ ์ด๋ฏธ์ง๊ฐ ๊นจ์ ธ์ ๋์ค๋๊ฒ ๋๋ฌด ์์ฝ์ต๋๋ค. ์ปจํ ์คํธ ๊ธฐ๊ฐ์ ๋๋ฌ์ง๋ง, ์ด๋ฏธ์ง๋ฅผ ๋ฐ๋ก ํธ์คํ ํด์ ๊ฐ์ ํ๊ณ ์ถ์ต๋๋ค.
์ฌ์ค ๋ค๋ฅธ ๊ฒ๋ณด๋ค๋ ์ฝ๋๋ก ์ธ์ ๋ฐ๊ณ ์ถ์ ํ๋ก์ ํธ์๋๋ฐ, ๋ง๊ฐ์ด ๊ธํ๋ค๋ณด๋ ๋ง์ง๋ง์๋ ๊ฒฐ๊ตญ ์ค๋ณต ์ฝ๋๊ฐ ๋ง์์ง๊ณ , ํ๋์ ์ปดํฌ๋ํธ์ ๋๋ฌด ๋ง์ ์ญํ ์ด ๋ถ์ฌ๋ ๊ฒ ๊ฐ์์ ์์ฝ์ต๋๋ค. ๋ฉฐ์น ์ฌ์๋ค๊ฐ ๋ฆฌํฉํ ๋ง ๊ณผ์ ์ ๊ฑฐ์น๊ณ ์ถ์ต๋๋ค.
๋ฉ๋ก ํด๋ก ์ฝ๋ฉ ์ฐธ๊ฐํ์ค ๋ถ๋ค์๊ฒ ์ ํ๊ณ ์ถ์ ํ
๊ธฐํ๊ณผ ์๊ตฌ์ฌํญ ๋ช ์ธ์ ๋ง์ ์๊ฐ์ ๋ค์ด๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. ์ฌ์ค ์ ๋ ์ฒซ๋ฒ์งธ ๋ฉ๋ก ํด๋ก ์ฝ๋ฉ ์ปจํ ์คํธ์ ์ฐธ๊ฐํ๋ค๊ฐ ํ๋ฝ์ ํ์๋๋ฐ์. ์ด์ ๋ ์ค๊ฐ์ ์๊ตฌ์ฌํญ์ ์๊พธ ๋ณ๊ฒฝํด์ ๋ง๊ฐ๊ธฐํ์ ๋ง์ถ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด๋ฒ ํ๋ก์ ํธ๋ ๊ธฐํ ์ด๋ฐ์ ์๊ตฌ์ฌํญ์ ์ต๋ํ ์์ธํ๊ฒ ์์ฑํ๊ณ , ์์ฒญํ api๊ฒฝ๋ก์ ์๋ต์ ๋ฐ๋ฅธ ๊ฒฝ์ฐ๋ ์์ธํ๊ฒ ์์ฑํ์ต๋๋ค. ๊ทธ๋ ๊ฒ ํ๋๊น ํ๋ก๊ทธ๋๋ฐ์ ํ ๋ ๋ฐฉํฅ์ด ๋ช ํํด์ง๊ณ , ๋ด๊ฐ ์ง๊ธ ํด๊ฒฐํด์ผํ ๋ฌธ์ ๋ ๋ช ํํด์ ธ์ ์์ ํจ์จ์ด ์ข์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์๊ฐ
ํ๋ก์ ํธ๋ฅผ ์ฒ์ ๊ธฐํํ๊ณ ๋๋ฆ๋๋ก ์๊ตฌ์ฌํญ์ ์์ฑํ์ ๋๋, "๊ทธ๋ ์ผ๋จ ์ง์ง ์ต์๊ธฐ๋ฅ๊น์ง๋ง ์๊ตฌ์ฌํญ์ ์ ์ํ๊ณ , ์ต์ ๊ธฐ๋ฅ ๋ค ๊ตฌํํ๋ฉด ๋ ์ถ๊ฐํ์!"๋ผ๋ ๋ง์์ด์๋๋ฐ, ๊ทธ '์ง์ง ์ต์๊ธฐ๋ฅ'์ ๊ตฌํํ๋๋ฐ ์ปจํ ์คํธ ๊ธฐ๊ฐ์ ๋ค ์จ๋ฒ๋ฆด ์ค ๋ชฐ๋์ต๋๋ค. ์ต์ ๊ธฐ๋ฅ์ ์ ๋ง๋๋ ๊ฒ๋ ์ ๋ง ์ฝ์ง ์๊ตฌ๋ ๋ผ๋ ๊ฒ์ ๋๊ผ์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก, ๋ฉ๋ก ํด๋ก ์ฝ๋ฉ ์ปจํ ์คํธ๋ฅผ ์ด์ด์ฃผ์ ๋ ธ๋ง๋์ฝ๋์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์ด๋ฒ ํ๋ก์ ํธ๋ฅผ ํตํด์ ๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ง์ด ๊ณต๋ถํ ์ ์์์ต๋๋ค. ์์์ ์ธ๊ธํ๋ ๊ฐ์ธ์ ์ธ ๋ชฉํ๋ค์ ๋ฌ์ฑํ๊ธฐ ์ํด์ ๋๋ฆ๋๋ก ๊ฒ์๋ ๋ง์ด ํด๋ณด๊ณ ์ฝ์ง๋ ๋ง์ด ํ์ต๋๋ค. ํนํ express์ pug๋ก ์ฝ๊ฒ ํ๋๊ฑธ, ํด๋ผ์ด์ธํธ์์ ๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ๋ง ๊ฐ์ง๊ณ ํด๊ฒฐํ๋ ๊ฒ์ด ๋ง์ด ์ด๋ ค์ ์ง๋ง, ๋๋ถ์ ํด๋์ค, this ๋ฐ์ธ๋ฉ, SPA ๊ตฌํ, location API, history API, ์ฟ ํค, ์ํ๊ด๋ฆฌ ๋ฑ ๋ง์ ๊ฒ์ ๋ฐฐ์ ์ต๋๋ค. ํ๋ค์์ง๋ง, ๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ํ๋ ํ๋ ๊ตฌํํ๋๊ฒ ์ ๋ง ์ฆ๊ฑฐ์ ์ต๋๋ค. ์์คํ ๊ฒฝํ์ ์ ๋ฌผํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.