2018๋ 8์ 10์ผ Vue CLI 3๊ฐ ์ ์ ๋ฆด๋ฆฌ์ฆ๋์์ต๋๋ค.
Vue CLI๋ React์ย create-react-app์ฒ๋ผ Vue ํ๋ก์ ํธ๋ฅผ ์์ฝ๊ฒ ๋ง๋ค ์ ์๋๋ก ๋์์ฃผ๋ ์ปค๋งจ๋ ๋ผ์ธ ๋๊ตฌ ์
๋๋ค. ์ด๋ฒ ํฌ์คํธ์์๋ Vue CLI 3 ์ฌ์ฉ๋ฒ์ ๋ํด์ ๊ฐ๋จํ๊ฒ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
Vue CLI ํจํค์ง ์ด๋ฆ์ด ๋ฐ๋์์ต๋๋ค. ๊ธฐ์กด Vue CLI 2๋ย vue-cliย ์๋๋ฐ, ์ด๋ฒ Vue CLI 3๋ย @vue/cli๋ผ๋ ์๋ก์ด ํจํค์ง ์ด๋ฆ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ฐธ๊ณ ๋กย @ย ๋งํฌ๋ NPM์ ์ต๊ทผ์ ๋์
๋ย Scoped package๋ฅผ ์๋ฏธํฉ๋๋ค.
๋จผ์ ๊ธฐ์กด์ Vue CLI 2๋ฅผ ์ฌ์ฉํ๊ณ ์์๋ค๋ฉด,ย vue๋ผ๋ ์ปค๋งจ๋์ ๋ค์์คํ์ด์ค๊ฐ ๊ผฌ์ผ์ง๋ ๋ชจ๋ฅด๋ Vue CLI 2๋ฅผ ์ ๊ฑฐํ๊ฒ ์ต๋๋ค.
1 | $ npm r -g vue-cli |
๊ทธ๋ฆฌ๊ณ Vue CLI 3๋ฅผ ์ ์ญ์ผ๋ก ์ค์นํฉ๋๋ค.
1 | $ npm i -g @vue/cli |
์์ ๊ฐ์ดย 3์ผ๋ก ์์ํ๋ ๋ฒ์ ์ด ํ์ธ๋๋ฉด ์ค์น๊ฐ ์๋ฃ๋ ๊ฒ์
๋๋ค.
์๋ก์ด ํ๋ก์ ํธ๋ฅผ ์์ฑํด๋ณด๊ฒ ์ต๋๋ค. ์ ๋ ํ๋ก์ ํธ ์ด๋ฆ์ผ๋กย hello-vue-cli์ ์ฌ์ฉํ๊ฒ ์ต๋๋ค.
1 | $ vue create hello-vue-cli |
์์ ๊ฐ์ด ๋ํดํธ ์ค์ ์ผ๋ก ๊ฐ์ง ๋งค๋ด์ผํ๊ฒ ์ต์ ์ ์ ํํ ์ง ๋์ค๋๋ฐ์. ๋์ค์ ์ธ์ ๋ ์ง ์ต์ ์ถ๊ฐ๊ฐ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฅ ๋ํดํธ ์ค์ ์ ์ ํํ๊ฒ ์ต๋๋ค.
1 | โจ Creating project in /work/temp/hello-vue-cli. |
๊ทธ๋ฌ๋ฉด ๊ท์ฌ์ด ์์ด์ฝ๋ค์ด ๋์ค๋ฉด์ ํ๋ก์ ํธ ์์ฑ์ด ์งํ๋๊ณ ๊ธ๋ฐฉ ์ค์น๊ฐ ์๋ฃ๋ฉ๋๋ค.
์ํค๋๋๋ก ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ๋ก ๋ค์ด๊ฐ์ NPM ์ปค๋งจ๋๋ฅผ ๋ ๋ฆฌ๋ฉด ์์๊ฐ์ ์นํฉ ๊ฐ๋ฐ ์๋ฒ๊ฐ ๊ตฌ๋๋ฉ๋๋ค.ย npm run serveย ์ปค๋งจ๋๋ ๋ด๋ถ์ ์ผ๋ก ์นํฉ ๊ฐ๋ฐ ์๋ฒ์ธย webpack-dev-server๋ฅผ ์ฌ์ฉํฉ๋๋ค. (์นํฉ ๊ฐ๋ฐ ์๋ฒ์ ๋ํ ๋ถ์ฐ ์ค๋ช
์ย ๊ด๋ จ ํฌ์คํธ๋ฅผ ์ฐธ๊ณ ๋ฐ๋๋๋ค.)
1 | $ cd hello-vue-cli |
์ญ์ ์ํค๋๋๋ก ๋ธ๋ผ์ฐ์ ์์ย http://localhost:8080/์ ์ ์ํด๋ณด๋ฉด Vue ๋ก๊ณ ๊ฐ ๋๋ฅ ๋จ๋ฉด์ย Welcome to Your Vue.js App๋ผ๋ ๋ฉ์ธ์ง๋ฅผ ๋ณด์ค ์ ์์ ๊ฒ๋๋ค.
์ฌ๊ธฐ์ ๋๋๊ฒ๋ย npm installย ์ปค๋งจ๋๋ฅผ ํตํด NPM ํจํค์ง๋ฅผ ์ค์นํ์ง ์์๋๋ฐ๋ ๊ฐ๋ฐ ์๋ฒ๊ฐ ์๋ํ๋ค๋ ๊ฒ์ ์ ์ ์๋๋ฐ์. ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ณด์๋ฉด Vue CLI๊ฐ ์ด๋ฏธย node_modulesย ๋๋ ํ ๋ฆฌ๋ฅผ ์์ฑํด ๋๊ณ ๊ทธ ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ๋ชจ๋ ๋ค์ด๋ฐ์ ๋์์์ ์ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ ํ๋ก์ ํธ์์ ์ถ๊ฐ๋ก ํ์ํ ๋ชจ๋์ ํ๋ฌ๊ทธ์ธ ํํ๋ก ๋์ค์ ์ถ๊ฐ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
๋ฐ๋ผ์ ์ฒ์๋ถํฐ ๊ณผ๋ํ๊ฒ ์ค์ ํ ํ์์์ด ํ์ํ ๋๋ง๋ค ํ๋ฌ๊ทธ์ธ์ ์ถ๊ฐํ๋ฉด์ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํฉ๋๋ค.
์์ ํ๋ก์ ํธ์์๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ Vue Router์ Vuex ํ๋ฌ๊ทธ์ธ์ ์ถ๊ฐํด๋ณด๊ฒ ์ต๋๋ค.
๋จผ์ Vue Router ํ๋ฌ๊ทธ์ธ์ ์ถ๊ฐํด๋ณด๊ฒ ์ต๋๋ค.
1 | $ vue add router |
์ญ์ ์์ด์ฝ๋ค์ด ๋์ค๋ฉด์ ํ๋ฌ๊ทธ์ธ์ด ์ถ๊ฐ๋ฉ๋๋ค. ํ๋ฌ๊ทธ์ธ์ ์ถ๊ฐํ๋ฉด์ ์ด๋ค ํ์ผ๋ค์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ถ๊ฐํ์๋์ง ๋์์ ์ข์ต๋๋ค.
Vue Router ์ค์ ํ์ผ์ธย router.js์ ์ด์ด๋ณด๋ฉดย /๊ณผย /aboutย ๊ฒฝ๋ก์ ๋ํ ๋ผ์ฐํ
์ ๋ณด๋ง ์ธํ
๋์ด ์์ต๋๋ค. ์ถํ๋ก ํ์ํ ๊ฒฝ๋ก์ ๋ํด์ ์ด ๊ณณ์ ์ธํ
์ ํ๋ฉด ๋ฉ๋๋ค.
1 | import Vue from 'vue' |
๊ทธ๋ฆฌ๊ณ ย main.jsย ํ์ผ์๋ ๋ผ์ฐํฐ ์ค์ ์ ์ํ 2์ค์ ์ฝ๋๊ฐ ์ถ๊ฐ๋์์์ ํ์ธํ ์ ์์ต๋๋ค.
1 | import Vue from 'vue' |
๋ค์์ผ๋ก Vuex ํ๋ฌ๊ทธ์ธ์ ์ถ๊ฐํ๊ฒ ์ต๋๋ค.
1 | $ vue add vuex |
๋ง์ฐฌ๊ฐ์ง๋ก ์์๊ฐ์ Vuex ํ๋ฌ๊ทธ์ธ์ด ์ถ๊ฐ๋ฉ๋๋ค.
Vuex ์ค์ ํ์ผ์ธย store.js๋ฅผ ์ด์ด๋ณด๋ฉด, Vuex์ ๊ตฌ์ฑ ์์์ธ State์ Mutations, Actions์ ์ ์ํ ์ ์๋ ๊ธฐ๋ณธ ๋ผ๋๊ฐ ์กํ์ ธ์์ต๋๋ค. (์ Getters๋ ๋น ์ ธ์๋์ง ๋ชจ๋ฅด๊ฒ ๋ค์?) ๊ฐ๋ฐํ์๋ฉด์ ํ์ํ ์ฝ๋๋ฅผ ์ด ๊ณณ์ ์ถ๊ฐํด ๋๊ฐ๋ฉด ๋ฉ๋๋ค.
1 | import Vue from 'vue' |
๊ทธ๋ฆฌ๊ณ ย main.jsย ํ์ผ์๋ Vuex ์ค์ ์ ์ํ 2์ค์ ์ฝ๋๊ฐ ์ถ๊ฐ๋์์์ ํ์ธํ ์ ์์ต๋๋ค.
1 | import Vue from 'vue' |
๋ง์ง๋ง์ผ๋กย npm run buildย ์ปค๋งจ๋๋ฅผ ์คํํ์ฌ ์์ฉ ๋ฐฐํฌ๋ฅผ ์ํ ๋น๋๋ฅผ ํด๋ณด๊ฒ ์ต๋๋ค. ๋น๋๋ฅผ ์คํํ๋ฉด Vue CLI๊ฐ ์นํฉ์ ํตํด ํ๋ก์ ํธ์ ๋ชจ๋ ์์ค ํ์ผ๋ค์ ๋ฒ๋ค๋งํ์ฌย distย ๋๋ ํ ๋ฆฌ์ ๋ฃ์ด์ค๋๋ค.
1 | $ npm run build |
์ดย distย ๋๋ ํ ๋ฆฌ๋ฅผ ๋ณด๋ฉดย index.htmlย ํ์ผ๋ค์ ํฌํจํ ์นํฉ์ด ๋ฒ๋ค๋งํ ํ์ผ๋ค์ ํ์ธํ ์ ์์ต๋๋ค. ์ด ํ์ผ๋ค์ ์์ฉ ๋ฐฐํฌ์ ์ ํฉํ๋๋ก ์นํฉ์ด ์ต์ ํ ํด๋์ ๊ฒ์
๋๋ค.
๊ฐ๋ฐ ์๋ฒ๋ฅผ ๊ตฌ๋ํ๊ฑฐ๋ ์์ฉ ๋น๋๋ฅผ ํ ๋ NPM ์ปค๋งจ๋๋ฅผ ์ฌ์ฉํ ์ ์์๋ ์ด์ ๋ Vue CLI๊ฐ ๊ด๋ จย vue-cli-serviceย ์ปค๋งจ๋๋ฅผ NPM ์คํฌ๋ฆฝํธ๋กย package.jsonย ํ์ผ์ ๋ฑ๋กํด๋์๊ธฐ ๋๋ฌธ์
๋๋ค.
1 | "scripts": { |
NPM ์ปค๋งจ๋ ๋์ ์ Vue CLI Service ์ปค๋งจ๋๋ฅผ ์ง์ ์ฌ์ฉํ๊ณ ์ถ์ผ์๋ฉด,ย npxย ์ปค๋งจ๋๋ฅผ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค.
1 | $ npx vue-cli-service serve |
์ฌ๊ธฐ๊น์ง ์ ๋ฐ๋ผ์ค์ จ๋ค๋ฉด Vue CLI๊ฐ ๋ค์๊ณผ ๊ฐ์ด ๊น๋ํ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ก์์คฌ์ ๊ฒ์ ๋๋ค. ์ด์ ๊ฐ์ด Vue CLI๋ฅผ ์ด์ฉํ๋ฉด ๋งค์ฐ ์์ฝ๊ฒ Vue ํ๋ก์ ํธ์ ๊ธฐ๋ณธ ๊ณจ๊ฒฉ์ ์ป์ ์ ์์ต๋๋ค.
1 | . |
์ง๊ธ๊น์ง ๊ฐ๋จํ๊ฒ Vue CLI 3์ ๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ๋ฒ์ ๋ํด์ ์ดํด๋ณด์์ต๋๋ค. ๊ฐ์ธ์ ์ผ๋ก Vue CLI 2๋ ๋ง์กฑํ๋ฉด์ ์ฌ์ฉํ๊ณ ์์๋๋ฐ, Vue CLI 3๋ ๋์ฑ ๊ฐ๊ฒฐํ๊ณ ์ ์ฐํด์ง ๋๋์ ๋๋ค. Vue CLI 2๋ฅผ ์ฌ์ฉํ ๋๋ ๋๊ฐ์ ๊ธฐ๋ฅ์ ์ํด์ ์ด๋ค ๊ธฐ์ ์ ์ฌ์ฉํด์ผ ํ ์ง์ ๋ํด์ ๊ณ ๋ฏผํ์๋๋ฐ, (์๋ฅผ ๋ค์ด webpack์ ์ธ์ง browserify๋ฅผ ์ธ์ง) Vue CLI 3์์๋ ์ด๋ฐ ๋ถ๋ถ์ ๋ชจ๋ ์ถ์ํ ์์ผ๋์์ ๋จ์ํ ์ด๋ค ๊ธฐ๋ฅ์ด ํ์ํ์ง์ ๋ํด์๋ง ์ ๊ฒฝ์ ์ฐ๋ฉด ๋์ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ฌํ ์์ฌ๊ฒฐ์ ์ ํ๋ก์ ํธ ์์ฑํ ๋ ๊ฐ์ ๋ฐ์ง ์๊ณ , ๋์ค์ ํ์ํ ๋ ๋ง๋ค ํ๋ฌ๊ทธ์ธ ํํ๋ก ์ถ๊ฐ๊ฐ ๊ฐ๋ฅํด์, ์ฒ์๋ถํฐ ๋ณต์กํ ๊ตฌ์กฐ์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์ง ์์๋ ๋ฉ๋๋ค. ๊ฒ๋ค๊ฐ Vue CLI ์ปค๋งจ๋๋ฅผ ์คํํ๋ฉด NPM ํผํค์ง ๋ค์ด๋ก๋๊น์ง ํด์ค์ ํ์ธต ํธํด์ง ๊ฒ ๊ฐ์ต๋๋ค.