vue3-frontend について
vue3-frontendは、Vue 3開発向けのスキルです。コンポーネントやコンポーザブルのテンプレート、コードレビュー、Vue 2からの移行ガイドを備え、一般的なフロントエンド作業の手順と資料を提供します。
主な機能
- 01Vue 3コンポーネントテンプレート
- 02再利用可能なコンポーザブルテンプレート
- 03Vue 2移行ガイド
- 04コードレビューと最適化
- 05一般的な作業パターン
活用シーン
- 01フォーム、テーブル、モーダルの作成
- 02再利用可能なデータ取得ロジックの抽出
- 03Vue 2コードベースの移行
- 04Vue 3のリアクティビティと性能の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ eva813/ skills-base --skill vue3-frontendインストール後、Claude Code で/vue3-frontendを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/component-templates/BasicComponent.vueDataTable.vueModal.vueassets/composable-templates/useFatch.jsuseLocalStorage.jsreferences/ best-practices.md common-patterns.mdcomposition-api.mdmigration-guide.md詳細
Vue 3 フロントエンド開発スキル
包括的な Vue 3 フロントエンド開発スキルです。コンポーネントのテンプレート、ベストプラクティスガイド、移行支援、一般的なパターンを提供します。
主な機能
1. コンポーネント開発
<script setup> 構文と Composition API を使用して、新しい Vue 3 コンポーネントを作成します。
利用可能なテンプレート:
assets/component-templates/BasicComponent.vue- 基本的なコンポーネントのテンプレートassets/component-templates/FormComponent.vue- 完全なフォームコンポーネント(バリデーションを含む)assets/component-templates/DataTable.vue- データテーブルコンポーネント(並べ替え、ページネーション、検索を含む)assets/component-templates/Modal.vue- モーダルコンポーネント(すべての機能を含む)
使用方法:
# 複製範本到專案
cp assets/component-templates/BasicComponent.vue src/components/YourComponent.vue
2. Composable の開発
再利用可能なロジックの抽象化を作成します。
利用可能なテンプレート:
assets/composable-templates/useFetch.js- API リクエストのラッパーassets/composable-templates/useLocalStorage.js- localStorage と同期する状態
使用方法:
# 複製到專案
cp assets/composable-templates/useFetch.js src/composables/
3. Vue 2 から Vue 3 への移行
Vue 2 プロジェクトから Vue 3 への移行を支援します。
移行ワークフロー:
- 破壊的変更については
references/migration-guide.mdを読みます - 既存のコードで非推奨の API を特定します
- ガイドの移行パターンを適用します
- 十分にテストします
主な移行領域:
- グローバル API(Vue.use → app.use)
- リアクティビティシステム(Vue.set → 直接代入)
- v-model 構文(value/input → modelValue/update:modelValue)
- ライフサイクルフック(destroyed → unmounted)
- フィルターの削除(computed/methods を使用)
- イベントバスの置き換え(mitt/Pinia を使用)
4. コードレビューと最適化
Vue 3 のコード品質を確認して最適化します。
レビュー用チェックリスト:
- パフォーマンス向上のために
<script setup>を使用する - ref/reactive を適切に使用する
- computed と methods を使い分ける
- v-show と v-if を使い分ける
- v-for で key を使用する
- コンポーネントを分割する
- props を検証する
- エラーを処理する
リファレンスドキュメント
必読のリファレンス
特定のタスクに取り組む際は、必ず以下を読みます。
移行タスク:
references/migration-guide.md- すべての破壊的変更を網羅した、Vue 2 から Vue 3 への完全な移行ガイド
Composition API の使用:
references/composition-api.md- Composition API の包括的なリファレンス(ref、reactive、computed、watch、ライフサイクルなど)
ベストプラクティス:
references/best-practices.md- コンポーネント設計、リアクティビティ、パフォーマンス、コード構成、エラー処理、TypeScript を網羅した Vue 3 のベストプラクティス
一般的なパターン:
references/common-patterns.md- フォーム処理、データ取得、リストのレンダリング、モーダル、状態管理、ルーティング、i18n
各リファレンスを読むタイミング
コンポーネントを書く前に:
- コンポーネント設計パターンについて
best-practices.mdを確認します common-patterns.mdの関連パターンを確認します
移行の前に:
migration-guide.md全体を読みます- 新しい API 構文について
composition-api.mdを参照します
機能を実装するとき:
- フォーム →
common-patterns.mdの Form Handling セクション - データ取得 →
common-patterns.mdの Data Fetching セクション - 状態管理 →
common-patterns.mdの State Management セクション - i18n →
common-patterns.mdの i18n セクション
一般的な開発ワークフロー
ワークフロー 1:新しいコンポーネントを作成する
# 1. Choose appropriate template
view assets/component-templates/
# 2. Read best practices
view references/best-practices.md
# 3. Copy and customize template
cp assets/component-templates/BasicComponent.vue src/components/MyComponent.vue
# 4. Follow naming conventions (PascalCase)
# 5. Define props with validation
# 6. Use <script setup> syntax
# 7. Keep component focused and small
ワークフロー 2:Vue 2 のコードを Vue 3 に移行する
# 1. Read migration guide first
view references/migration-guide.md
# 2. Identify patterns to migrate
# - Options API → Composition API
# - this.$set → direct assignment
# - filters → computed/methods
# - Event Bus → mitt/Pinia
# 3. Apply changes systematically
# 4. Test each change
# 5. Update dependencies
ワークフロー 3:データ取得を実装する
# 1. Review data fetching patterns
view references/common-patterns.md
# Look for "Data Fetching Patterns" section
# 2. Choose approach:
# - Custom composable (useFetch template)
# - VueUse (@vueuse/core)
# - TanStack Query
# 3. Implement with error handling and loading states
ワークフロー 4:パフォーマンスを最適化する
# 1. Review performance section
view references/best-practices.md
# Look for "Performance Optimization" section
# 2. Check for issues:
# - Using methods instead of computed
# - Unnecessary v-if usage
# - Missing keys in v-for
# - Large components without splitting
# - No lazy loading
# 3. Apply optimizations:
# - Use computed for derived data
# - v-show for frequent toggles
# - defineAsyncComponent for heavy components
# - Virtual scrolling for large lists
ワークフロー 5:フォームを開発する
# 1. Use form template or VeeValidate pattern
view assets/component-templates/FormComponent.vue
view references/common-patterns.md
# Look for "Form Handling Patterns" section
# 2. Implement validation
# 3. Handle errors and loading states
# 4. Add success/error feedback
クイックリファレンスコマンド
コンポーネントのテンプレート
# List all templates
ls -la assets/component-templates/
# Copy specific template
cp assets/component-templates/[TemplateName].vue src/components/
Composable のテンプレート
# List all composables
ls -la assets/composable-templates/
# Copy specific composable
cp assets/composable-templates/[composableName].js src/composables/
ドキュメントを読む
# Migration guide
view references/migration-guide.md
# Composition API reference
view references/composition-api.md
# Best practices
view references/best-practices.md
# Common patterns
view references/common-patterns.md
ベストプラクティスのまとめ
コンポーネント設計
- パフォーマンスと DX の向上のため、常に
<script setup>を使用します - props を完全に検証するよう定義します
- 再利用可能なロジックには composable を使用します
- コンポーネントは小さく、役割を絞ります(200 行未満)
- 複雑なロジックは composable に切り出します
リアクティビティ
- プリミティブには
ref()を使用します - オブジェクトには
reactive()を使用します - 派生データには
computed()を使用します - 古い値が必要な場合は
watch()を使用します - 依存関係を自動追跡するには
watchEffect()を使用します
パフォーマンス
- テンプレート内の計算には methods ではなく
computed()を使用します - 頻繁に切り替える場合は
v-showを使用します - 初回のレンダリング条件には
v-ifを使用します - v-for では常に一意の
keyを使用します defineAsyncComponent()で重いコンポーネントを遅延読み込みします- 大規模なリストには仮想スクロールを使用します
コード構成
src/
├── assets/ # Static resources
├── components/ # Reusable components
│ ├── common/ # Base components
│ ├── layout/ # Layout components
│ └── features/ # Feature components
├── composables/ # Reusable logic
├── stores/ # Pinia stores
├── router/ # Router config
├── views/ # Page components
├── utils/ # Utility functions
└── services/ # API services
TypeScript のサポート
TypeScript を使用する場合:
- インターフェースでプロパティの型を定義します
- コンポーザブルではジェネリクスを使用します
- emit を適切に型付けします
- 必要に応じて
defineComponentを使用します
詳細については、best-practices.md の TypeScript 統合のセクションを参照してください。
よくある注意点
-
リアクティブオブジェクトを分割代入するとリアクティビティが失われます
toRefs()を使用するか、プロパティに直接アクセスします
-
Vue 2 スタイルで配列/オブジェクトを直接変更する
- Vue 3 では
$setは不要で、直接変更できます
- Vue 3 では
-
ref で .value を付け忘れる
- ref は
<script>内では.valueが必要ですが、<template>内では不要です
- ref は
-
プリミティブ値に reactive() を使用する
- プリミティブ値には
ref()を、オブジェクトにはreactive()を使用します
- プリミティブ値には
-
副作用のクリーンアップを忘れる
- 必ず
onBeforeUnmount()内でクリーンアップするか、watchEffect()のクリーンアップを使用します
- 必ず
その他のリソース
- Vue 3 公式ドキュメント:https://vuejs.org/
- Vue 3 移行ガイド:https://v3-migration.vuejs.org/
- Composition API FAQ:https://vuejs.org/guide/extras/composition-api-faq.html
- VueUse:https://vueuse.org/(ユーティリティコンポーザブル)
- Pinia:https://pinia.vuejs.org/(状態管理)
このスキルを使うためのヒント
- 必ずリファレンスから始める:コーディングの前に、関連ドキュメントを読みます
- テンプレートを出発点として使用する:テンプレートがある場合は、ゼロから書かないようにします
- ワークフローに従う:ワークフローにはベストプラクティスが反映されています
- ベストプラクティスを定期的に確認する:パターンを身につけます
- 行き詰まったとき:common-patterns.md で類似の例を確認します