캡틴판교 로고

Vue 3 업그레이드 가이드

bus.$emit('pass');

bus.$on('pass', () => {
  alert('hi');
});
<script>
export default {
  data() {
    return {
      show: false
    }
  }
}
</script>

<template>
  <!-- 2.x 버전 -->
  <div v-bind:id="show"></div> <!-- <div></div> -->
  <div v-bind:draggable="show"></div> <!-- <div draggable="false"></div> -->
  <div v-bind:aria-selected="show"></div> <!-- <div></div> -->
  
  <!-- 3.x 버전 -->
  <div v-bind:id="show"></div> <!-- <div id="false"></div> -->
  <div v-bind:draggable="show"></div> <!-- <div draggable="false"></div> -->
  <div v-bind:aria-selected="show"></div> <!-- <div aria-selected="false"></div> -->
</template>

열거형 속성이란 `draggable`, `contenteditable`, `spellcheck`와 같이 속성의 값이 정해져 있는 속성들을 의미합니다

<template>
  <p>Hello</p> <!-- Hello -->
</template>

<script>
export default {
  filters: {
    capitalize(value) {
      value = value.toString()
      return value.charAt(0).toUpperCase() + value.slice(1)
    }
  }
}
</script>
import { createLocalVue, mount } from '@vue/test-utils'

// create an extended `Vue` constructor
const localVue = createLocalVue()

// install a plugin “globally” on the “local” Vue constructor
localVue.use(MyPlugin)

// pass the `localVue` to the mount options
mount(Component, { localVue })

뿐만 아니라 Vue.~~ 전역 API를 이용하면 new Vue() 생성되는 모든 루트 인스턴스에 영향을 주기 때문에 인스턴스마다 별도의 설정(config 또는 setup)을 잡기가 어려움. 뷰 3에서는 아래와 같은 형태로 루트 인스턴스(앱)를 생성.

import { createApp } from 'vue'

const app = createApp({
  // 인스턴스 옵션 속성
})
import { createApp } from 'vue'
import MyApp from './MyApp.vue'

const app = createApp(MyApp)
app.mount('#app')