0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Vue.js] Options API と Composition API の違い

Posted at

In a nutshell

Vue.js には主に Options API と Composition API の2つの記述方法がある.前者は学びやすく,後者は拡張性や再利用性に優れる.プロジェクトの規模や目的に応じて使い分けることが重要である.

はじめに

Vue.jsについて学ぶ際に,最初に困ったのが Options API と,Composition APIだった.両者の違いについて改めて理解をする為に,以下の記事として概要を纏めた.

予想される読み手

  • Vue.js について初学者であり,学びたい
  • 将来的にフロントエンド開発に携わる予定のある人

1. Options API

Options API とは,Vue 2 系まで主に使用されていた記述スタイルであり,コンポーネントの構成要素を data, methods, computed, watch などの「オプション」として分けて記述する方式である.

特徴

  • コンポーネントの構成が明確で読みやすい
  • 初学者にとって直感的で理解しやすい
  • 複数の機能が絡み合う場合,処理の見通しが悪くなりやすい
  • 複雑なロジックの再利用が難しい(共通処理の切り出しが困難)

実例(カウント機能)

<template>
  <div>
    <p>{{ count }}</p>
    <button @click="increment">+1</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      count: 0
    }
  },
  methods: {
    increment() {
      this.count++
    }
  }
}
</script>

このように,状態 (count) は data() に,動作 (increment) は methods に定義する.構造が明確であり,小規模なプロジェクトでは特に有効である.

2. Composition API

Composition API は,Vue 3 系で導入された新しい記述スタイルである.ロジックを setup() 関数や <script setup> の中に記述し,関連する状態と振る舞いを関心ごとにまとめることができる.

特徴

  • 状態とロジックを同じスコープに定義できるため,見通しが良い
  • 機能単位でコードを整理できるため,大規模開発に向いている
  • 関数として切り出しやすく,ロジックの再利用性が高い(Composable)
  • TypeScript との相性が良く,型安全な開発がしやすい
  • 初学者にはやや抽象度が高く,慣れるまでに時間を要する

実例(カウント機能)

<template>
  <div>
    <p>{{ count }}</p>
    <button @click="increment">+1</button>
  </div>
</template>

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

const count = ref(0)

function increment() {
  count.value++
}
</script>

ref() を用いてリアクティブな状態を定義し,関数も同じスコープ内で記述することで,処理がまとまりやすくなる.

両者の比較表

項目 Options API Composition API
導入バージョン Vue 2 〜 Vue 3 〜
コードの分離方法 機能ごとに分離(data, methods など) 関心ごとに分離(状態と処理を同じ場所に)
ロジックの再利用性 低い 高い(Composable 関数の利用が可能)
TypeScript との相性 普通 非常に良い
初学者への分かりやすさ 高い やや難しい

どちらを使うべきなのか

  • 学習初期や小〜中規模のプロジェクトでは Options API を選ぶと,学習コストが低く始めやすい.

  • 機能の再利用性やロジックの整理が重要な 中〜大規模プロジェクトでは Composition API を選ぶことでメリットが大きい.

  • Vue 3 では,どちらの記法も利用可能であり,両者を併用することも可能である..

  • 初学者にとっては Options API の方が理解しやすいとされているが,個人の考えとして,今後のスキル拡張性,柔軟性を担保するという観点ではComposition API に早い段階で慣れておく方が良いと感じている.

Summary

  • Options API は Vue 2 系で使用されていた,直感的な記述方法である
  • Composition API は Vue 3 で導入され,柔軟かつ再利用しやすい
  • 小規模な学習用途では Options API が適している
  • 大規模開発や TypeScript との連携を意識するなら Composition API が有利
  • 両者は Vue 3 において共存でき,プロジェクトに応じた選択が可能
  • 将来の技術拡張性を考慮し,Composition API に慣れるのも一つの選択肢である

References

Vue.js GUIDE Getting Started Introduction
Vue.js GUIDE Extra Topics Composition API FAQ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?