24
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

VueAdvent Calendar 2022

Day 17

Vue.jsでCompositionAPIを使わなくていい理由と、それでも理解しなければならない理由

Last updated at Posted at 2022-12-17

本記事は Vueのカレンダー | Advent Calendar 2022 - Qiita の17日目の記事です。

まぁポエムみたいな記事なんですが。

Vue3 とComposition API

Vue3にComposition APIという新しいコンポーネントのインターフェースが登場しました。
これにより、コードをピュアなJSとして扱うことができ、型付がより便利になったりコードの分割を可能にします。

で、あなたにComposition APIは必要なのか

「せっかくVue3に挑戦するんだし、Composition APIで書きたいよね〜」と思っているみなさん、9割くらいはその必要はないと私は思っています。

なぜなら、「CompositionAPIでできることは基本的に増えない」「(コードベースが大きくならない限りは)一つのファイルにあるほうがまとまってて見やすい」「というかrefとかreactiveとか認知負荷が大きい」というものです。

Composition APIを使う必要があるのは、コードが大きくて見づらいんじゃい!とか整理したくなったとか、コンポーネントのロジックを再利用したくなったときだけで十分でしょう。

Composition APIでやってみたけどよくわかんねー!ハマった!もう嫌だ!ってなる前に、Options APIで書き直してみるという選択肢を忘れないでください。

Options APIのほうが歴史的にドキュメントも多く、公式ドキュメントでもその多くのページをOptions APIに割かれています。
むしろ、Composition APIのほうは「これを使おうとしてるあなたにならこれくらいで十分でしょ」くらいのドキュメントしか割かれていません。

Composition APIとOptionsAPIとの区別はつくようにする必要がある

インターネット上の記事という資産は是非活用していきたいですよね。
ところが、Vue3の登場とともに書き方がComposition APIとOptions APIのものとで混在するようになりました。

これによって、「自分が読んでいる記事はどちらのAPIで書かれているのか」「自分のプロジェクトならどう書けばいいのか」を意識する必要があります。

  • <script setup> から始まっている → Composition API
  • setup() メソッドがあり、その中にかかれている → Compotision API
  • refとかreactive とかがでてくる → Composition API

setup()メソッドの中でreturn されたメソッドは、 methods 配下に置かれたのと同様に振る舞います。
ref, reactive は data() 配下に置かれたのと概ね同様に振る舞います。computed も同様。
watch, watchEffect はsetup() メソッド内で呼べば(returnしなくても)watch配下に置いたのと同様に振る舞います。
setup()メソッド内で実行したロジックはmounted 相当で呼ばれます。他のライフサイクルは対応するメソッドの中のものがいい感じにマージされます。

ぐらい?ですかね。

コーディングルールとしてのComposition APIとOptions APIについて

複数人でVueを書くということもあるかもしれません。
その場合、コーディングルールとしてComposition API(またはOptions API)を強制するかという問題に直面することがあります。
これは難しい問題で、難しいです(ぐるぐる目


結論的なもの

オチをなにも書いてなかったのでモヤっとした記事だったので追記。
あなたがフロントエンドに初めて挑戦するならComposition APIは必要ないでしょう。
また、Vue2は経験が十分にあったとしても、今のコードの複雑性に課題感を抱えていなければ必要ないでしょう。

やってみた系の記事でComposition APIで書かれているものがたくさんでてくるのははしかにかかってると思っていいと思います。

Composition APIを使いこなすには、センスや経験といったものが必要となります。
ReactでHooksの経験があるなら似たような感覚で使えると思います。
今のコードを保守するのは限界だ!ここにComposition APIがハマりそうだぞ?そう思ったときにあなたの強力な武器になってくれるでしょう。

24
7
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
24
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?