Vue.js

Vue.js(2) vue μΈμŠ€ν„΄μŠ€ 및 ν…œν”Œλ¦Ώ 문법

Jo__y 2022. 10. 9. 14:53

Vue Instance

  • Vue.js ν™”λ©΄ κ°œλ°œμ„ μœ„ν•΄ κΌ­ 생성해야 ν•˜λŠ” ν•„μˆ˜ λ‹¨μœ„μ΄λ‹€.Instance 생성
  • // μƒˆλ‘­κ²Œ Vueλ₯Ό μ„ μ–Έ new Vue({ el: '#app', // μ–΄λ–€ μš”μ†Œμ— μ μš©μ„ ν•  μ§€ 정함 μ—¬κΈ°μ„œλŠ” HTML μ½”λ“œμ— μ„ μ–Έλœ id="app"인 div νƒœκ·Έλ₯Ό μ§€μ • data: { // data λŠ” ν•΄λ‹Ή VueJSμ—μ„œ μ‚¬μš©ν•  정보듀을 μ„ μ–Έν•΄μ£ΌλŠ” μ—­ν•  title: 'μ•ˆλ…• VueJS!' } })

μΈμŠ€ν„΄μŠ€ μ‚¬μš©ν•  수 μžˆλŠ” 속성과 API

new Vue({
  el: ,   // μΈμŠ€ν„΄μŠ€κ°€ κ·Έλ €μ§€λŠ” ν™”λ©΄μ˜ μ‹œμž‘μ  (νŠΉμ • HTMLνƒœκ·Έ)
  template: ,   // 화면에 ν‘œμ‹œν•  μš”μ†Œ (HTML, CSS λ“±)
  data: ,  // 뷰의 λ°˜μ‘μ„±(Reactivity) κ°€ 반영된 데이터 속성
  methods: ,  // ν™”λ©΄μ˜ λ™μž‘κ³Ό 이벀트 λ‘œμ§μ„ μ œμ–΄ν•˜λŠ” λ©”μ„œλ“œ
  created: ,  // 뷰의 라이프 사이클과 κ΄€λ ¨λœ 속성
  watch: ,  // data μ—μ„œ μ •μ˜ν•œ 속성이 λ³€ν™”ν–ˆμ„ λ•Œ μΆ”κ°€ λ™μž‘μ„ μˆ˜ν–‰ν•  수 있게 μ •μ˜
});

Vue 라이프 사이클

Vue μΈμŠ€ν„΄μŠ€ 생성에 μžˆμ–΄, κ°€μž₯ λ¨Όμ € ν˜ΈμΆœλ˜λŠ” ν•¨μˆ˜λ“€λ‘œμ¨, μŠ€ν¬λ¦½νŠΈμ—μ„œλŠ” window.onload 와 λΉ„μŠ·ν•œ λŠλ‚Œμ΄λ‹€.

Vue μΈμŠ€ν„΄μŠ€λŠ” 생성(Create) 되고
Dom 에 λΆ€μ°©(Mount) 되고
μ—…λ°μ΄νŠΈ (Update) 되며
μ—†μ–΄μ§€λŠ” (Destroy) 4κ°€μ§€ 과정을 거치게 λœλ‹€.

created

data λ₯Ό λ°˜μ‘ν˜•μœΌλ‘œ 좔적할 수 있게되며
computed,method,watch등이 ν™œμ„±ν™”λ˜μ–΄ 접근이 κ°€λŠ₯ν•˜κ²Œ λœλ‹€.
아직 Domμ—λŠ” μΆ”κ°€λ˜μ§€ μ•Šμ€ μƒνƒœμ΄λ‹€.

var app = new Vue({
    el: '#app',
    data() {
        return {
            msg: 'hello';
        }
    },
    created(function() {
        console.log(this.msg); // hello
    })
})

mounted

κ°€μž₯ 많이 μ‚¬μš©ν•˜λŠ” mounted 훅이닀.
가상 Dom λ‚΄μš©μ΄ μ‹€μ œ Dom 에 λΆ€μ°©λ˜κ³  λ‚œ 이후에 μ‹€ν–‰λœλ‹€.
data,computed,method,watch λ“± λͺ¨λ“  μš”μ†Œμ— 접근이 κ°€λŠ₯ν•˜λ‹€.

