[Vue.js] Composition API๋ž€? (vs Options API)

ํ† ๋ผ๋Š” ๊ฐœ๋ฐœ๊ฐœ๋ฐœยท2023๋…„ 5์›” 20์ผ
3

Vue.js

๋ชฉ๋ก ๋ณด๊ธฐ
1/19
post-thumbnail

๐Ÿ“Œ 1. Composition API

์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ณ , ์ปดํฌ๋„ŒํŠธ์˜ ๋กœ์ง์„ ์œ ์—ฐํ•˜๊ฒŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํ•จ์ˆ˜ ๊ธฐ๋ฐ˜์˜ API. Vue3 ๊ณต์‹๋ฌธ์„œ์—์„œ Composition API๋ฅผ ์“ธ ๊ฒƒ์„ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ๋‹ค.


1.1 Composition API๋ž€?

Composition API๋Š” Vue3์—์„œ ์ƒˆ๋กœ ์ถ”๊ฐ€๋œ ํ•จ์ˆ˜ ๊ธฐ๋ฐ˜์˜ API๋กœ, ์ปดํฌ๋„ŒํŠธ ๋กœ์ง์„ ์œ ์—ฐํ•˜๊ฒŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์—ฌ ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ๊ฐ€๋…์„ฑ์„ ๋†’์—ฌ์ค€๋‹ค.

๊ธฐ์กด์˜ Vue๋Š” ํ”„๋กœ์ ํŠธ ๊ทœ๋ชจ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์ปดํฌ๋„ŒํŠธ์˜ ๊ณ„์ธต ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•ด์ง€๋ฉฐ, ์ด๋กœ์ธํ•ด ์ถ”์  ๋ฐ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ค์› ๋‹ค๊ณ  ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ Vue์˜ ๋‹จ์ ์„ ์ปค๋ฒ„ํ•˜๊ธฐ ์œ„ํ•ด Vue3๋ถ€ํ„ฐ ์ปดํฌ์ง€์…˜ API๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ๋‹ค.



1.2 Composition API ์‚ดํŽด๋ณด๊ธฐ

Composition API๋Š” ์˜ต์…˜์„ ์„ ์–ธํ•˜๋Š” ๋Œ€์‹  importํ•œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ vue ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” API ์„ธํŠธ์ด๋‹ค.

  • ๋ฐ˜์‘ํ˜•(Reactivity) API
    : ref() ๋ฐ reactive()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ˜์‘ํ˜• ์ƒํƒœ, ๊ณ„์‚ฐ๋œ ์ƒํƒœ ๋ฐ ๊ฐ์‹œ์ž๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์ƒ๋ช…์ฃผ๊ธฐ ํ›…
    : onMounted() ๋ฐ onUnmounted()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ ์ƒ๋ช…์ฃผ๊ธฐ์— ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์˜์กด์„ฑ ์ฃผ์ž…(Dependency Injection)
    : provide() ๋ฐ inject()๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ˜์‘ํ˜• API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋™์•ˆ Vue์˜ ์˜์กด์„ฑ ์ฃผ์ž… ์‹œ์Šคํ…œ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.


Composition API ์˜ˆ์‹œ

<template>
  <button @click="plus()">์ˆซ์ž: {{ cnt }}</button>
</template>

<script setup>
import { ref, onMounted } from 'vue'

// ๋ฐ˜์‘ํ˜•
const cnt = ref(0)
const plus = () => { cnt.value++ }

// ์ƒ๋ช…์ฃผ๊ธฐ ํ›…
onMounted(() => { console.log(`OnMounted`) })
</script>

Options API ๊ธฐ์กด์—๋Š” data, methods, computed์— ๊ฐ๊ฐ ๋กœ์ง์ด ํฉ์–ด์ ธ ์žˆ์—ˆ๋Š”๋ฐ Composition API๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋กœ์ง์ด ๋ชจ์•„์ง€๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

