Vue.js ์ฝ๋ ๊ณ ๊ณ ํ ์๋ฆฌ์ฆ 4
vue ๊ณ ๊ณ ํ ์๋ฆฌ์ฆ 4
Vue.js 1.x ๋ง์ด๋ ๋ฆด๋ฆฌ์ค ๊ธฐ์ ๊ณ ๊ณ ํ ๋ณด๊ณ ์
v1.0.10 ~ v1.0.15
- **๋ฐํ ์๊ธฐ*: 2015๋ 11์ ~ 2016๋ 1์
- **ํค์๋*: Vue.js 1.x, ๋ง์ด๋ ๋ฆด๋ฆฌ์ค, ์ปค๋ฐ ๋ถ์, ๋ฆด๋ฆฌ์ค ๋ ธํธ, ๊ธฐ์ ๊ณ ๊ณ ํ
๋ค์ด๊ฐ๋ฉฐ
Vue.js 1.x ์๋์ ๋ง์ง๋ง ๋ง์ด๋ ๋ฆด๋ฆฌ์ค๋ค(v1.0.10 ~ v1.0.15)์
- *์๋ก์ด ๊ธฐ๋ฅ ๊ฒฝ์์ด ์๋, ์์ฑ๋๋ฅผ ๋์ด๋ ์๊ฐ*์ด์์ต๋๋ค. ์ด ์๊ธฐ์ Vue๋ ์ด๋ฏธ โ์ธ ์ ์๋ ํ๋ ์์ํฌโ์๊ณ ,
์ด์ ๋ **โ๋ฏฟ๊ณ ์จ๋ ๋๋ ํ๋ ์์ํฌโ**๊ฐ ๋๋ ๊ณผ์ ์ ์์์ต๋๋ค.
์ด ๊ธ์ GitHub ์ปค๋ฐ ๋ก๊ทธ์ ๋ฆด๋ฆฌ์ค ๋ ธํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก
Vue 1.x ๋ด๋ถ ๊ตฌํ์ด **์ด๋ป๊ฒ ๋ค๋ฌ์ด์ก๋์ง**๋ฅผ ๊ณ ๊ณ ํ์ ์ผ๋ก ์ถ์ ํฉ๋๋ค.
> ์ด ์๊ธฐ๋ Vue 2๋ก ๋์ด๊ฐ๊ธฐ ์ ,
> **๊ธฐ์ด ์ฒด๋ ฅ์ ๊ทนํ๊น์ง ๋์ด์ฌ๋ฆฐ ๋ง๋ฌด๋ฆฌ ๊ตฌ๊ฐ**์ด๋ผ ๋ณผ ์ ์์ต๋๋ค.
๋ฐฐ๊ฒฝ: v1.0.9 โ v1.0.10
v1.0.9์ ์๋ฏธ (2015.11.23)
v1.0.9๋ ๊ธฐ๋ฅ๋ณด๋ค **๊ตฌ์กฐ**๊ฐ ๋ฐ๋ ๋ฆด๋ฆฌ์ค์์ต๋๋ค.
- ES2015 ๋ชจ๋ ๊ธฐ๋ฐ ๋น๋ ๊ตฌ์กฐ ๋์
- ๋ฐฐํฌ ํ์ผ ํฌ๊ธฐ ๊ฐ์
- CommonJS ๋จ์ผ ๋น๋ ์ ๊ณต (
vue.common.js) - Webpack / Browserify ๋น๋ ์ฑ๋ฅ ๊ฐ์ ์ด๋ Vue 2.x์ ๋ชจ๋ ๊ตฌ์กฐ๋ฅผ ์๊ฒฌํ๋ ๋ณํ์์ต๋๋ค.
v1.0.10์ ์ ๋์๋๊ฐ?
v1.0.9 ๋ฐฐํฌ ์งํ,
-
CDN/NPM ๋ฐฐํฌ ํ์ผ ๋ด๋ถ
Vue.version๊ฐ์ด **1.0.8๋ก ์๋ชป ํ๊ธฐ*๋๋ ๋ฌธ์ ๊ฐ ๋ฐ๊ฒฌ๋์์ต๋๋ค. v1.0.10์: -
*์ฝ๋ ๋ณ๊ฒฝ ์์
-
์ค์ง **๋ฒ์ ๋ฌธ์์ด ์์ *๋ง ํฌํจ ํ์ง๋ง ์ด ๋ฆด๋ฆฌ์ค๋ถํฐ Vue 1.x์ **๋ง์ง๋ง ์์ ํ ๊ตญ๋ฉด**์ด ์์๋ฉ๋๋ค.
v1.0.11 โ ์ด๋ฒคํธ & ์ฌ๋กฏ ์์ ํ
- **๋ฆด๋ฆฌ์ค*: 2015.12.25
ํต์ฌ ๋ณ๊ฒฝ ์์ฝ
1. Vue.set ๋ฐํ๊ฐ ์ถ๊ฐ
const result = Vue.set(obj, 'key', value)
- ์ด์ ์ค์ ํ
value๋ฅผ ๊ทธ๋๋ก ๋ฐํ - ์ฒด์ด๋ ๋ฐ ๊ฐ๋ ์ฑ ๊ฐ์
2. $arguments ์ด๋ฒคํธ ์ธ์ ์ง์
<child @update="handle($arguments[0])" />
- ์ฌ๋ฌ ์ด๋ฒคํธ ์ธ์๋ฅผ ๋ช ํํ๊ฒ ๋ค๋ฃฐ ์ ์์
3. ์ฌ๋กฏ(slot) ๋ฒ๊ทธ ์์
- ๊ธฐ๋ณธ ์ฌ๋กฏ + ๋ค์๋ ์ฌ๋กฏ ๋์ ์ฌ์ฉ ์ ๋ ๋๋ง ๋๋ฝ ๋ฌธ์ ํด๊ฒฐ
- IE9 ํ๊ฒฝ ํด๋์ค ๋ณํฉ ๋ฌธ์ ์์
4. ํธ๋์ง์ + ํด๋์ค ์ถฉ๋ ํด๊ฒฐ
v-bind:class+ transition ๋์ ์ฌ์ฉ ์ ํด๋์ค ๋๋ฝ ๋ฌธ์ ํด๊ฒฐ
5. $destroy(true) ์ ํ์ ์ปดํฌ๋ํธ detached ํ
๋ณด์ฅ
- ์ปดํฌ๋ํธ ํธ๋ฆฌ ์ ๋ฆฌ ์ ๋ขฐ์ฑ ํฅ์
6. v-model & ๋ธ๋ผ์ฐ์ ํ์คํ ๋ฆฌ ์ถฉ๋ ์์
- Chrome ๋ค๋ก๊ฐ๊ธฐ ์บ์๋ก ์ธํ ์ฒดํฌ๋ฐ์ค/๋ผ๋์ค ์ด๊ธฐ๊ฐ ์ค๋ฅ ํด๊ฒฐ > ํ๊ฐ
> โ์์ง๋ง ์ค์ ์๋น์ค์์ ์์ฃผ ํฐ์ง๋ ๋ฌธ์ ๋คโ์ ์ง์ค์ ์ผ๋ก ์ ๊ฑฐํ ๋ฆด๋ฆฌ์ค
v1.0.12 โ Props & ํผ ๋๋ ํฐ๋ธ ๋ณด๊ฐ
- **๋ฆด๋ฆฌ์ค*: 2015.12.25
ํต์ฌ ๋ณ๊ฒฝ
1. props.coerce ์ต์
๋์
(โ ๏ธ ์ดํ ์ ๊ฑฐ๋จ)
props: {
score: {
type: Number,
coerce: val => val + ''
}
}
- ๋ถ๋ชจ โ ์์ prop ๊ฐ์ ๊ฐ์ ๋ณํ
- Vue 2์์๋ *์ญ์
- ๋์
computed์ฌ์ฉ ๊ถ์ฅ > ์คํ์ ์ธ ๊ธฐ๋ฅ์ด์๊ณ ,
> โ์ปดํฌ๋ํธ๋ ์ ๋ ฅ์ ๊ฐ๊ณตํ์ง ๋ง๋ผโ๋ Vue ์ฒ ํ์ด ํ๋ฆฝ๋๋ ๊ณ๊ธฐ
2. v-model ์์ ์ฑ ๋ํญ ๊ฐ์
- ์ซ์
0์ฒ๋ฆฌ ์ค๋ฅ ์์ - fragment ์ ๊ฑฐ ํ blur ๋๊ธฐํ ์ค๋ฅ ์์
- debounce + blur ์ค๋ณต ์ ๊ฑฐ
3. ๋๋ ํฐ๋ธ ์์ ํ
v-showDOM ์ธ๋ถ ์ปดํ์ผ ๋ฌธ์ ํด๊ฒฐv-pre๋ฃจํธ ๋ ธ๋ ์ค๋ฅ ์์ - SVG ๋ด๋ถ ํด๋์ค ๋ฐ์ธ๋ฉ ํ๊ท ๋ฒ๊ทธ ์์
4. ๋ฐ์์ฑ ๋๋ฝ ๋ณด์
Vue.set/deleteํ shallow watcher ๊ฐ์ง ๋ณด์ฅ
v1.0.13 โ ์์ ์์ ํ ๋ฆด๋ฆฌ์ค
- **๋ฆด๋ฆฌ์ค*: 2015.12.25
ํน์ง
- ์ ๊ท ๊ธฐ๋ฅ โ
- ์์ ์ฑ & ์์ธก ๊ฐ๋ฅ์ฑ โฌ๏ธ
์ฃผ์ ๊ฐ์
- ๋ฐฐ์ด
$set('2', value)โ ์๋ ์ซ์ ๋ณํ $watch์ฝ๋ฐฑ ํธ์ถ ์์ ๋ณด์ฅ.syncprop ์ด๊ธฐ ๋๊ธฐํ ํ์ด๋ฐ ์์ - Safari ๊ฐ์ฒด key ์์ ๋ฌธ์ ์ฐํ > ์ด ์์ ๋ถํฐ Vue 1.x๋ โ์ด์ํ edge-case๊ฐ ๊ฑฐ์ ์๋ ์ํโ๋ก ์ง์
v1.0.14 โ ํธ๋์ง์ ์์คํ ์์ฑ
- **๋ฆด๋ฆฌ์ค*: 2016.01.11
ํต์ฌ ๋ณํ
1. transition.type ์ต์
Vue.transition('fade', {
type: 'animation'
})
- transition / animation ์ค ํ๋๋ง ๊ฐ์ง
2. enterClass / leaveClass ์ปค์คํฐ๋ง์ด์ฆ
Vue.transition('bounce', {
enterClass: 'bounceIn',
leaveClass: 'bounceOut'
})
- Animate.css ๋ฑ ์ธ๋ถ CSS ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์ฐ์ค๋ฝ๊ฒ ๊ฒฐํฉ
3. ํธ๋์ง์ + v-if ์๋ฌ ์์
- ์ค์ฌ์ฉ์์ ์์ฃผ ๋ฐ์ํ๋ ์ค๋ฅ ์ ๊ฑฐ
> Vue 2์
<transition>์ปดํฌ๋ํธ ์ค๊ณ๋ก ์ด์ด์ง๋ ๊ฒฐ์ ์ ์ ์กฐ
v1.0.15 โ Vue 1.x์ ๋ง์ง๋ง ๋ค๋ฌ์ง
- **๋ฆด๋ฆฌ์ค*: 2016.01.18
ํต์ฌ ๋ณ๊ฒฝ
- ๋ฐฐํฌ ๋น๋์์ ๊ฐ๋ฐ ์ฝ๋ ์์ ์ ๊ฑฐ
- Fragment ์ธ์คํด์ค ๋ฉ๋ชจ๋ฆฌ ๋์ ํด๊ฒฐ
- v-for + Sortable ์ฐ๋ ์์ ํ
- ์ฌ๋กฏ ์ค๋ณต ์ฝ์ ๋ฒ๊ทธ ์์
- ํ ํ๋ฆฟ ์บ์ ํจ์จ ๊ฐ์ > โ๋์ ๋์ง ์์ง๋ง ๊ฐ์ฅ ์ค์ํ ๋ฆด๋ฆฌ์คโ
์์คํ ๋จ์ ๋ณํ ์์ฝ
ํธ๋์ง์
- ์๋ ๊ฐ์ง โ ๊ฐ๋ฐ์ ์ ์ด ๊ฐ๋ฅ
- Vue 2 transition ์ค๊ณ์ ํ ๋
๋ฐ์์ฑ & Watcher
- ์คํ ์์ ๋ณด์ฅ
- ๋๋ฝ ์๋ ๊ฐ์ง
Props
- coerce ์คํ โ ๋จ๋ฐฉํฅ ์ฒ ํ ํ๋ฆฝ
์ฌ๋กฏ
- IE/edge-case ์ ๋ฆฌ
- ๋๊ท๋ชจ ์ปดํฌ๋ํธ ๊ตฌ์กฐ ์์ ํ
๋งบ์ผ๋ฉฐ
Vue.js 1.x์ ๋ง์ง๋ง ๋ง์ด๋ ๋ฆด๋ฆฌ์ค๋ค์
-
*โํ๋ ์์ํฌ๋ฅผ ๋ง๋๋ ์ผ์ ๋ง๋ฌด๋ฆฌ์ ์ฐ์โ*์์ ๋ณด์ฌ์ค๋๋ค. ํ๋ คํ ๊ธฐ๋ฅ๋ณด๋ค:
-
๋ฉ๋ชจ๋ฆฌ ๋์ ํ๋
-
์ด๋ฒคํธ ์์ ํ๋
-
ํด๋์ค ๋ณํฉ ํ๋ ์ด๋ฐ ๋ํ ์ผ์ด ์ ๋ขฐ๋ฅผ ๋ง๋ญ๋๋ค.
Vue๊ฐ ์ค๋๋ ๊น์ง ์ฌ๋๋ฐ๋ ์ด์ ๋
์ด ์๊ธฐ์ ์ง์ํ ๋ค๋ฌ๊ธฐ ๋๋ถ์ด๋ผ ํด๋ ๊ณผ์ธ์ด ์๋๋๋ค.
์ฐธ๊ณ ์๋ฃ
- GitClear Vue ๋ฆด๋ฆฌ์ค ์์นด์ด๋ธ
- Vue.js ๊ณต์ ๋ฆด๋ฆฌ์ค ๋ ธํธ
- Vue 1.x โ 2.x Migration Guide
โฌ๏ธ ์ด ๊ธ์ด ๋์์ด ๋์ จ๋ค๋ฉด, ์๋ ๊ด๊ณ ๋ฅผ ํ ๋ฒ๋ง ํด๋ฆญํด์ฃผ์ธ์! ์ ์๊ฒ ํฐ ํ์ด ๋ฉ๋๋ค ๐โโ๏ธ โฌ๏ธ