これらは Vue コンポーネントを記述する 2 つの方法です。Options API は オプションタイプ (data、methods、computed) でコードを整理し、Composition API は ref、computed、 などの関数を使って でコードを整理します。
setup<script>
export default {
data() { return { count: 0 }; },
computed: { double() { return this.count * 2; } },
methods: { increment() { this.count++; } },
mounted() { console.log("mounted"); },
};
</script>
すべては固定のバケット (data、methods、computed、lifecycle) にグループ化されます。シンプルで発見しやすいですが、単一の 機能 のロジックはこれらのバケット全体に分散します。
<script setup>
import { ref, computed, onMounted } from "vue";
// all the logic for "counter" lives together
const count = ref(0);
const double = computed(() => count.value * 2);
function increment() { count.value++; }
onMounted(() => console.log("mounted"));
</script>
1 つの関心事に対する状態、computed、methods、lifecycle が 一緒に あり、<script setup> により簡潔になります (this がなく、return もありません)。
Composition API により、ステートフルなロジックを抽出して再利用 できます (composables として):
// useCounter.js — reusable across any component
export function useCounter() {
const count = ref(0);
const increment = () => count.value++;
return { count, increment };
}
<script setup>
const { count, increment } = useCounter(); // reuse anywhere
</script>
これはロジック再利用を明確に解決します。これは Options API では不便でした (mixin は命名衝突と不明確なソースがありました)。
Options API → simpler mental model, fine for small components, familiar to beginners
Composition API → better for large components, TypeScript, and reusing logic (composables)
Composition API (<script setup> を使用) は、特に TypeScript を使う新しい Vue 3 プロジェクトの 推奨デフォルト です。
Composition API は、コンポーネントロジックを整理し再利用するための Vue 3 の回答です。
コードを機能ごとにグループ化し (オプションタイプではなく)、composables を有効にすることが、モダン Vue スタイルを説明し、複雑なコンポーネントと TypeScript コードベースがなぜそれを好むのかを理解することが重要です。
両方とも完全にサポートされており、混在させることもできます。