ํฐ์คํ ๋ฆฌ ๋ทฐ
์ผ๋จ Vue js์ Nuxt์ ๋ํ ์ธ๋ถ์ ์ธ ๋ด์ฉ์ด ์๋ ๋ถ๋ถ์ ์ํด๋ถํ๋๋ฆฝ๋๋ค.
Nuxt๋ฅผ ์ฌ์ฉํ๊ณ ๋์ ๊ฒช์๋ ์ฅ๋จ์ ๋ค์ ์ ์ด๋ณด๋ ค ํฉ๋๋ค.
์ง๊ด์ ์ธ
Vue ํ๋ ์์ํฌ
์น ๊ฐ๋ฐ์ ์ฝ๊ณ ๊ฐ๋ ฅํ๊ฒ ๋ง๋ค์ด์ฃผ๋ ์คํ์์ค ํ๋ ์์ํฌ์ธ Nuxt.js๋ก ์ฌ๋ฌ๋ถ์ ๋ค์ Vue.js ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค์ด๋ณด์ธ์.
Nuxt ๊ณต์ ํํ์ด์ง์ ๋์์๋ ๋๋ฌธ ๋ฌธ๊ตฌ์ ๋๋ค. ์ ๋ง ๊ทธ๋๋ก Vue๋ฅผ front-end ๋๊ตฌ๋ก ์ฌ์ฉํ๊ธฐ ์ฝ๊ฒ๋ ๋ง๋ค์ด์ง framework์ ๋๋ค.
๊ณต์ ํํ์ด์ง๊ฐ ํ๊ธ๋ก ์ด๋ฏธ ๋ฒ์ญ์ด ๋์ด์์ด์ ์์ธํ ์ค๋ช ์ ๊ณต์ ํํ์ด์ง๋ฅผ ์ฐธ์กฐํ๋๊ฒ ๊ฐ์ฅ ์ ํฉํฉ๋๋ค. ์ด ๊ธ์์ ์ง์ NUXT JS๋ก ๊ฐ๋ฐ์ ํ๋ฉด์ ๊ฒช์๋ ๋ด์ฉ๋ค์ ์์ฃผ๋ก ์์ฑํ์์ต๋๋ค.
๊ธฐ์กด์ Vue๋ฅผ ์ฐ๋ฉด์ ํ์ํ๋ ์์ ๋ค...
๋จํธ์ ์ผ๋ก vue๋ฅผ ์ฌ์ฉํ๋ค๋๊ฑด ๊ทธ๋ฆฌ ์ด๋ ค์ด ์ผ์ด ์๋๋๋ค. vue ๊ณต์ ํํ์ด์ง์ ๋์จ๋๋ก ๋ฐ๋ผํ๋ฉด ํ๋ฉด์ ๋ง๋ค๊ณ ํด๋น ํ๋ฉด์ ์น์ ๋์ฐ๋๊ฑด ์ ๋ง ์ฝ๊ฒ ์ค๋ช ์ด ๋์ด์๊ตฌ์.. ๋จ, vue์์ ์ ๊ณตํ๋ ์ฌ๋ฌ ๊ธฐ๋ฅ๋ค์ ์ฌ์ฉํ๊ธฐ ์ํด ๋ช๋ช ์ค์ ์์ ๋ค์ด ํ์ํ๊ฒ ๋ฉ๋๋ค. ํ์๋ ์๋์ง๋ง ๋จ์ ์ค์ต์ฉ์ผ๋ก ์ฌ์ฉํ๋๊ฒ ์๋๋ผ๋ฉด ํ์ํ ์์ ๋ค์ ๋๋ค.
- ๋ฐฑ์๋ ํ๋ก์ ํธ์์ ์ฐ๋์์
: Vue๋ front-end์์ ์ฌ์ฉํ๋ ํ๋ ์์ํฌ์ ๋๋ค. ์ฆ server ์ ๊ฐ๋ ์ ๊ฐ์ง๊ณ ์์ง ์๊ธฐ ๋๋ฌธ์ ํํ ๋งํ๋ server์ API ํธ์ถ์ ํ๋ ๋ก์ง์ ๊ตฌํํ๋ ค๋ฉด ์๋ฒ ํ๋ก์ ํธ์์ ์ฐ๋ ์์ ์ด ํ์ํฉ๋๋ค. ๋ณดํต Proxy์ ๊ด๋ จ๋ ์์ ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๊ณ , Vue์์ ์๋ฒ์ชฝ ์์ค์ API๋ฅผ ํธ์ถํ ์ ์๊ฒ๋ ํ๊ฒฝ์ ์ก์์ค์ผ ํฉ๋๋ค. - Webpack ์์
: webpack ์ ์ฐธ ์ข์ ๋๊ตฌ์ด๋ฉด์๋ ๊ท์ฐฎ์ ๋ถ๋ถ์ค์ ํ๋์ ๋๋ค. webpack ์ ๋ํ ์์ธํ ์ค๋ช ์ ํ๋ ค๋ฉด ๋ณ๋์ ๊ธ์ ์์ฑํด์ผ ํ ๋งํผ ํ๋ ๊ธฐ๋ฅ๋ ๋ค์ํ๊ณ ์ค์ ๋ ๊ฐ์ง๊ฐ์์ ๋๋ค. ์์ฃผ ๋จํธ์ ์ธ ๋ด์ฉ๋ง ์ฒจ๋ถํ์๋ฉด ๋ชจ๋ ๋ฒ๋ค๋ง ๋๊ตฌ๋ผ๊ณ ๋ค ํ๋๋ฐ, webpack์ config ํ์ผ์ ์์ฑ๋ ๊ท์น๋ค์ ์ฐธ์กฐํ์ฌ ํ๋ก์ ํธ์ ํ์ํ ๋ชจ๋ ๋ชจ๋์ ๋งคํํ๊ณ ๋ฒ๋ค์ ์์ฑํ๋ ์์ ์ ์ํํฉ๋๋ค. - Vue์์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ธฐ๋ฅ๋ค ์ถ๊ฐ
: Vue์์ ๊ณต์์ ์ผ๋ก ์ ๊ณตํด์ฃผ๋ ๋ช๋ช ๋ชจ๋๋ค์ด ์์ต๋๋ค. ๊ฑฐ์ ํ์์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ถ๋ถ๋ค์ด์ฃ . ์๋ฅผ๋ค๋ฉด ์ํ๊ด๋ฆฌ๋ฅผ ์ํ Vuex ๋ Vue์์ ์ฌ์ฉํ๋ ๋ผ์ฐํฐ์ธ Vue Router ๊ฐ ๋ํ์ ์ด์ฃ .
์ด ์ธ์ ๋ง์ ์์ ๋ค์ด ์๊ฒ ์ง๋ง ํฌ๊ฒ ์ธ ๊ฐ์ง๋ง ์ ์ด๋ณด์์ต๋๋ค. ๋ฌผ๋ก ๊ทธ ๋ด์ฉ๋ ์์ธํ๊ฒ ์ ์๊ฑด ์๋๊ธด ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ์์ ๋ค์ Vue ๊ณต์ ์ฌ์ดํธ์์๋ ๋ค ์น์ ํ๊ฒ ๊ฐ์ด๋ํด์ฃผ๋ ๋ด์ฉ๋ค์ด๊ธฐ๋ ํฉ๋๋ค.
NUXT.js๋ก ๊ฐํธํ๊ฒ!(create-nuxt-app)
Nuxt.js ํ์ ๋น ๋ฅธ ์์์ ์ํด create-nuxt-app๋ผ๋ ํด์ ๋ง๋ค์์ต๋๋ค. Server side ํ๋ก์ ํธ๋ฅผ Node.js ๋ก ์ฌ์ฉํ๋ค๋ ๊ฐ์ ํ์ Node.js์ Vue.js๋ฅผ ์ฌ์ฉํ๋ ํ๋์ ํ๋ก์ ํธ๋ฅผ ์๋์ผ๋ก ์์ฑํด์ค๋๋ค. ์ฌ์ฉ์๊ฐ ํ๋ก์ ํธ ๊ตฌ์กฐ๋ฅผ ์ฒ์๋ถํฐ ์ก๋ ๊ฒฝ์ฐ์ ๋ํ ๊ฐ์ด๋๋ ์์ง๋ง, ์ ๊ฐ์ธ์ ์ผ๋ก ์ ํด๋ก ๋ง๋ค์ด์ง ๊ตฌ์กฐ๊ฐ ๋์์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ํด๋น ํด๋ก ๋ง๋ค์ด์ง ํ๋ก์ ํธ๋ ์์์ ์ธ๊ธํ๋ 3๊ฐ์ง ์์ ๋ค์ ๋ค ํฌํจํ ์ฑ๋ก ์๋์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์์ฑํด์ค๋๋ค.
์ฌ์ฉ๋ฒ๋ง ์ตํ๋ฉด ๋๋ค.
Nuxt.js ๊ณต์ ํํ์ด์ง์์ ์์ธํ๊ฒ ๊ฐ์ด๋๋ฅผ ํด์ค๋๋ค. server ํ๋ก์ ํธ์ ์๋ router๋ฅผ ํธ์ถํ๋ ค๋ฉด ์ด๋ป๊ฒ ์จ์ผํ๋์ง, Vuex๋ฅผ ์ฐ๋ ค๋ฉด ์ด๋ ๋๋ ํ ๋ฆฌ์ ์ด๋ค ํ์ผ์ ์์ฑํด์ผํ๋์ง, module ์ฌ์ฉ์ ํ๋ ค๋ฉด config ํ์ผ์ ์ด๋ป๊ฒ ์์ฑํด์ผํ๋์ง, ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐธ์กฐํ๋ ค๋ฉด ์ด๋ ํ์ผ์ ์์ฑํด์ผํ๋์ง, webpack ๋น๋์ ๋ํด์ ์ถ๊ฐ์ ์ธ ์ฌํญ์ ๋ฃ์ผ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ๋์ง ๋ฑ๋ฑ ์ฌ์ฉ๋ฐฉ๋ฒ์ ๋ํ ๊ฐ์ด๋๊ฐ ์ ๋์ด์์ต๋๋ค. ํด๋น ๊ธฐ๋ฅ๋ค์ ๋ํ ๋ด๋ถ์ ์ธ ๋ก์ง์ ์์ธํ ์ค๋ช
ํด์ฃผ๋๊ฑด ์๋๋๋ค. ๋๋ฌธ์ ์ฌ๊ธฐ์ ๋ฌธ์ ์ ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
WHY?
ํ๋ ์์ํฌ๋ผ๋๊ฑด ์ด๋ฏธ ๋ง๋ค์ด์ ธ์๋ ๊ตฌ์กฐ์ ์ ํด์ง ๊ท์น๋๋ก ์ฝ๋๋ฅผ ์์ฑํ๊ณ ํ์ผ์ ์์ฑํด์ผ ์ค๋ฅ์ ์ํ์ด ์ ์ต๋๋ค. ํ์ง๋ง ๋ชจ๋ ํ๋ก์ ํธ์ ๊ตฌ์กฐ์ Nuxt.js ์ ๊ตฌ์กฐ๊ฐ ๋ง๋ค๊ณ ๋งํ ์ ์์ต๋๋ค. ์ด ๋ถ๋ถ์ ๋๋ ์ด์ ๋ ๋ค์์ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
Vue ๋ SPA์ ์ ํฉํ๋ค!
์ ํต์ ์ธ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ํ์ด์ง์ ๋ฐ๋ผ์ ํ์ด์ง๋ฅผ ํธ์ถํ๋ ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค. ํ์ง๋ง, SPA๋ ๋จ ํ๋ฒ์ ํธ์ถ๋ง์ผ๋ก ํ๋์ ํ์ด์ง์์ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ์ผ๋ก ํ์ด์ง๋ฅผ ๊ทธ๋ฆฝ๋๋ค. Vue๋ React, Angular ๋ SPA ํ๋ก์ ํธ๋ฅผ ๋ง๋๋ ๋ํ์ ์ธ ํ๋ ์์ํฌ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ๋๋ค.
๊ทธ๋ผ ๊ธฐ์กด ๋ฐฉ์์ผ๋ก ๋ชป๋ง๋๋ ๊ฒ์ธ๊ฐ?
๋น์ฐํ ๊ทธ๋ ์ง ์์ต๋๋ค. Nuxt.js ์์๋ SPA ํ๋ก์ ํธ์ Universal ํ๋ก์ ํธ ์ ํ์ง๋ฅผ ์ ๊ณตํฉ๋๋ค. Universal์ ์ ํต์ ์ธ ๋ฐฉ์์ ํ๋ก์ ํธ๋ผ๊ณ ์๊ฐํ์๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
SPA๊ฐ ๋์ธ๋ก ์ฌ๋ผ์ค๊ธด ํ์ง๋ง, SPA๊ฐ ๋ฌด์กฐ๊ฑด ์ข๋ค๋๊ฑด ์๋๋๋ค.๊ฐ๊ฐ์ธ์ ์น ํ๋ก์ ํธ ๋ชฉ์ ์ ๋ฐ๋ผ์ ํ์ํ ๊ตฌ์กฐ๊ฐ ์๊ณ , ์ ๋ํ SPA๋ฅผ ์ ์ฉํ์ง ์์ผ๋ฉด์ Nuxt.js๋ฅผ ์ฌ์ฉํ์์ต๋๋ค.
maybe.works/blog/spa-vs-mpa-pros-cons-and-gotchas
์ ๊ธ์ ๋ด์ฉ์ ์ฐธ์กฐํ์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
์ ํต์ ์ธ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ฐฉ์
์์์ ๋งํ๋ ๊ฒ์ฒ๋ผ ์ SPA ๋ฐฉ์์ ์ฌ์ฉํ์ง ์์๊ธฐ๋๋ฌธ์, ํ์ด์ง๋ง๋ค ์ฌ์ฉํ๋ ๋ฆฌ์์ค๊ฐ ๋ฌ๋์ต๋๋ค. ์๋ฅผ๋ค๋ฉด A๋ผ๋ ํ์ด์ง์์๋ A๋ผ๋ ๋ฆฌ์์ค๋ง ์ฐ๊ณ B๋ผ๋ ํ์ด์ง์์ B๋ผ๋ ๋ฆฌ์์ค๋ง ์ฐ๊ธฐ๋๋ฌธ์ ๊ตณ์ด A ํ์ด์ง์ B ๋ฆฌ์์ค๋ฅผ ๋ก๋์ํฌ ์ด์ ๊ฐ ์๊ฒ๋์ฃ . ๊ทธ๋ฆฌ๊ณ ์ ํต์ ์ธ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ํ์ด์ง ์ด๋์์ ํ์ด์ง ์์ฒด๊ฐ ์๋ก ํธ์ถ๋๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ํธ์ถ์์ ์ ๋ํ ๊ด๋ฆฌ๊ฐ ํธ๋ฆฌํฉ๋๋ค. ํ์ํ ๋ฆฌ์์ค๋ค์ ๋ชจ๋ ์๋ก ํธ์ถ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ํด๋น ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๋ ์์ค์ฝ๋๋ค์ด ๋ฆฌ์์ค๋ฅผ ์ฐพ์ง ๋ชปํ๋ ์ํฉ์ด ๋ฐ์ํ ๊ฒฝ์ฐ๊ฐ ๊ฑฐ์ ์์ต๋๋ค.
Nuxt.js ์์ SPA๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด?
Nuxt.js์์ ์ผ๋ฐ์ ์ผ๋ก ํ๋ก์ ํธ ๋ฃจํธ ๊ฒฝ๋ก์ nuxt.config ํ์ผ์ ๋์ด ์ ๋ฐ์ ์ธ ํ๋ก์ ํธ์ ์ค์ ์ ๊ด๋ฆฌํ ์ ์๊ฒ ๋ฉ๋๋ค. ํ์ง๋ง ํด๋น config๋ ํ๋ก์ ํธ ์ ์ฒด์ ๋ํ ๊ด๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ ๋ถ๋ถ์ ์ธ ์ค์ ์ ํ๋ ๊ฒ์ด ์๋๋๋ค. ์ฝ๊ฒ๋งํ๋ฉด ์ ์ญ๋ณ์๊ฐ์ ๋๋์ผ๋ก ๋ณด์๋ฉด ๋๊ฒ ์ต๋๋ค.
์๋ฅผ๋ค์ด nuxt.config ํ์ผ์ ์ธ๋ถ ๋ฆฌ์์ค๋ฅผ ์ฃผ์ ํ๋ฉด ๋ชจ๋ ํ์ด์ง์์ ํด๋น ๋ฆฌ์์ค๊ฐ ๋ก๋๋ฉ๋๋ค.
์ฌ์ค SPA์์๋ ์ ํ ๋ฌธ์ ๊ฐ ๋ ์ผ์ด ์๋๋๋ค. SPA๋ ์ ์ด์ ํ ๊ฐ์ ํ์ด์ง๋ก ๋ง๋ค์ด์ง๊ธฐ ๋๋ฌธ์ ๋ฆฌ์์ค๋ฅผ ํ๋ฒ์ ๊ฐ์ ธ์ค๋๊ฒ ๋ง๋ ์ปจ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
Nuxt.js์์ ๊ฐ๊ฐ์ ํ์ด์ง์ ๋ํ ๋ฆฌ์์ค ๋ก๋๋ฅผ ํ๋ ๋ฐฉ์์ ์ ๊ณตํด์ค๋๋ค. (์ฐธ์กฐ: ko.nuxtjs.org/faq/)
๊ทธ๋์ nuxt.config์ ๋ฃ์๊ฑธ ๊ทธ๋ฅ ๊ฐ ํ์ด์ง์ ๋ฃ์ผ๋ฉด ๊ทธ๋ง์ด๋ผ๊ณ ์๊ฐ์ ํ์์ต๋๋ค.
์ธ๋ถ ๋ฆฌ์์ค ์ฐธ์กฐ ํ ์คํ์ ๋ํ ๋ฌธ์ ๋ฐ์
์ ๊ฐ ํ๋๊ฑด A๋ผ๋ ํ์ด์ง์ google map ์ ๊ดํ ์ธ๋ถ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด์์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด A ํ์ด์ง์๋ง google map์ ๊ด๋ จํ ๋ฆฌ์์ค๋ฅผ ํฌํจ์ํค๋ ๊ตฌ๋ฌธ์ ์์ฑํ๋ฉด ๋๋๊ฑฐ๋ผ ์๊ฐํ์ต๋๋ค. ๋ค๋ง ํ ๊ฐ์ง ์ ์ฝ์ฌํญ์ด ์์์ต๋๋ค.
ํ์ด์ง๊ฐ ํธ์ถ๋์๋ง์ google map ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
์์ ๋ง์ google map์ ๊ดํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ด์ง์ ๋ก๋๊ฐ ์๋ฃ๋๊ณ , ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์คํํ ์ ์๋ ์ํ๊ฐ ํ์คํ๊ฒ ๋์ด์์ด์ผ ํ๋ค๋ ๋ง์ด ๋ฉ๋๋ค.
์ฌ๊ธฐ์ ์ด๋ ค์์ ๊ฒช์๋ ๋ถ๋ถ์ html์ ์ธ๋ถ ๋ฆฌ์์ค๊ฐ ์ฃผ์
์ด ๋์๋ค ํ๋๋ผ๋ ์คํ ๊ฐ๋ฅํ ์ํ๋ผ๊ณ ๋ณด์ฅํ ์ ์๋๊ฑด ์๋๋ผ๋ ๊ฒ์
๋๋ค.
๋ถ๋ช html ์์๋ google map ์ ๊ด๋ จํ ์ธ๋ถ ๋ฆฌ์์ค ์ฃผ์ ์ด ๋์๋๋ฐ ์ค์ง์ ์ผ๋ก ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ์ฝ๋์์๋ ์ฐธ์กฐํ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ก๋๋์ง ์์๋ค๋ ์๋ฌ๊ฐ ๋์์ต๋๋ค. ์ด๋ฏธ ๋ช๋ช ์ฌ๋๋ค๋ ํด๋น ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ๋ค์ ํฌ์คํ ํ๊ณ ์์์ต๋๋ค.(dev.to/bawa93/troubleshooting-and-adding-google-maps-to-individual-nuxt-js-pages-1d34)
๋ธ๋ผ์ฐ์ ๊ฐ ๋ฆฌ์์ค ์ฐธ์กฐ ๋ฐ ์คํ์ ์ด๋ค ์์๋ก ํ๋์ง, Nuxt.js ์์ ๊ฐ๊ฐ์ ํ์ด์ง์ ์ธ๋ถ ๋ฆฌ์์ค๋ฅผ ์ฃผ์ ์ํฌ ๋ ์ด๋ค ๋ฐฉ์์ผ๋ก ์ฃผ์ ์ ์ํค๋์ง ์ ํํ ์ ์๊ฐ ์์ด์ ๋ฐ์ํ๋ ๋ฌธ์ ๋ก ๋ณด์ ๋๋ค.
์ ์ฌํญ์ ์ด์ฉ ์ ์์ด nuxt.config ํ์ผ์ ๋ชจ๋์ ํฌํจ์์ผฐ์ต๋๋ค. google map ์ฌ์ฉํ๋ ๊ณณ์ด ํ ๊ตฐ๋ฐ๊ฐ ์๋์๊ณ , ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ก๋๊ฐ ๋๋ฉด ์๋์ผ๋ก ์ถ๊ฐ์ ์ธ script ๋ฆฌ์์ค๋ฅผ ์ฐธ์กฐํ์ฌ ์ฃผ์ ํ๋ ํํ๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ๋๋ฌธ์, ๋ง์ฝ ๋ค๋ฅธํ์ด์ง์์ google map ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํฌํจ์ํค๊ฒ ๋๋ฉด ์ค๋ณต๋๋ script ๋ฆฌ์์ค ์ฃผ์ ์ด ์ผ์ด๋๊ฒ ๋์ด์ ๋ฌธ์ ๊ฐ ์๊ธฐ๊ฒ ๋ฉ๋๋ค.
nuxt.config ํ์ผ์ ์ธ๋ถ ๋ฆฌ์์ค ์ฃผ์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์ ์ด์ ์๋ฒ ๊ตฌ๋์์ ์ ์ญ์ผ๋ก ๋ฆฌ์์ค๊ฐ ์ฃผ์ ๋๋๊ฑธ ํ์คํ๊ฒ ๋ณด์ฅํ ์ ์๊ธฐ๋๋ฌธ์ ์ผ๋จ ๊ด์ฐฎ์ ๋ฐฉ๋ฒ์ ์ฐพ๊ธฐ ์ ๊น์ง ํด๋น ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํํ์์ต๋๋ค. ๋ค๋ง, google map ์ด ํ์ํ์ง ์์ ํ์ด์ง์์ ๋ถํ์ํ๊ฒ ํด๋น ๋ฆฌ์์ค๋ฅผ ์ฃผ์ ํ๋ ์ํฉ์ด ๋ฐ์ํ๊ฒ ๋์ฃ .
๋ผ์ดํ์ฌ์ดํด์ ๊ดํ ๋ถ๋ถ์ ๊ณ ๋ฏผํด์ผํฉ๋๋ค.
์ฌ์ค Vue๋ React๋ฅผ ๋งํ๋ฉด์ ๊ฐ์ฅ๋จผ์ ์ธ๊ธํด์ผ๋๋ ์ปจ์ ์ด ๊ฐ์dom์ ๋ํ ์ปจ์ ์ ๋๋ค. ์ค์ dom์ ์กฐ์ํ๋ ๊ฒ์ด ์๋ ๊ฐ์์ dom์ ํตํด์ ํ์ด์ง๋ฅผ ์ ์ดํ๋ ์ปจ์ ์ ๊ฐ์ง๊ณ ์๋๋ฐ, ์ด๊ฑด Nuxt.js๋ผ์๊ฐ ์๋๋ผ Vue.js๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ํ์์ ์ผ๋ก ๊ณ ๋ คํด์ผํ๋ ๋ถ๋ถ์ ๋๋ค. ํ์ด์ง ์ด๋์ ๋ฐ๋ฅธ ๋ผ์ดํ์ฌ์ดํด์ ์ ๋ฐ์ ์ผ๋ก ์ดํดํ๊ณ ์์ด์ผ ์ด๋์์ ์ ์ด๋ค ๋ผ์ดํ์ฌ์ดํด์ ํจ์๋ฅผ ํธ์ถํด์ผํ๋์ง๋ฅผ ์ ํ ์ ์์ต๋๋ค. SPA์ ํํ๋ฉด Nuxt.js์์ ๊ฐ์ด๋ํ๋ ํํ๋ก ๋ฐ๋ผ๊ฐ ์ ์๊ฒ ์ง๋ง, ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฝ๊ฐ์ ๋ณ์๋ค์ด ์๊ธธ ์ ์์ต๋๋ค.
๊ทธ๋ผ ์ข์๋ ์ ์?
๋น๊ต ๊ธฐ์ค์ ๋ญ๋ก ๋๋์ ๋ฐ๋ผ ์ข ๋ค๋ฅด๊ฒ ์ง๋ง ์ผ๋ฐ์ ์ธ html ์์ฑ ์ฝ๋๋ก ๋น๊ตํ์ ๋ ์ปดํฌ๋ํธ ๊ตฌ์กฐ์ ์ฝ๋๋ฅผ ๊ต์ฅํ ์ฝ๊ฒ ์์ฑํ ์ ์๋ ์ ์ด์์ต๋๋ค. ๊ทธ์๋ฐ๋ผ ์ฌ์ฌ์ฉ๋ ํธํ๊ณ ์ฌ์ง์ด nuxt์์๋ layout์ด๋ผ๋ ๊ธฐ๋ฅ์ผ๋ก ์ปดํฌ๋ํธ์ ์ฌ์ฌ์ฉ์ฑ์ ๋ ํ์ฅ์์ผ์ฃผ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ ๋ฐ์ ์ธ ํ๋ก์ ํธ์ ๊ด์ ์ผ๋ก ๋ณธ๋ค๋ฉด ๊ธฐ์กด์ ์์ Vue.js๋ฅผ ํ๋ฉด์ ํด์ผํ๋ ์๋ฒ์ฌ์ด๋๋ ๋๋ง ์์ , webpack ์ค์ , ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ ์์ ๋ฑ์ ์๊ฐํ ํ์๊ฐ ๊ฑฐ์ ์์ด์ก๋ค๋ ๊ฒ๋๋ค.
์ ํด์ง ๊ท์น๋๋ก ์์ฑ๋งํ๋ฉด ์ ๊ฐ ์์ฑํ๋ ค๋ ๊ธฐ๋ฅ์๋ง ์ง์คํ ์ ์๋ค๋ ํฐ ์ฅ์ ์ด ์์ต๋๋ค.
๋ํ Vue.js ์์๋ ์๋ฒ ๋ฐ์ดํฐ์ ๋ํ ๊ฐ์ ์ฌ์ฉํ๋ ค๋ฉด api ํธ์ถ๊ณผ ๊ฐ์ ์ฝ๋๊ฐ ๋ฐ๋์ ํ์ํ๋ค๋ฉด, Nuxt.js์์๋ ๋ช๋ช ๊ธฐ๋ฅ๋ค์ ์ ๊ณตํด์ค์ ์์ ์ ๋ก์ฌํญ์ ํด๊ฒฐํด์ฃผ์์ต๋๋ค.
asyncData๋ nuxtServerInit Action์ ์ฐธ๊ณ ํ์๋ฉด ์ดํด๊ฐ ๊ฐ์ค๊ฒ๋๋ค.
๋ง์ง๋ง์ผ๋ก ์์ฌ์ ๋ ์
์์ฆ ์ถ์ธ๊ฐ Typescript๋ผ๊ณ ๋ค ํ์ฃ . ๊ธฐ์กด์ Vue๋ Typescript ์ฌ์ฉ์ 100% ์ง์ํ๋ค๊ณ ํ๊ณ ์๊ณ , Nuxt.js์์๋ Nuxt-ts๋ผ๋ ํ๋ก์ ํธ๋ก ์ง์์ ํ๊ณ ์์ง๋ง Nuxt๋ Vue์ ๋นํด์ ๊ณต์ ๋ฌธ์ ๋ด์ฉ์ด ์๋์ ์ผ๋ก ๋ถ์กฑํ ๊ฑธ๋ก ๋ณด์ ๋๋ค. ๊ทธ๋์ ์ง๊ธ ๋น์ฅ ์ค๋ฌด๋ก Nuxt-ts๋ฅผ ์ฌ์ฉํ๋ ๊ฑธ ํฌ๊ธฐํ๋ ์ด์ ์ด๊ธฐ๋ ํฉ๋๋ค.
ํ๋ค๋ณด๋ ๋ช๋ช ๋ฒ๊ทธ์ฌํญ๋ ์๋๊ฑธ๋ก ๋ณด์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ณ์ ๋งํ๋ ๊ฒ์ฒ๋ผ ๋ณดํต SPA ํ๋ก์ ํธ๋ฅผ ๋ง๋๋๊ฑธ ํ ๋๋ก ๊ฐ์ด๋๋ฅผ ํ๊ธฐ๋๋ฌธ์ ts๋ก ์ฝ์ง์ ํ ๊ธ๋ค์ ๊ฒ์ํ๋๊ฒ ์ข ์ด๋ ต๋๊ตฐ์.. ts ์์ฒด๋ฅผ ์์ง ์ ๊ฐ ์๋ฒฝํ๊ฒ ์ดํดํ์ง ๋ชปํด์ ๋ ์ด๋ ค์์ด ๋ง์์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค.
'Vue > ์ฝ์ง์ผ๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Vue ์ฝ์ง์ผ๊ธฐ ์คํ (0) | 2019.10.27 |
---|
- Total
- Today
- Yesterday
- nestjs module
- nestjs configService
- nestjs/cli
- nestjs config
- Spring Async
- sequelize
- Spring
- typeorm
- Promise bulk
- nestjs typeorm
- nestjs doc
- nestjs directory
- ํ๋ก๊ทธ๋๋จธ์ค
- JavaScript
- ๊ธฐ์์ฒญAPI
- docker mysql
- android
- DeferredResult
- @nestjs/config
- Request_Limit_Exceeded
- Promise error
- ์๊ณ ๋ฆฌ์ฆ
- NestJS
- nestjs project
- foreignkey
- typeorm ์ฐ๊ฒฐ
- backend-framework
- node.js backend
- node.js
- ๋น๋๊ธฐ ์์ฒญ
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |