Blog

Vuex

Vuex

Vuex๋Š” Vue.js ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ์ƒํƒœ ๊ด€๋ฆฌ ํŒจํ„ด + ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

์ƒํƒœ, ๋ทฐ, ์•ก์…˜

new Vue({ // ์ƒํƒœ data () { return { count: 0 } }, // ๋ทฐ template: '<div>{{ count }}</div>', // ์•ก์…˜ methods: { increment () { this.count ++ } } })
JavaScript
๋ณต์‚ฌ
โ€ข
์ƒํƒœ: ์•ฑ์„ ์ž‘๋™ํ•˜๋Š” ์›๋ณธ ์†Œ์Šค ( data )
โ€ข
๋ทฐ: ์ƒํƒœ์˜ ์„ ์–ธ์  ๋งคํ•‘ ( template )
โ€ข
์•ก์…˜: ์‚ฌ์šฉ์ž ํ–‰๋™์— ๋ฐ˜์‘ํ•ด ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝ ( methods )

Vuex

Vue.js ๋Š” ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ์‹œ ์ธ์ž๋กœ ๋ฐ›๋Š” data ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•ด์„œ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉฐ, data์•ˆ์˜ ๋‚ด์šฉ์ด ๋ณ€๊ฒฝ๋˜๋ฉด ์ด๋ฅผ ์ธ์ง€ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์—…๋ฐ์ดํŠธํ•œ๋‹ค
๊ฐœ๋ฐœ์„ ํ•˜๋‹ค๋ณด๋ฉด ์„œ๋กœ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธฐ๋Š”๋ฐ, ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด props ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜ ์ด๋ฒคํŠธ๋ฅผ ํ†ตํ•ด data ๋ฅผ ๋™๊ธฐํ™” ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค
ํ•˜์ง€๋งŒ ์œ„์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐœ๋ฐœ์„ ํ•˜๊ฒŒ ๋˜๋ฉด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์กฐ๊ธˆ๋งŒ ๋ณต์žกํ•ด์ง€๋ฉด ๊ด€๋ฆฌํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ค์›Œ์ง€๋ฉฐ, Vue.js ์˜ ์žฅ์ ์ธ ๋‹จ์ˆจํ•จ์ด ๊ต‰์žฅํžˆ ๋น ๋ฅด๊ฒŒ ์ €ํ•˜๋œ๋‹ค
Vuex ๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ „์—ญ์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์Šคํ† ์–ด ์—ญํ™œ์„ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ์ •ํ•ด์ง„ ๊ทœ์น™์— ๋งž์ถฐ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค
Vuex๋Š” Flux, Redux, The Elm Architecture ์—์„œ ์˜๊ฐ์„ ์–ป์–ด ๊ฐœ๋ฐœ๋˜์—ˆ๋‹ค
Vuex

Vuex๊ฐ€ ๋ฌด์กฐ๊ฑด ๋„์ž…ํ•˜๋Š”๊ฒŒ ์ข‹์„๊นŒ?

Vuex ๋Š” ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ์—์„œ ๊ณต์œ ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ๊ต‰์žฅํžˆ ์œ ์šฉํ•˜์ง€๋งŒ, ๋ฐฐ์šฐ๊ธฐ ์œ„ํ•ด ๋Ÿฌ๋‹ ์ฝ”์ŠคํŠธ๊ฐ€ ๋“ ๋‹ค.
๋งŒ์•ฝ, ํ”„๋กœ์ ํŠธ๊ฐ€ ๋‹จ๊ธฐ๊ฐ„๋‚ด์— ๋๋‚ด์•ผ๋˜๊ณ  ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ทœ๋ชจ๊ฐ€ ์ž‘๋‹ค๋ฉด Vuex ์—†์ด EventBus ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ตฌํ˜„ํ•˜๋ฉด ๋œ๋‹ค. ํ•˜์ง€๋งŒ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ค‘๊ทœ๋ชจ ์ด์ƒ์ผ ๊ฒฝ์šฐ Vuex ๋Š” ๋ฐ˜๋“œ์‹œ ๋„์ž…ํ•˜๋Š”๊ฒŒ ์ข‹๋‹ค

์ฐธ๊ณ 

โ€ข
http://vuex.vuejs.org/kr/intro.html