📌 ディレクティブ (テンプレート構文)
HTML テンプレート内で DOM を操作するための特別な属性です。
ディレクティブ | 説明 | 使用例 |
---|---|---|
v-text |
要素の `textContent` を更新します。内部の既存コンテンツは上書きされます。 | <span v-text="message"></span> |
v-html |
要素の `innerHTML` を更新します。XSS 脆弱性に注意が必要です。Vue テンプレート構文は処理されません。 | <div v-html="rawHtml"></div> |
v-show |
条件に基づいて要素の CSS `display` プロパティを切り替えて表示/非表示を制御します。要素は常にレンダリングされます。 | <p v-show="isVisible">表示されています</p> |
v-if |
条件に基づいて要素をレンダリングします。条件が false の場合、要素とその中のコンポーネント/ディレクティブは破棄されます。 | <div v-if="type === 'A'">タイプAです</div> |
v-else-if |
`v-if` または `v-else-if` の後に続く条件ブロックです。先行する条件が false で、自身の条件が true の場合にレンダリングされます。 | <div v-else-if="type === 'B'">タイプBです</div> |
v-else |
`v-if` または `v-else-if` の後に続くブロックです。先行する全ての条件が false の場合にレンダリングされます。 | <div v-else>その他のタイプです</div> |
v-for |
配列やオブジェクトに基づいて要素またはテンプレートブロックを複数レンダリングします。 |
|
v-on (省略形: @ ) |
DOM イベントを購読し、イベント発生時に JavaScript コードを実行します。イベント修飾子やキー修飾子を利用できます。 |
|
v-bind (省略形: : ) |
HTML 属性をコンポーネントのプロパティにリアクティブにバインドします。クラスやスタイルには特別な機能(配列やオブジェクト構文)があります。 |
|
v-model |
フォームの input 要素やコンポーネントで双方向バインディングを作成します。input の種類に応じて適切な方法で動作します。 |
|
v-slot (省略形: # ) |
名前付きスロットや、子コンポーネントからデータを受け取るスコープ付きスロットを指定します。 |
|
v-pre |
この要素とその子要素のコンパイルをスキップします。生の Mustache タグを表示する場合などに使用します。 | <span v-pre>{{ これはコンパイルされません }}</span> |
v-once |
要素とコンポーネントを一度だけレンダリングし、以降の更新をスキップします。静的なコンテンツのパフォーマンス最適化に使用します。 | <span v-once>これは変更されません: {{ msg }}</span> |
v-memo |
要素またはコンポーネントのサブツリーの更新をメモ化します。依存配列の値が変更された場合のみ再レンダリングします。パフォーマンス最適化用です。 | <div v-memo="[valueA, valueB]">...</div> |
v-cloak |
Vue インスタンスがコンパイルを完了するまで、この要素を非表示にします。未コンパイルのマスタッシュ構文が一瞬表示されるのを防ぎます。CSS ルールと組み合わせて使用します。 |
|
⚙️ コンポーネント (Component)
UI を再利用可能な独立した部品に分割するための仕組みです。
概念/API | 説明 | 例 (SFC – <script setup> 形式) |
---|---|---|
定義 (SFC) | .vue 拡張子を持つ単一ファイルコンポーネントで定義します。<template> , <script> , <style> ブロックで構成されます。 |
|
登録 (ローカル) | 親コンポーネントの <script> ブロック内でインポートし、<template> 内で使用します。 |
|
登録 (グローバル) | アプリケーションインスタンスの .component() メソッドで登録します。アプリ全体で利用可能になります。 (通常 main.js などで設定) |
|
プロパティ (Props) | 親コンポーネントから子コンポーネントへデータを渡すためのカスタム属性です。defineProps で定義します。 |
|
イベント (Emits) | 子コンポーネントから親コンポーネントへイベントを通じて通知やデータを送る仕組みです。defineEmits で発行可能なイベントを定義し、emit 関数でイベントを発行します。 |
|
スロット (Slots) | 親コンポーネントが子コンポーネントのテンプレートの一部にコンテンツを挿入できるようにする仕組みです。デフォルトスロット、名前付きスロット、スコープ付きスロットがあります。 |
|
動的コンポーネント | 特別な <component> 要素と :is 属性を使って、実行時にコンポーネントを動的に切り替えます。 |
|
<keep-alive> |
非アクティブなコンポーネントインスタンスを破棄する代わりにキャッシュします。動的コンポーネントやルータービューと組み合わせて使用します。 |
|
<Teleport> |
コンポーネントのテンプレートの一部を、コンポーネント階層外の DOM ノードに「テレポート」させます。モーダルや通知などに便利です。 |
|
<Suspense> |
非同期コンポーネントの依存関係が解決されるのを待つ間に、ローディング状態を表示します。実験的な機能です。 |
|
🔄 リアクティビティ & 状態管理 (Reactivity & State Management)
データの変更を検知し、自動的に DOM を更新する仕組みと、アプリケーション全体の状態を管理する手法です。
概念/API | 説明 | 例 (Composition API) |
---|---|---|
ref |
プリミティブ値(String, Number, Boolean など)をリアクティブな参照にラップします。値へのアクセス/変更には .value を使用します。 |
|
reactive |
オブジェクトをリアクティブなプロキシに変換します。ネストされたプロパティもリアクティブになります。ref と異なり .value は不要です。 |
|
computed |
リアクティブな依存関係に基づいて算出される値を定義します。依存データが変更されると自動的に再計算されます。結果はキャッシュされます。 |
|
watch |
特定のリアクティブなソース(ref, reactive オブジェクト, getter 関数, またはそれらの配列)を監視し、値が変更されたときにコールバック関数を実行します。 |
|
watchEffect |
リアクティブな依存関係を自動的に追跡し、依存関係が変更されると即座にコールバック関数を再実行します。初期実行も行われます。 |
|
Pinia (状態管理) | Vue の公式状態管理ライブラリ(Vuex の後継)。型安全で直感的な API を提供します。ストア(State, Getters, Actions)を定義して使用します。 |
|
Provide / Inject | 祖先コンポーネントから子孫コンポーネントへ、階層の深さに関わらずデータを直接渡す仕組みです。「プロパティのバケツリレー」を避けるのに役立ちます。 |
|
🔄 ライフサイクルフック (Lifecycle Hooks)
コンポーネントインスタンスの特定の段階で実行される関数です。
フック (Composition API) | フック (Options API) | 説明 |
---|---|---|
(setup 内) |
beforeCreate |
インスタンスが初期化され、props が解決された後、リアクティブなデータなどがセットアップされる前に呼ばれます。Composition API の setup 関数内で直接記述されたコードに相当します。 |
(setup 内) |
created |
リアクティブなデータ、算出プロパティ、メソッド、ウォッチャなどがセットアップされた後に呼ばれます。DOM マウントはまだ開始されていません。Composition API の setup 関数内で直接記述されたコードの多くがこの段階に相当します。 |
onBeforeMount |
beforeMount |
コンポーネントが DOM にマウントされる直前に呼ばれます。初回レンダリングはまだ行われていません。 |
onMounted |
mounted |
コンポーネントが DOM にマウントされた後に呼ばれます。DOM へのアクセスが可能になります。子コンポーネント全てのマウントも保証されます。サーバーサイドレンダリングでは呼ばれません。 |
onBeforeUpdate |
beforeUpdate |
リアクティブなデータの変更により、コンポーネントの DOM ツリーが更新される直前に呼ばれます。パッチ適用前の DOM 状態にアクセスできます。 |
onUpdated |
updated |
リアクティブなデータの変更により、コンポーネントの DOM ツリーが更新された後に呼ばれます。 |
onBeforeUnmount |
beforeUnmount (Vue 3) / beforeDestroy (Vue 2) |
コンポーネントインスタンスがアンマウントされる直前に呼ばれます。インスタンスはまだ完全に機能しています。 |
onUnmounted |
unmounted (Vue 3) / destroyed (Vue 2) |
コンポーネントインスタンスがアンマウントされた後に呼ばれます。イベントリスナ、ウォッチャ、子コンポーネントなどは全て解除/破棄されています。 |
onErrorCaptured |
errorCaptured |
任意の子孫コンポーネントからキャプチャされたエラー発生時に呼ばれます。エラー処理に使用できます。 |
onRenderTracked |
renderTracked |
(開発モードのみ) リアクティブな依存関係が仮想 DOM の再レンダリングによって追跡されたときに呼ばれます。デバッグ用です。 |
onRenderTriggered |
renderTriggered |
(開発モードのみ) リアクティブな依存関係が仮想 DOM の再レンダリングをトリガーしたときに呼ばれます。デバッグ用です。 |
onActivated |
activated |
<KeepAlive> 内のコンポーネントがキャッシュから挿入されたときに呼ばれます。 |
onDeactivated |
deactivated |
<KeepAlive> 内のコンポーネントがキャッシュされ、削除されたときに呼ばれます。 |
// Composition API でのフック使用例
import { onMounted, onUpdated, onUnmounted } from 'vue'
onMounted(() => {
console.log('Component Mounted!')
})
onUpdated(() => {
console.log('Component Updated!')
})
onUnmounted(() => {
console.log('Component Unmounted!')
})
🧭 ルーティング (Vue Router)
シングルページアプリケーション (SPA) でのページ遷移を管理する公式ライブラリです。
概念/API | 説明 | 例 |
---|---|---|
インストール | npm または yarn を使ってプロジェクトに追加します。 | npm install vue-router@4 (Vue 3) |
ルーター設定 | createRouter でルーターインスタンスを作成し、ルート定義 (パスとコンポーネントのマッピング) と履歴モード (createWebHistory or createWebHashHistory ) を指定します。通常 router/index.js などで設定します。 |
|
メインファイルへの統合 | 作成したルーターインスタンスを Vue アプリケーションインスタンスに登録します。(通常 main.js ) |
|
<router-link> |
宣言的なナビゲーションのためのコンポーネント。to プロパティでターゲットルートを指定します。デフォルトでは <a> タグとしてレンダリングされます。アクティブなリンクには自動的にクラスが付与されます。 |
|
<router-view> |
現在のルートにマッチしたコンポーネントを描画するためのプレースホルダーです。 |
|
プログラムナビゲーション | JavaScript 内からルート遷移を行います。useRouter (Composition API) または this.$router (Options API) を使用します。 |
|
ルートパラメータ | URL パスの一部を動的に変化させ、コンポーネントにデータを渡します (例: /users/:id )。useRoute (Composition API) または this.$route.params (Options API) でアクセスします。 |
|
ナビゲーションガード | ルート遷移の前、途中、後で実行されるフック関数。認証チェック、データ取得、遷移キャンセルなどに使用します。グローバルガード、ルートごとのガード、コンポーネント内のガードがあります。 |
|
ネストされたルート | コンポーネント内にさらに <router-view> を配置し、親子関係のあるルート構造を作成します。ルート定義の children プロパティで設定します。 |
|
コメント