๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์›น๊ณต๋ทฐ/vue

vue2, vue3 ์ฐจ์ด์  Options API VS. Composition API

by ์ด๋…ธํ‚ค_ 2023. 11. 9.

์•„๋ž˜๋Š” vue2์™€ vue3์˜ ์ƒ˜ํ”Œ์ฝ”๋“œ๋‹ค.

 

vue2 ์ƒ˜ํ”Œ ์ฝ”๋“œ (Options API)

<!-- Vue2Component.vue -->
<template>
  <div>
    <h1>{{ message }}</h1>
    <button @click="changeMessage">Change Message</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      message: "Hello, Vue 2!",
    };
  },
  methods: {
    changeMessage() {
      this.message = "New Message!";
    },
  },
};
</script>

<style>
/* Add your styles here */
</style>

 

vue3 ์ƒ˜ํ”Œ์ฝ”๋“œ (Composition API)

<!-- Vue3CompositionComponent.vue -->
<template>
  <div>
    <h1>{{ message }}</h1>
    <button @click="changeMessage">Change Message</button>
  </div>
</template>

<script>
import { ref } from "vue";

export default {
  setup() {
    const message = ref("Hello, Vue 3!");

    const changeMessage = () => {
      message.value = "New Message!";
    };

    return {
      message,
      changeMessage,
    };
  },
};
</script>

<style>
/* Add your styles here */
</style>

 

Options API์™€ Composition API ๊ฐ€ ๋„๋Œ€์ฒด ๋ญ˜๊นŒ?

์ •์˜๋ฅผ ์ฝ์–ด๋ดค์„๋•Œ ๋”ฑํžˆ ์™€๋‹ฟ๋Š” ์„ค๋ช…๋“ค์ด ํฌ๊ฒŒ ์—†์—ˆ๋‹ค. 

๊ทธ๋ž˜์„œ ์ฐจ์ด์ ์„ ํ•œ๋ฒˆ ์ •๋ฆฌํ•ด๋ณด์ž.

  Options API Composition API
๊ตฌ์„ฑ ๊ฐ์ฒด ์ค‘์‹ฌ์˜ ์ ‘๊ทผ๋ฐฉ๋ฒ•
data, methods, computed ๋“ฑ์˜ ์˜ต์…˜๋“ฑ์„ ํ†ตํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค.
ํ•จ์ˆ˜ ์ค‘์‹ฌ์˜ ์ ‘๊ทผ. 
data ์˜ต์…˜ ๋Œ€์‹  ๋ฐ”๋กœ ๋ณ€์ˆ˜๋ฅผ return{}ํ•œ๋‹ค.
methods๋Œ€์‹  ๋ฐ”๋กœ ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ณ 
mounted ์˜ต์…˜ ๋Œ€์‹  onMounted()ํ•จ์ˆ˜๋กœ ๋ฐ”๋กœ ํ‘œํ˜„ํ•œ๋‹ค.
์žฌ์‚ฌ์šฉ์„ฑ ์ œํ•œ์ ์ด๋‹ค.
mixins
๋” ๋†’์€ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋ณด์ธ๋‹ค.
composables 
๋ผ์ดํ”„์‚ฌ์ดํด Lifecycle hooks
options object์— ์ง์ ‘ ์ •์˜๋œ๋‹ค.
Lifecycle hooks๋Š” setup ํ•จ์ˆ˜์˜ ํ•œ ๋ถ€๋ถ„์ด๋‹ค.
๊ฐ€๋…์„ฑ   ๊ฐ€๋…์„ฑ์ด ๋” ์ข‹์Œ

 

 

vue3 ํ”„๋กœ์ ํŠธ๋กœ ๊ตฌ์„ฑํ•ด์„œ vue2 ๋ฌธ๋ฒ•์œผ๋กœ ์ฝ”๋”ฉ์„ ํ•ด์™”๋˜ ๋‚˜... 

์ง€๊ธˆ์ด๋ผ๋„ ๊ณต๋ถ€ํ•ด์„œ ๋‹ค์‹œ vue3 ์Šคํƒ€์ผ๋กœ ์กฐ๊ธˆ์”ฉ ๋ฐ”๊ฟ”๋ณด์ž.

๋Œ“๊ธ€