2021/09/05
ํ๋ก๊ทธ๋๋จธ์ค์์ ์งํํ๋ ์ฑ์ฉ์ ์ ์ ๋กํ ์ฑ๋ฆฐ์ง์ด๋ค. ๋น๋จ ํ๋ก ํธ์๋ ๋ถ์ผ ๋ฟ๋ง ์๋๋ผ ๋ฐฑ์๋(์๋ฒ), ์๋๋ก์ด๋, ios ์ฑ ๋ฑ ์ฌ๋ฌ ๋ถ์ผ๋ก ์งํ๋๋ค. ๋ค๋ฅธ ํ ์คํธ์ ๋ค๋ฅธ ์ ์ด๋ผ๋ฉด ์๊ฐ ์ ํ ๊ณผ์ ํ ์คํธ๋ก ์งํ๋๋ค๋ ์ !
๋ด๊ฐ ์ฐธ์ฌํ ํ๋ก ํธ์๋ ๋ถ์ผ๋ Vanilla Javascript
, html
, css
๋ง์ ์ฌ์ฉํ ์ ์๋ค. react
๋ vue
๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๊ฐ๋ฐํ๋ผ๋ ์กฐ๊ฑด์ ํ์คํ โ๊ณผ์ โ ๋ผ๊ณ ํ ๋งํ ๋์ ๊ณผ์ ์ด๋ค.
ํ๋ ์์ํฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์คํจ์ ๊นจ๋ฌ์ ์๊ฐ์ด ์๋ค.
์ฝ๋ฉ ํ ์คํธ๋ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ํ์ด๋ณด๋ฉด ๋๋ค. ๊ทธ๋ผ ๊ณผ์ ํ ์คํธ๋? ๋คํํ๋ ํ๋ก๊ทธ๋๋จธ์ค์์๋ ๋งค๋ ์ฑ๋ฆฐ์ง๋ฅผ ์งํํด์๊ธฐ ๋๋ฌธ์ ์ด์ ๊ณผ์ ๋ค์ ํ์ด๋ณด๋ฉด ๋๋ค. ํนํ ์ฌํด ์๋ฐ๊ธฐ ์ฑ๋ฆฐ์ง๋ ์น์ ํ๊ฒ๋ ํ์ด๊น์ง ๋ถ์ด์๋ค.
ํ์ง๋ง ํ์ด์์ ๋ณด์ฌ์ค ๊ฑด ๊ธฐ๋ณธ ์กฐ๊ฑด์ด๋ค.
์ด์ ์ฑ๋ฆฐ์ง๋ค์ ํ์ด๋ ์ธํฐ๋ท์ ์ฐพ์๋ณด๋ฉด ๋์์๋ค.
์ฌ์ค ์ธ๋ถ๋ก ์ ์ถํ๋ฉด ์ ๋๋ค๊ณ ๋์ด์๋๋ฐ ๊ด์ฐฎ์ผ๋ ค๋
๋ง์ฝ ์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๊ฐ๋ฐํ๋ ๊ฒ์ด ์ฒ์์ด๋ผ๋ฉด, ๊ทธ๊ฒ๋ ์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก SPA
๋ฅผ ๋ฐ๋ผํด์ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ
์ผ๋ก ๊ฐ๋ฐํ๋ ๊ฒ์ด ์ฒ์์ด๋ผ๋ฉด(๋์ฒ๋ผ)! ํ์ด๋ฅผ ์ฐธ๊ณ ํด๋ณด๋ ๊ฒ์ ๋ฌด์ฒ ์ถ์ฒํ๋ค.
๋ฌผ๋ก ๋ฐ๋ผํ์ง ๋ง๊ณ ์ง์ ๊ตฌํํด๋ด์ผ ์ค๋ ฅ์ด ๋๋ค.
๋๋ ์์์ด ๋จผ์ ์์ฐ๋์ง ํจ์ ๊ธฐ๋ฐ ๋ฆฌ์กํธ
๋ฅผ ๊ตฌํํด๋ณด๊ฒ ๋ค๊ณ ๊ฐ์ ๋
, ๋ฆฌ์กํธ ํ
์ค
๋ฑ์ ๊ฐ๋
์ ๋ฐ๋๋ผ๋ก ๊ตฌํํ๋ ๋ฒ์ ๊ณต๋ถํ๋ค ์ํ๋ ์ด ๋ค๊ฐ์๋คโฆ ๋๋ถ์ ๊ฒฐ๊ตญ ํด๋์ค ๊ธฐ๋ฐ์ผ๋ก ์์ฑํ๊ฒ ๋ ๊ฑด ๋น๋ฐโฆ
๋ฌธ์ ๋ ์ด๋ ค์ธ ๊ฒ์ด ์์๋ค. ์คํ๋ ค html
๋งํฌ์
๊ณผ, css
๊ฐ ์ ๋ถ ์์ฑ๋์ด์์ด ์ ๋ง js
์๋ง ์ง์คํ๋ฉด ๋ ์ ๋์๋ค!
์ง๋๋ฒ ํ ์ค ์ฝํ ๋ ๊ทธ๋ ๊ณ ํ ์คํธ ๋ฌธ์ ๋ค์ด ์งํํ๋ ๊ฒ ๋๊ปด์ง๋ค.
๊ทธ๋ฐ๋ฐโฆ! ์ด์ฅ๋ถํฐ ๋๊ด์ ๋ถ๋ชํ๋ค. js
์คํฌ๋ฆฝํธ๋ฅผ ๋ถ๋ฌ์ค๋ ๊ณผ์ ์์ module
ํ์
์ด ๋จนํ์ง ์๋ ๊ฒ์ด์๋ค!
๊ธฐ์กด์๋ ์นํฉ
์ผ๋ก ๋ฒ๋ค๋งํ๋ ์ต๊ด์ด ์์ด์ ์ด๋ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ฌ์ฉํ์ง ๋ชปํ๋ ์ด๋ฒ ์ฑ๋ฆฐ์ง์์ ๋์น์ฑ์ง ๋ชปํ ๋ถ๋ถ์ด์๋ค.
โ์์ด ์ค๋ง~ ์ด๋ฐ ์ํ์์ module
์ ๋ชป ์ฐ๊ฒ ์ดโฆ?? import/export
๋ฌธ์ ๋ชป ์ฐ๊ฒ ํ๊ฒ ์ดโฆ??โ ๋ผ๋ ์๊ฐ์ package.json
์์ "type": "module"
์ ์ ํด์ฃผ๊ธฐ๋ ํด๋ณด๊ณ , index.html
์์ <script type="module" src="./main.js"></script>
๋ก ํด์ค๋ ์์ฉ์ด ์์๋ค.
๋์์ค๋ ๊ฑด MIME
? ํ์
์ด ๋ง์ง ์๋ค๋ ์ค๋ฅ๋ฟโฆ ๊ทธ๋ ๊ฒ ์๊ฐ์ ์ด์ฅ์ 30๋ถ์ ๋๊ฒ ์ก์๋จน์๋คโฆ ๊ฒฐ๊ตญ commonJS
๋ก ํ๋ ค๊ณ require
๋ฅผ ์ผ์์๋ ๋จนํ์ง ์์์ ์ด์ฉ ์ ์์ด index.html
์ ์คํฌ๋ฆฝํธ ์ฃผ์๋ฅผ ์ ๋ถ ์ ์ด์คฌ๋คโฆ
์ด๋ ๊ฒ ํ๋ ๊ฑฐ ๋ถํธํดใ ใ
ํ๋ก๊ทธ๋๋จธ๋ ์ฝ๋ฉํ๋ ์๊ฐ๋ณด๋ค ์๊ฐํ๋ ์๊ฐ์ด ๋ ๊ธธ๋ค๊ณ ํ์ง๋ง, ๋ ์ด๋ฒ ์ฑ๋ฆฐ์ง๋งํผ์ ์ฝ๋ฉํ๋ ์๊ฐ์ด ๋ ๊ธธ์๋ค. ์ด๋ป๊ฒ ์์ฑํด์ผ ํ ์ง ์ฝ๋๊ฐ ๋จธ๋ฆฌ์ ๊ทธ๋ ค์ง๋ ์์ค์ด์๊ธฐ ๋๋ฌธ์ ๋งํ ์์ด ๋ฌผ ํ๋ฅด๋ฏ ์จ ๋ด๋ ค๊ฐ๋ค. ๊ฐ๋ ์๋ฌ๊ฐ ์ ๋๊ฒ ๋ถ๊ธฐ ์ฒ๋ฆฌํ๋ ์๊ฐ์ ๋นผ๋ฉด ๋งํ๋ ๋ถ๋ถ์ด ์์๋ค.
๋ฆฌํฉํ ๋ง์ ๋ชป ํด๋ ํ์์ฒ๋ผ ํด๋ฆฐ ์ฝ๋ฉ๋ ํ๊ณ , ๊ฐ๋ ์ฑ์ ์ต์ฐ์ ์ผ๋ก ๊ฐ๋ฐํ๋ค. ์๋ฌด๋๋ ์ต๊ด์ธ์ง๋ผโฆ
api
๋ถ๋ถ์์ ์ค๋ฅ๊ฐ ๋ ๋ฒํ๋ฐ, ์ฒ์์ ์ ์๋ ์ฝ๋๊ฐ ์ค๋ฅ ์์ด ์์ ํ ์ ์๋ํ๋ ๊ฑธ ๋ณด๊ณ ๋ฟ-๋ฏ๐
์ด๋ ๊ฒ ์ฌ์ฐ๋ฉด ์ฑ๋ฆฐ์ง๊ฐ ์๋์ง
๋ฌธ์ ๋ ๋ค๋ฅธ ๋ถ๋ถ์ ์์๋ค. ํ๋ฉด์ ๊ตฌํํ๋ ๊ฒ์๋ ๋ฌธ์ ๊ฐ ์์๋ค. SPA
์ฒ๋ผ ํด์ฃผ๋ฉด ๋์ผ๋๊น.
ํ๋ ์ด๋ฒ ์ฑ๋ฆฐ์ง์์๋ ์ ๋ฒ๊ณผ ๋ค๋ฅธ ์ ์ด ์์๋ค. ๋ฐ๋ก routing
์ ๊ตฌํ์ด์๋ค.
์?! vue-router
๋ react-router
๋ฅผ ๊ฐ์ ธ๋ค ์ด ์ ์ ์์ด๋ ๊ทธ ๋ด๋ถ ๊ตฌํ์ ๋ณธ ์ ์ ์์๋คโฆ
โ์ค๋ง index.html
์ฌ๋ฌ ๊ฐ๋ก ๋ง๋ค์ด?โ, โ์๋์ผ SPA
์์ url
์ ์์์๋ผ๊ณ ํ์ผ๋๊น ๋์ถฉ ๋ฐ๊ฟ์น๊ธฐ ํ๋ฉด ๋๋?โ
์คํ๋ถ์ด๋๊น ๊ตฌ๊ธ๋ง์ผ๋ก ์ฐพ์๋ณด๋ ค๊ณ ํ์ง๋ง ๋๋ฌด๋๋ ์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก SPA
๋ผ์ฐํ
๋ฐ๋ผํ๊ธฐ ๋ผ๋ ์ ๋์ค์ง๋ ์๊ณ , ์๊ฐ๋ ์ด๋ฐํ๋คโฆ
์คํ๋ถ ํน์ง) ์ฑ ๋ณผ ์๊ฐ ์์. ์ฑ ๋ด๋ ๋ชป ํ.
๊ทธ๋์ ๊ฒฐ๊ตญ url
์ ๋ชป ๋ฐ๊พธ๊ณ ํ ํ์ด์ง์์ ์ผ๋จ ๊ตฌํํ๊ธฐ๋ก ๊ฒฐ์ ํ๊ณ ๋์ด๊ฐ๋คโฆ ์๊ฐ์ด ๋จ๊ฒ ๋๋ฉด ๊ทธ๋ ์๋ ํด๋ณด๋ ๊ฑธ๋กโฆ
ํ๋ฉด ๊ตฌํ์ ๋ค ํ์ ๋ฌด๋ ต, ๋จ์ ์๊ฐ์ด 30๋ถ ์ ๋์๋ค.
์?!
์์ง ํ๋ฉด ๋ด์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊พธ๋ ๊ฒ๋ ๊ตฌํ ๋ชปํ๋๋ฐ์โฆ?? ๋๋ฏธ ๋ฐ์ดํฐ ๊ฐ์ง๊ณ ์์ง์๋๋ฐ์??
๊ฒ๋ค๊ฐ ์ธ ๋ฒ์งธ ํ์ด์ง์์๋ api
๋ฅผ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํด์ผํ๋ ๊ฒ์ด๋ผ๋ ๋ฌผ์์ด ๋ค์์ง๋ง, ๋คํํ ์บ์ฑ
์ด ์๊ฐ๋์ ๊ทธ๊ฑธ๋ก ๋์ด๊ฐ๊ธด ํ๋ค.
ํ๋ ๋ด๊ฐ ํ๋์ url
์์ ์์ง์ด๋๋ก ๋ง๋ค์ด์ ๊ฐ๋ฅํ ๊ฒ์ด์์ง, url
์ ํตํด ๋จ๋ฒ์ ์ธ๋ฒ์งธ ํ์ด์ง๋ก ๋ค์ด์ค๋ฉด ์ด์ ํ์ด์ง์์ ๋ถ๋ฌ์จ ๋ฐ์ดํฐ๊ฐ ์บ์ฑ
์ด ๋์ด์์ง ์์ผ๋ ์ค๋ฅ๊ฐ ๋ ๊ฒ์ด ๋ปํ๋ค.
๊ทธ๋์ ๊ทธ ์์๋๋ ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ๋ค๊ฐโฆ ์๊ฐ์ด ๋ค ๋๋คโฆ
1์๊ฐ๋ง ๋ ์ค์ใ ใ
์ฌ์ค ํ์์๋ ๊ณผ์ ํ
์คํธ์ ์์ ์ด ์๋ค๊ณ ์๊ฐํด์๋ค. ํ์ง๋ง ์ด๋ฒ ์ฑ๋ฆฐ์ง๋ฅผ ํตํด ๋ด๊ฐ ์๊ฐ๋ณด๋ค๋ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ ์์ํฌ์ ์์กดํ๊ณ ์๋ค๋ ๊ฒ์ ๊นจ๋ฌ์๋ค.
์๊ฐ์ด 1์๊ฐ ๋ ์์๋ค๋ฉด ๋ชจ๋ ๊ตฌํ์ด ๊ฐ๋ฅํ๊ฒ ์ง๋ง, ๊ฒฐ๊ตญ ๋ผ์ฐํ
์ ๊ตฌํํ์ง๋ ๋ชปํ์ ๊ฒ์ด๋คโฆ ๊ณ ์ํด์ผ ๊ฐ์ ๋ก url
์ ๋ฐ๊พธ๋ ๊ฒ๋ฟ์ด์์ ํ
๋ค.
๊ทธ๋์ ์ข ๋ถํ๊ธฐ๋ ํ๋คโฆ ๊ทธ๋ฆฝ์ต๋๋ค ๋ฆฌ์กํธ ์ผ์ธโฆ
ํฌ์ฝ ํ๋ ์์ํฌ๋ง ์์์ด๋โฆ!!
์ด๋๋๊ณ ์ฑ์ฉ๋๊ธธ ๋ฐ๋ผ๋ฉด ๊ทธ๊ฒ ์์ฌ์ด๋ค
๊ทธ๋๋ 3์๊ฐ ๋์์ด๋ ์ผ ์์ด ๊ฐ๋ฐํ๋ ์๋ ํด์ปคํค ์๊ฐ์ด ๋๊ธฐ๋ ํ๊ณ ์ง์คํ๊ธฐ์ ์ข์ ๊ฒฝํ์ด์๋ค. ๋ง์ฝ ํ๋ฝ์ด ๋์ ๊ฐ๋ฐ ํ์ด๋ฅผ ์ธ ์ ์๊ฒ ๋๋ค๋ฉด ๊ทธ ํ์ด๋ ํด๋ณด๊ณ ์ถ๋ค. ์๋ง ๊ทธ ์ ์ ๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ผ์ฐํ ํ๋ ๋ฐฉ๋ฒ์ ๊ณต๋ถํด์ผ๊ฒ โฆ
๊ทธ๋ ์ง๋ง ๊ณผ์ ๊ตฌํ์ ์ ์ ์ ์ด๋๊ณ ! ๋ค์ ์ฃผ์ ์๋ ์ ๊ตญ๋ฏผ ์ฝ๋ฉํ ์คํธ, ์นด์นด์ค ์ฝํ ๋ฅผ ์ค๋นํ๋ฌ ๊ฐ๋ด ์๋ค!