Composition API - daniel-qa/Vue GitHub Wiki

Composition API

  • 檢查安裝必要的依賴並正確配置 Vue 2.7 的 Composition API 支援。
npm list @vue/composition-api

差異點:組件的註冊方式

  • Vue 3 + <script setup>

引入元件時,就自動完成註冊

不需要手動寫 components: { ... }

使用上更精簡、開發體驗更佳

<script setup>
import MyButton from './MyButton.vue'
// 自動註冊完成!直接在 template 使用即可
</script>

<template>
  <MyButton />
</template>
  • Vue 2.7 + Composition API

雖然支援 Composition API,但仍是基於 Vue 2 的元件架構

所以仍然需要 手動註冊元件

<script>
import { defineComponent } from 'vue'
import MyButton from './MyButton.vue'

export default defineComponent({
  components: {
    MyButton
  },
  setup() {
    // 邏輯放這邊
  }
})
</script>

<template>
  <MyButton />
</template>
  • 快速記憶法

Vue 3 <script setup>:「引入即註冊」

Vue 2.7:「還是得乖乖手動來」

要使用 return

// 返回要在模板中使用的數據和方法
return {
  message,      
  updateMessage
}

在 setup()

函數內部定義的變數和函數默認是私有的,模板無法訪問

只有通過 return 返回的數據和方法才能在模板中使用(如 {{ message }} 或 @click="updateMessage")

  • 封裝性更好:

這種設計允許您在 setup() 中定義一些輔助變數或函數,但不必全部暴露給模板


  • 在 Vue 2.7 版本

Vue 2.7 版本(您目前使用的版本, 也是 vue2 最後版本)已經將 Composition API 直接整合到核心庫中,所以不需要再安裝額外的 @vue/composition-api 套件。您可以直接從 Vue 中引入這些功能:

  • defineProps / defineEmits:用於 script setup 中定義 props 和 emits。

  • onMounted, onUnmounted:替代 Vue 2 的 mounted, destroyed。

⚠️ **GitHub.com Fallback** ⚠️