๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ปWEB FrontEnd/ํ”„๋ ˆ์ž„์›Œํฌ Vue

Vue Instance

<Do it! Vue.js ์ž…๋ฌธ>์„ ๊ธฐ๋ณธ์œผ๋กœ ๋ฐฐ์šด ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

 

๋ชฉ์ฐจ

  • 1) Vue Instance
  • 2) Vue Instance ์ƒ์„ฑ์ž
  • 3) Vue Instance ์˜ต์…˜ ์„ค์ •
  • 4) Vue Instance ๋ผ์ดํ”„ ์‚ฌ์ดํด
  • 5) Vue Instance ๋ผ์ดํ”„ ์‚ฌ์ดํด ์ดˆ๊ธฐํ™”

 

1. Vue Instance

1) Vue Instance

  • Vue.js๋กœ ํ™”๋ฉด์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด ๊ผญ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋Š” ๊ธฐ๋ณธ ํ•„์ˆ˜ ๋‹จ์œ„
new Vue({
    ...
});

 

 

2) Vue Instance ์ƒ์„ฑ์ž

  • new Vue()๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ Vue๋ฅผ ์ƒ์„ฑ์ž๋ผ๊ณ  ํ•œ๋‹ค.
  • Vue์ƒ์„ฑ์ž๋Š” ๋ทฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋กœ๋”ฉํ•˜๊ณ  ๋‚˜๋ฉด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Vue๋กœ ๊ฐœ๋ฐœํ•  ๋•Œ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋“ค์„ ์ƒ์„ฑ์ž์— ๋ฏธ๋ฆฌ ์ •์˜ํ•ด ๋†“๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ๊ทธ ๊ธฐ๋Šฅ์„ ์žฌ์ •์˜ํ•˜์—ฌ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

3) Vue Instance ์˜ต์…˜ ์„ค์ •

  • Vue ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์•„๋ž˜์™€ ๊ฐ™์€ ์ธ์Šคํ„ด์Šค ์˜ต์…˜ ์†์„ฑ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค.
new Vue({ 
    // instance option properties 
    template: "", 
    el: "", 
    methods: {} 
    // ... 
});
์†์„ฑ ์„ค๋ช…
el - element
- element๊ฐ€ ๊ฐ€๋ฅดํ‚ค๋Š” id์— vue ์ธ์Šคํ„ด์Šค์— ๋งˆ์šดํŠธ ์‹œํ‚ด
data - ํ™”๋ฉด์— ๋งคํ•‘๋˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์„ ์–ธํ•˜๊ณ  ๋‹ด๋Š” ์˜ต์…˜
- ํ•ด๋‹นํ™”๋ฉด์—์„œ๋งŒ ์‚ฌ์šฉ๋Š” ๋กœ์ปฌ ๋ณ€์ˆ˜์™€ ๊ฐ™์€ ๋А๋‚Œ - ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์ฒด์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋Š” 'state'๋ผ๊ณ  ์ •์˜ํ•จ ( vuex)
computed - data ์˜ต์…˜์˜ ์†์„ฑ์ด ๋ณ€๊ฒฝ๋ ๋•Œ ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋˜๋Š” ์˜ต์…˜, data๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด computed๊ฐ€ ์บ์น˜ํ•จ.
- ํ•œ๋ฒˆ ํ˜ธ์ถœ๋˜๊ณ  data์˜ต์…˜์˜ ํ•ด๋‹น ์†์„ฑ์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์œผ๋ฉด ์บ์‹ฑ๋œ ๋ฐ์ดํ„ฐ ๋ฆฌํ„ด
- ๋ฐ˜๋“œ์‹œ return์ด ์žˆ์–ด์•ผ ํ•จ.
- ๋กœ์ง์ค‘์— ๋น„๋™๊ธฐ์ฒ˜๋ฆฌ ๋กœ์ง์ด ์žˆ์œผ๋ฉด ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋จ.
methods - ์ผ๋ฐ˜์ ์ธ ํ•จ์ˆ˜์™€ ๋™์ผ.
- computed์™€ ๋‹ค๋ฅด๊ฒŒ ์บ์‹ฑ์—†์ด ํ˜ธ์ถœ์‹œ๋งˆ๋‹ค ๋งค๋ฒˆ ํ˜ธ์ถœ๋˜๊ณ , ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•จ.
- ๊ฐ’์„ returnํ•˜์ง€ ์•Š์•„๋„ ๋จ.
watch  - ์ •์˜๋œ data์˜ต์…˜์˜ ์†์„ฑ์ด ๋ณ€๊ฒฝ๋˜๋ฉด ํ˜ธ์ถœ๋˜๋Š” ์˜ต์…˜
- ๋ณ€๊ฒฝ์ „ํ›„ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ
- computed ์˜ต์…˜์ธ๋ฐ ๋น„๋™๊ธฐ์ฒ˜๋ฆฌ ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉ, ์บ์‹ฑ์€ ์—†์Œ
template - ํ™”๋ฉด์— ํ‘œ์‹œํ•  HTML, CSS ๋“ฑ์˜ ๋งˆํฌ์—… ์š”์†Œ๋ฅผ ์ •์˜ํ•˜๋Š” ์˜ต์…˜
created - ๋ทฐ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜์ž๋งˆ์ž ์‹คํ–‰ํ•  ๋กœ์ง์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ

 

 

