【vue3】Options APIとComposition APIの違いをわかりやすく解説

今回は、Vue 3でよく話題になる「Options API」と「Composition API」の違いについてお話しします。

どちらもVue 3で使える機能ですが、「何が違うんんすか?」という方もいますよね。

それぞれの特徴や使い方を理解することで、あなたのプロジェクトに最適な選択ができるようになりましょう。

目次

Options APIとは

まず、Options APIについて見ていきましょう。

Options APIは、Vue 2から使われている従来の書き方で、Vue 3でも引き続きサポートされています。

こちらは、Vueの公式ドキュメントや多くのチュートリアルで馴染みのある形式で、以前からのvueを使用している方にもわかりやすいものだと思います。

Options APIでは、コンポーネントをオブジェクト形式で定義します。

このオブジェクトには、datamethodscomputedwatchなど、コンポーネントの各要素がオプションとしてまとめられています。

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オプションで状態(messagecount)を定義し、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、どちらを選ぶかは、プロジェクトの規模や目的などに依存します。

どちらか一方にこだわる必要はなく、プロジェクトに応じて使い分けることができます。

特徴を把握しておくことで必要に応じて使い分けができるようになるでしょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次