์ด ๋ถ€๋ถ„์€ ๊ฐ๊ฐ ์žฅ๋‹จ์ ์ด ์กด์žฌํ•œ๋‹ค. ๊ธฐ์กด์˜ Options API๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋˜ ์‚ฌ๋žŒ์€ ํ•ด๋‹น ๊ตฌ์กฐ์— ์ต์ˆ™ํ•ด์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋กœ์ง์ด ๋‚˜๋‰˜์–ด์ ธ ์žˆ๋Š” ๊ฒƒ์ด ํŽธํ•  ๊ฒƒ์ด๊ณ , ๋กœ์ง์„ ๋ชจ์•„์„œ ์‚ฌ์šฉํ•˜๋˜ ์‚ฌ๋žŒ์€ Composition API๊ฐ€ ํŽธํ•  ์ˆ˜ ์žˆ๋‹ค.



1.3 Composition API ์žฅ์ 

1. ๋” ๋‚˜์€ ๋กœ์ง ์žฌ์‚ฌ์šฉ์„ฑ

์ปดํฌ์ง€์…˜ API์˜ ๊ฐ€์žฅ ํฐ ์žฅ์ ์€ *์ปดํฌ์ €๋ธ” ํ•จ์ˆ˜์˜ ํ˜•ํƒœ๋กœ ๊น”๋”ํ•˜๊ณ  ํšจ์œจ์ ์ธ ๋กœ์ง ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ต์…˜ API์˜ ๊ธฐ๋ณธ ๋กœ์ง ์žฌ์‚ฌ์šฉ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ธ **๋ฏน์Šค์ธ์˜ ๋ชจ๋“  ๋‹จ์ ์„ ํ•ด๊ฒฐํ•œ๋‹ค.

์ปดํฌ์ง€์…˜ API์˜ ๋กœ์ง ์žฌ์‚ฌ์šฉ ๊ธฐ๋Šฅ์€ ์ปดํฌ์ €๋ธ” ์œ ํ‹ธ๋ฆฌํ‹ฐ์˜ ๊ณ„์† ์„ฑ์žฅํ•˜๋Š” ์ปฌ๋ ‰์…˜์ธ VueUse์™€ ๊ฐ™์€ ์ธ์ƒ์ ์ธ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”„๋กœ์ ํŠธ๋ฅผ ํƒ„์ƒ์‹œ์ผฐ๋‹ค. ์ด๋Š” ๋ฏน์Šค์ธ์˜ ๋ถˆ๋ถ„๋ช…ํ•œ ์ถœ์ฒ˜์˜ ์†์„ฑ, ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ถฉ๋Œ ๋“ฑ์˜ ๋‹จ์ ์„ ํ•ด๊ฒฐํ•œ๋‹ค.


๐Ÿ’ก *์ปดํฌ์ €๋ธ”์ด๋ž€?
Vue ์•ฑ์˜ ์ปจํ…์ŠคํŠธ์—์„œ ์ปดํฌ์ €๋ธ”์€ Vue ์ปดํฌ์ง€์…˜ API๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ƒํƒœ ์ €์žฅ ๋กœ์ง๋ฅผ ์บก์Šํ™”ํ•˜๊ณ  ์žฌ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋™์ผํ•œ ๋กœ์ง์„ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ปดํฌ์ €๋ธ” ํ•จ์ˆ˜๋กœ ์žฌ๊ตฌ์„ฑ ํ›„ ์™ธ๋ถ€ ํŒŒ์ผ๋กœ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ’ก *๋ฏน์Šค์ธ์ด๋ž€?
Vue2์—์„œ ์ปดํฌ๋„ŒํŠธ์— ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ์„ ๋ฐฐํฌํ•˜๋Š” ์œ ์—ฐํ•œ ๋ฐฉ๋ฒ•. mixins ์˜ต์…˜์€ ๋ฏน์Šค์ธ ๊ฐ์ฒด๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด์ด๋‹ค. Vue3์—์„œ ๋ฏน์Šค์ธ์€ ๊ณ„์† ์ง€์›๋˜์ง€๋งŒ, ๋” ์ด์ƒ ๊ถŒ์žฅ๋˜์ง€ ์•Š๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

