今回は、Vue 3でよく話題になる「Options API」と「Composition API」の違いについてお話しします。
どちらもVue 3で使える機能ですが、「何が違うんんすか?」という方もいますよね。
それぞれの特徴や使い方を理解することで、あなたのプロジェクトに最適な選択ができるようになりましょう。
Options APIとは
まず、Options APIについて見ていきましょう。
Options APIは、Vue 2から使われている従来の書き方で、Vue 3でも引き続きサポートされています。
こちらは、Vueの公式ドキュメントや多くのチュートリアルで馴染みのある形式で、以前からのvueを使用している方にもわかりやすいものだと思います。
Options APIでは、コンポーネントをオブジェクト形式で定義します。
このオブジェクトには、data
、methods
、computed
、watch
など、コンポーネントの各要素がオプションとしてまとめられています。
Options APIでの書き方
具体的なコード例を見てみましょう。
export default {
data() {
return {
message: 'Hello, Vue!',
count: 0,
};
},
methods: {
increment() {
this.count++;
},
},
computed: {
reversedMessage() {
return this.message.split('').reverse().join('');
},
},
watch: {
count(newValue, oldValue) {
console.log(`Count changed from ${oldValue} to ${newValue}`);
},
},
};
この例では、data
オプションで状態(message
とcount
)を定義し、methods
オプションでメソッドを定義しています。
また、computed
オプションでは計算プロパティを、watch
オプションでは状態の変化を監視するウォッチャーを定義しています。
Composition APIとは
次に、Composition APIについて説明します。
Composition APIはVue 3で導入された新しい書き方で、
コンポーネントのロジックをより柔軟に、再利用しやすく管理できるように設計されています。
Composition APIでは、関数を使ってコンポーネントのロジックを定義します。
これにより、複数のロジックを一つの関数にまとめたり、
他のコンポーネント間でロジックを共有したりすることが簡単になります。
React Hooksがわかる方はそのイメージが近いですね。
ちなみにCompositionとは「構成、組み立て」という意味があります。
ロジックを合成関数としてカプセル化することからこの名前がついているのかもしれませんね。
Composition APIでの書き方
それでは、同じ機能をComposition APIでどのように書くか見てみましょう。
import { ref, computed, watch } from 'vue';
export default {
setup() {
const message = ref('Hello, Vue!');
const count = ref(0);
const increment = () => {
count.value++;
};
const reversedMessage = computed(() => {
return message.value.split('').reverse().join('');
});
watch(count, (newValue, oldValue) => {
console.log(`Count changed from ${oldValue} to ${newValue}`);
});
return {
message,
count,
increment,
reversedMessage,
};
},
};
Composition APIでは、setup
関数の中でロジックを記述します。
ref
関数を使ってリアクティブな状態を作成し、computed
で計算プロパティを定義します。
また、watch
で状態の変化を監視することもできます。
setup
関数で定義したデータや関数を返すことで、テンプレート内で使用できるようになります。
どちらを使えばいいのか
Options APIとComposition APIのどちらを使うべきか迷うことがあるかもしれません。
それぞれの特徴や使い分けのポイントを紹介します。
Options APIのメリット
情報が豊富
Vue 2から使われているため、学習リソースが豊富です。
ただし、vue3ではComposition APIを利用した書き方が推奨されているため、今後は縮小していくものかもしれません。
小さなプロジェクトではわかりやすい
規模の小さいプロジェクトではコードがシンプルで読みやすいです。
Composition APIのメリット
柔軟性が高い
ロジックを関数に分けて整理しやすく、再利用が容易で自由度も高いです。
大規模なプロジェクトにも対応していける
自由にロジックを切り出すことができるようになるため、複雑なコンポーネントも
開発の都合に柔軟に合わせながら整理しやすくなります。
Composition APIはデメリットはないのか?
Vue 3から新たに出たComposition API、そのデメリットは強いていえば「自由すぎること」です。
これまでVueが暗黙的に行ってくれていたルールの管理上から外れることで自由さを手に入れ、
大規模プロジェクトにも対応できるようにはなりましたが、反面、開発者サイドの設計やアーキテクチャ次第で
適当にやればめちゃくちゃになるし、しっかり考えればキレイなコードになるでしょう。
どちらも一長一短あり、どちらがダメということはないですが、特徴を捉えて選定できればいいですね。
まとめ
Options APIとCompositon API、どちらを選ぶかは、プロジェクトの規模や目的などに依存します。
どちらか一方にこだわる必要はなく、プロジェクトに応じて使い分けることができます。
特徴を把握しておくことで必要に応じて使い分けができるようになるでしょう。