4) Vue Instance ๋ผ์ดํ”„ ์‚ฌ์ดํด

created data์†์„ฑ๊ณผ methods์†์„ฑ์ด ์ •์˜๋˜์–ด ๊ทธ ๊ฐ’์— ์ ‘๊ทผํ•˜์—ฌ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
์ธ์Šคํ„ด์Šค๊ฐ€ ํ™”๋ฉด์š”์†Œ์— ๋ถ€์ฐฉ๋˜๊ธฐ ์ „์ด๋ผ template์†์„ฑ์— ์ •์˜๋œ ๋” ์š”์†Œ๋กœ ์ ‘๊ทผํ•  ์ˆ˜๋Š” ์—†๋‹ค.
mounted template์†์„ฑ์— ์ •์˜ํ•œ ํ™”๋ฉด ๋” ์š”์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์–ด ํ™”๋ฉด ์š”์†Œ๋ฅผ ์ œ์–ดํ•˜๋Š” ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ข‹์€ ๋‹จ๊ณ„์ด๋‹ค.
updated ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•œ ํ™”๋ฉด ์š”์†Œ ๋ณ€๊ฒฝ๊นŒ์ง€ ์™„๋ฃŒ๋œ ์‹œ์ ์ด๋ฏ€๋กœ, ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ํ›„ ํ™”๋ฉด ์š”์†Œ ์ œ์–ด์™€ ๊ด€๋ จ๋œ ๋กœ์ง์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์ข‹์€ ๋‹จ๊ณ„์ด๋‹ค.
- ๋ฐ์ดํ„ฐ ๊ฐ’์„ ๊ฐฑ์‹ ํ•˜๋Š” ๋กœ์ง : beforeUpdate์— ์ถ”๊ฐ€
- ๋ณ€๊ฒฝ ๋ฐ์ดํ„ฐ ํ™”๋ฉด ๋” ์š”์†Œ์™€ ๊ด€๋ จ๋œ ๋กœ์ง : updated์— ์ถ”๊ฐ€
beforeDestroy ๋ทฐ ์ธ์Šคํ„ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๊ธฐ ์ข‹์€ ๋‹จ๊ณ„

 

 

5) Vue Instance ๋ผ์ดํ”„ ์‚ฌ์ดํด ์ดˆ๊ธฐํ™”

์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ์•„๋ž˜์˜ ์ดˆ๊ธฐํ™” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

  • ๋ฐ์ดํ„ฐ ๊ด€์ฐฐ :  beforeUpdate๋‹จ๊ณ„์—์„œ el์†์„ฑ์—์„œ ์ง€์ •ํ•œ ํ™”๋ฉด ์š”์†Œ์— ์ธ์Šคํ„ด์Šค๊ฐ€ ๋ถ€์ฐฉ๋˜๊ณ  ๋‚˜๋ฉด ์ธ์Šคํ„ด์Šค์— ์ •์˜ํ•œ ์†์„ฑ๋“ค์ด ์น˜ํ™˜๋œ๋‹ค. ์น˜ํ™˜๋œ ๊ฐ’์€ ๋ทฐ์˜ ๋ฐ˜์‘์„ฑ(Reactivity)์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด $watch์†์„ฑ์œผ๋กœ ๊ฐ์‹œํ•œ๋‹ค.
  • ํ…œํ”Œ๋ฆฟ ์ปดํŒŒ์ผ
  • DOM ์— ๊ฐ์ฒด ์—ฐ๊ฒฐ
  • ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์‹œ DOM ์—…๋ฐ์ดํŠธ

 

์ด ์ดˆ๊ธฐํ™” ์ž‘์—… ์™ธ์—๋„ ๊ฐœ๋ฐœ์ž๊ฐ€ ์˜๋„ํ•˜๋Š” ์ปค์Šคํ…€ ๋กœ์ง์„ ์•„๋ž˜์™€ ๊ฐ™์ด ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

new Vue({ 
    data: { a: 1 }, 
    created: function() { 
        // this ๋Š” vm ์„ ๊ฐ€๋ฆฌํ‚ด 
        console.log("a is: " + this.a); 
    } 
});

์œ„ created ์ด์™ธ์—๋„ ๋ผ์ดํ”„์‹ธ์ดํด ๋‹จ๊ณ„์— ๋”ฐ๋ผ mounted, updated, destroyed ๋“ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.  ์ด ๋ผ์ดํ”„์‹ธ์ดํด ์ดˆ๊ธฐํ™” ๋ฉ”์„œ๋“œ๋กœ ์ปค์Šคํ…€ ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ทฐ์—์„œ๋Š” ๋”ฐ๋กœ Controller๋ฅผ ๊ฐ–๊ณ  ์žˆ์ง€ ์•Š๋‹ค.

 

'๐Ÿ’ปWEB FrontEnd > ํ”„๋ ˆ์ž„์›Œํฌ Vue' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Vue Router  (0) 2020.07.02
Vue Componets ํ†ต์‹   (0) 2020.07.02
Vue Componets  (0) 2020.07.02
Vue ์‹œ์ž‘ํ•˜๊ธฐ (+๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •)  (0) 2020.06.30
Vue.js๋ž€?  (0) 2020.06.30