var HelloMixins = {
  // ์ปดํฌ๋„ŒํŠธ ์˜ต์…˜ (data, methods, created ๋“ฑ)
};

new Vue({
  mixins: [HelloMixins]
})

2. ๋ณด๋‹ค ์œ ์—ฐํ•œ ์ฝ”๋“œ ๊ตฌ์„ฑ

Options API๋Š” data, methods, computed๋กœ ๋กœ์ง์ด ํฉ์–ด์ง€๊ฒŒ ๋œ๋‹ค. ์ด๋Š” ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ์—์„œ๋Š” ๊ตฌ์กฐ์ ์œผ๋กœ ๋‚˜๋‰˜์–ด์ง„๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๊ฒ ์ง€๋งŒ, ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์งˆ์ˆ˜๋ก ๊ฐ€๋…์„ฑ์„ ๋–จ์–ด๋œจ๋ฆฐ๋‹ค.

<์ถœ์ฒ˜: https://ko.vuejs.org/ >

์ขŒ์ธก์€ Options API์ด๋ฉฐ, ์šฐ์ธก์€ Composition API๋กœ ๋ฆฌํŒฉํ† ๋ง ํ–ˆ๋‹ค.
์ด ํ›„, ๋™์ผํ•œ ๋…ผ๋ฆฌ์  ๋ฌธ์ œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ฐ™์€ ์ƒ‰์ƒ์„ ์น ํ•ด๋ณด์•˜๋‹ค.

๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฝ”๋“œ๋“ค์ด ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์— ๋ถ„ํ• ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
์ด๋Š” ์ฝ”๋“œ๊ฐ€ ๊ธธ์–ด์งˆ์ˆ˜๋ก, ๋‹จ์ผ ๋…ผ๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๊ณ  ํƒ์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด ์ง€์†์ ์œผ๋กœ ์œ„์•„๋ž˜๋กœ ์Šคํฌ๋กคํ•˜๋Š” ๋ถˆํŽธํ•จ์„ ์•ผ๊ธฐํ•œ๋‹ค. ๋˜ํ•œ, ์ด๋ฅผ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋กœ ์ถ”์ถœํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์ฝ”๋“œ์˜ ์กฐ๊ฐ์„ ์ฐพ๋Š”๋ฐ ์ƒ๋‹นํ•œ ๋…ธ๋ ฅ์ด ํ•„์š”ํ•˜๋‹ค.

๋ฐ˜๋Œ€๋กœ, ์šฐ์ธก์˜ Composition API๋Š” ์ฝ”๋“œ๋“ค์ด ํฉ์–ด์ ธ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๋ธ”๋ก๋“ค๋กœ ์ด๋™ํ•˜๋ฉฐ ์ฝ”๋“œ ์กฐ๊ฐ์„ ์ฐพ์„ ํ•„์š”๊ฐ€ ์—†๋‹ค. ์ตœ์†Œํ•œ์˜ ๋…ธ๋ ฅ์œผ๋กœ ์žฌ์‚ฌ์šฉ์„ ์œ„ํ•œ ์ถ”์ถœ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.
๋ฆฌํŒฉํ† ๋ง์„ ์œ„ํ•œ ์†Œ๋ชจ ์‹œ๊ฐ„ ๊ฐ์†Œ๋Š” ๋Œ€๊ทœ๋ชจ ์ฝ”๋“œ๋ฒ ์ด์Šค์— ์žฅ๊ธฐ์ ์ธ ์œ ์ง€ ๊ด€๋ฆฌ์˜ ํ•ต์‹ฌ์ด๋‹ค.