var app = new Vue({
    el: '#app',
    mounted(function() {
        console.log('mounted');
    })
})
createdλŠ” 데이터 μ΄ˆκΈ°ν™”μ— λŒ€ν•œ λͺ©μ , mountedλŠ” DOM μ‘°μž‘μ— λŒ€ν•œ λͺ©μ μœΌλ‘œ μ‚¬μš©ν•  수 μžˆλ‹€.

ν…œν”Œλ¦Ώ 문법

λ·°λ₯Ό 화면에 μ‘°μž‘ν•˜λŠ” 방법을 μ˜λ―Έν•œλ‹€.

데이터 바인딩 : interporation {{ }}

  • <span>λ©”μ‹œμ§€: {{ msg }}</span>
    • Mustache Tag(μ΄μ€‘μ€‘κ΄„ν˜Έ) λ₯Ό μ‚¬μš©ν•œ 보간법(Interporation)
  • Mustaches λŠ” HTML이 μ•„λ‹Œ μΌλ°˜ν…μŠ€νŠΈλ‘œ 해석 ν•œλ‹€.

λ””λ ‰ν‹°λΈŒ : Directive v-bind

v-bind λ””λ ‰ν‹°λΈŒλ₯Ό μ‚¬μš©ν•˜μ—¬ Vue μΈμŠ€ν„΄μŠ€ 내에 μ„ μ–Έλœ 값을 HTML μ½”λ“œμ˜ 속성 값에 μ‚¬μš©ν•  수 μžˆλ‹€.
v- 접두사가 뢙은 νŠΉλ³„ν•œ μ†μ„±μœΌλ‘œ ν™”λ©΄μ˜ DOM μ‘°μž‘μ„ μ‰½κ²Œ ν•  수 μžˆλŠ” 문법을 μ œκ³΅ν•œλ‹€.

v-html HTML의 μ½”λ“œν˜•νƒœλ‘œ 좜λ ₯ κ°€λŠ₯ν•˜λ‹€.

  • v-once λŠ” HTML μ½”λ“œλ‘œ 좜λ ₯된 이후 μ–΄λ–€ ν›„μ²˜λ¦¬κ°€ μžˆμ–΄λ„ μ²˜μŒμ— 좜λ ₯ν•œ 값을 μœ μ§€μ‹œν‚€κ³  μ‹Άμ„λ•Œ μ‚¬μš©ν•œλ‹€.
  • v-on 은 이벀트 λ¦¬μŠ€λ„ˆ 이닀.
    • 이벀트 μˆ˜μ‹μ–΄
      • μˆ˜μ‹μ–΄λŠ” 점으둜 ν‘œμ‹œλ˜λŠ” 특수 μ ‘λ―Έμ‚¬λ‘œ, λ””λ ‰ν‹°λΈŒλ₯Ό νŠΉλ³„ν•œ λ°©λ²•μœΌλ‘œ 바인딩 ν•΄μ•Ό 함을 λ‚˜νƒ€λ‚Έλ‹€. 예λ₯Ό λ“€μ–΄, .prevent μˆ˜μ‹μ–΄λŠ” 트리거된 μ΄λ²€νŠΈμ—μ„œ event.preventDefault()λ₯Ό ν˜ΈμΆœν•˜λ„λ‘ v-on λ””λ ‰ν‹°λΈŒμ—κ²Œ μ•Œλ €μ€€λ‹€.
        • <form v-on:submit.prevent="onSubmit"> ... </form>
  • v-model 은 <form> νƒœκ·Έμ—μ„œ submit ν• λ•Œ μ‚¬μš©ν•˜λŠ” 속성

μ•½μ–΄

λ””λ ‰ν‹°λΈŒλ₯Ό μ€„μ—¬μ„œ μ‚¬μš©ν•˜λŠ” 방법이 μžˆλ‹€
v-bind 와 v-on 에 μ œκ³΅λœλ‹€.

  • v-bind
  • <!-- 전체 문법 --> <a v-bind:href="url"> ... </a> <!-- μ•½μ–΄ --> <a :href="url"> ... </a>
  • v-on
  • <a v-on:click="doSomething"> ... </a> <!-- μ•½μ–΄ --> <a @click="doSomething"> ... </a>

μ°Έκ³ 

λ°˜μ‘ν˜•