3. ๋” ๋‚˜์€ ํƒ€์ž… ์ถ”๋ก 
ํ˜„์žฌ ๋งŽ์€ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋“ค์ด TypeScript๋ฅผ ์ฑ„ํƒํ•˜๊ณ  ์žˆ๋‹ค. Composition API๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์œ ํ˜• ์นœํ™”์ ์ธ ์ผ๋ฐ˜ ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ, Composition API ์ฝ”๋“œ๋Š” TypeScript์™€ ์ผ๋ฐ˜ JavaScript์—์„œ ๊ฑฐ์˜ ๋™์ผํ•˜๊ฒŒ ๋ณด์ธ๋‹ค. ์ด๊ฒƒ์€ JavaScript ์‚ฌ์šฉ์ž๊ฐ€ ์œ ํ˜• ์ถ”๋ก ์˜ ์ด์ ์„ ๋ˆ„๋ฆด ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.


4. ๋” ์ž‘์€ ํ”„๋กœ๋•์…˜ ๋ฒˆ๋“ค ๋ฐ ๋” ์ ์€ ์˜ค๋ฒ„ํ—ค๋“œ
์ปดํฌ์ง€์…˜ API์™€ <script setup>์œผ๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋Š” ์˜ต์…˜ API์— ๋น„ํ•ด ๋” ํšจ์œจ์ ์ด๊ณ  ์ถ•์†Œํ•˜๊ธฐ ์‰ฝ๋‹ค. ์ด๋Š” <script setup> ์ปดํฌ๋„ŒํŠธ์˜ ํ…œํ”Œ๋ฆฟ์ด <script setup> ์ฝ”๋“œ์˜ ๋™์ผํ•œ ๋ฒ”์œ„์— ์ธ๋ผ์ธ๋œ ํ•จ์ˆ˜๋กœ ์ปดํŒŒ์ผ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. this์˜ ์†์„ฑ ์ ‘๊ทผ๊ณผ ๋‹ฌ๋ฆฌ ์ปดํŒŒ์ผ๋œ ํ…œํ”Œ๋ฆฟ ์ฝ”๋“œ๋Š” ์ธ์Šคํ„ด์Šค ํ”„๋ก์‹œ ์—†์ด <script setup> ๋‚ด๋ถ€์— ์„ ์–ธ๋œ ๋ณ€์ˆ˜์— ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๊ฒƒ์€ ๋ชจ๋“  ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ์•ˆ์ „ํ•˜๊ฒŒ ๋‹จ์ถ•ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋‚˜์€ ์ถ•์†Œ๋กœ ์ด์–ด์ง„๋‹ค.



1.4 VS Options API

์•„๊นŒ์˜ Composion API๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋ฅผ Options API๋กœ ์ž‘์„ฑํ•ด๋ณด์ž.

Composition API ์˜ˆ์‹œ

<template>
  	<button @click="plus()">์ˆซ์ž: {{ cnt }}</button>
</template>

<script setup>
import { ref, onMounted } from 'vue'

const cnt = ref(0)
const plus = () => { cnt.value++ }
const double = computed(() => cnt.value * 2);

</script>

Options API ์˜ˆ์‹œ

<template>
	<button @click="plus()">{{ cnt }}</button>
</template>

<script>

export default {
    data () {
        return {
            cnt: 0,
        }
    },
    methods: {
       	plus () {
            ++this.cnt;
        },
    },
    computed: {
        double () {
            return this.cnt * 2;
        }
    }
}
</script>

Composition API์™€ Options API์˜ ๊ตฌ์กฐ์  ์ฐจ์ด๊ฐ€ ๋Š๊ปด์ง€๋Š”๊ฐ€?

Composition API๋Š” data, methods, computed๋กœ ๋กœ์ง์„ ๊ตฌ์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋˜ํ•œ, export default {}๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ, ์ผ๋ฐ˜์ ์ธ JavaScript๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ปดํฌ๋„ŒํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

Options API๋Š” ์ •ํ•ด์ง„ ๊ตฌ์กฐ๋กœ, ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์ƒ๊ฐ์„ '๋œ' ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ, ๋‹ค์–‘์„ฑ ์—†์ด ๊ทœ์ •๋œ ์ฝ”๋“œ ๊ตฌ์„ฑ ํŒจํ„ด์— ๊ฐ‡ํžˆ๊ฒŒ ๋˜๋ฏ€๋กœ ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ ์ฝ”๋“œ ํ’ˆ์งˆ์„ ๋ฆฌํŒฉํ† ๋งํ•˜๊ฑฐ๋‚˜ ๊ฐœ์„ ํ•˜๊ธฐ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๋‹ค. ์ด์™€ ๊ด€๋ จํ•˜์—ฌ ์ปดํฌ์ง€์…˜ API๋Š” ๊ฑฐ์‹œ์ ์œผ๋กœ(ํ˜น์€ ์žฅ๊ธฐ์ ์œผ๋กœ) ๋” ํฌ๊ณ  ๋” ๋‚˜์€ ํ™•์žฅ์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค.




ํ•œ์ค„์“ฐ๊ธฐ

ํ˜„์žฌ ํšŒ์‚ฌ์—์„œ ๋„ฅ์‚ฌํฌ๋กœ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ Vue๋กœ ์ „ํ™˜ํ•˜๋Š” ์ž‘์—…์„ ๋งก๊ณ  ์žˆ๋‹ค.

๋ฒ„์ „๊ณผ API ์„ ํƒ์— ๋”ฐ๋ฅธ ๊ณ ๋ฏผ์„ ํ–ˆ์„ ๋•Œ, Vue2๋Š” ์ง€์› ์ข…๋ฃŒ ์˜ˆ์ •์ด๋ฉฐ ๋” ์ด์ƒ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— Vue3๋ฅผ ์ฑ„ํƒํ–ˆ๋‹ค. Vue3์— ๋Œ€ํ•œ ์ž๋ฃŒ๋Š” ๋งŽ์ง€ ์•Š์ง€๋งŒ, ์žฅ๊ธฐ์ ์œผ๋กœ ์ข‹์€ ์„ ํƒ์ด์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

๋˜ํ•œ, ํ˜„์žฌ ํŒ€์˜ ๊ฐœ๋ฐœ์ž๋“ค์ด ๋„ฅ์‚ฌํฌ๋กœ์˜ JavaScript ๊ฐœ๋ฐœ์— ์ต์ˆ™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•˜์„ ๋•Œ Options API๋ณด๋‹ค Composition API๊ฐ€ ๋” ์ข‹์€ ๊ฐ€๋…์„ฑ๊ณผ ์ดํ•ด๋„๋ฅผ ๊ฐ€์งˆ ๊ฒƒ์ด๋ผ ํŒ๋‹จํ–ˆ๋‹ค.
Vue๊ณต์‹ ๋ฌธ์„œ์—๋„, Vue3๋ฅผ ์‚ฌ์šฉ์‹œ์— Composition API๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ–ˆ์œผ๋‹ˆ ๋ง์ด๋‹ค.

์ด๋ฒˆ์— ํ˜‘๋ ฅ์—…์ฒด์™€ Composition APi, Options API ์ฑ„ํƒ ๊ด€๋ จ์œผ๋กœ ํšŒ์˜๋ฅผ ์ง„ํ–‰ํ•ด์„œ, ์ •๋ฆฌํ•  ๊ฒธ Composition API์— ๋Œ€ํ•ด ํฌ์ŠคํŒ… ํ•ด๋ณด์•˜๋‹ค.

๋‹ค์Œ์—๋Š” <script setup>๊ณผ arrow function์— ๋Œ€ํ•ด์„œ๋„ ๋‹ค๋ค„๋ณด๊ฒ ๋‹ค.



์ฐธ๊ณ ๋ฌธํ—Œ
https://ko.vuejs.org/

profile
ํ•˜์ด ์ด๊ฒƒ์€ ๋‚˜์˜ ๊นจ์ง€๊ณ  ๋ถ€์„œ์ง€๋Š” ์ƒ ์Šคํ† ๋ฆฌ์ž…๋‹ˆ๋‹ค

0๊ฐœ์˜ ๋Œ“๊ธ€