コーディングエージェント(Claude Code、Aider、Codexなど)のカスタムタスクによる直接比較。合格率、コスト、時間、一貫性メトリクスを測定
無料GitHub で公開
nuxt4-patterns
Nuxt 4アプリパターン — ハイドレーション安全性、パフォーマンス、ルートルール、遅延読み込み、useFetchとuseAsyncDataによるSSR安全なデータフェッチ。
含まれるファイル(1)
- SKILL.md6.7 KB
SKILL.md(原文)
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Nuxt 4パターン
SSR、ハイブリッドレンダリング、ルートルール、またはページレベルのデータフェッチを伴うNuxt 4アプリの構築やデバッグ時に使用する。
有効化するタイミング
- サーバーHTMLとクライアントステート間のハイドレーションミスマッチ
- プリレンダー、SWR、ISR、クライアント専用セクションなどのルートレベルのレンダリング決定
- 遅延読み込み、遅延ハイドレーション、ペイロードサイズに関するパフォーマンスワーク
useFetch、useAsyncData、$fetchによるページまたはコンポーネントのデータフェッチ- ルートパラメータ、ミドルウェア、SSR/クライアントの差異に関連するNuxtルーティングの問題
ハイドレーション安全性
- 最初のレンダリングを決定論的に保つ。
Date.now()、Math.random()、ブラウザ専用API、ストレージの読み取りをSSRレンダリングされたテンプレートステートに直接配置しない。 - サーバーが同じマークアップを生成できない場合、ブラウザ専用ロジックを
onMounted()、import.meta.client、ClientOnly、または.client.vueコンポーネントの背後に移動する。 vue-routerのものではなく、NuxtのuseRoute()コンポーザブルを使用する。- SSRレンダリングされたマークアップを駆動するために
route.fullPathを使用しない。URLフラグメントはクライアント専用であり、ハイドレーションミスマッチを引き起こす可能性がある。 ssr: falseはミスマッチのデフォルト修正ではなく、真にブラウザ専用の領域のためのエスケープハッチとして扱う。
データフェッチ
- ページやコンポーネントでのSSR安全なAPIリードには
await useFetch()を優先する。サーバーでフェッチしたデータをNuxtペイロードに転送し、ハイドレーション時の2回目のフェッチを回避する。 - フェッチャーが単純な
$fetch()呼び出しでない場合、カスタムキーが必要な場合、または複数の非同期ソースを組み合わせる場合はuseAsyncData()を使用する。 - キャッシュの再利用と予測可能なリフレッシュ動作のために
useAsyncData()に安定したキーを与える。 useAsyncData()ハンドラーは副作用のない状態に保つ。SSRとハイドレーション中に実行される可能性がある。- ユーザートリガーの書き込みやクライアント専用アクションには
$fetch()を使用する。SSRからハイドレーションされるべきトップレベルのページデータには使用しない。 - ナビゲーションをブロックすべきでない非クリティカルデータには
lazy: true、useLazyFetch()、またはuseLazyAsyncData()を使用する。UIでstatus === 'pending'を処理する。 - SEOや初回ペイントに不要なデータにのみ
server: falseを使用する。 pickでペイロードサイズを削減し、深いリアクティビティが不要な場合はより浅いペイロードを優先する。
const route = useRoute()
const { data: article, status, error, refresh } = await useAsyncData(
() => `article:${route.params.slug}`,
() => $fetch(`/api/articles/${route.params.slug}`),
)
const { data: comments } = await useFetch(`/api/articles/${route.params.slug}/comments`, {
lazy: true,
server: false,
})
ルートルール
レンダリングとキャッシュ戦略には nuxt.config.ts の routeRules を優先する:
export default defineNuxtConfig({
routeRules: {
'/': { prerender: true },
'/products/**': { swr: 3600 },
'/blog/**': { isr: true },
'/admin/**': { ssr: false },
'/api/**': { cache: { maxAge: 60 * 60 } },
},
})
prerender: ビルド時の静的HTMLswr: キャッシュされたコンテンツを提供し、バックグラウンドで再検証isr: サポートされるプラットフォームでのインクリメンタル静的再生成ssr: false: クライアントレンダリングされるルートcacheまたはredirect: Nitroレベルのレスポンス動作
ルートルールはグローバルではなく、ルートグループごとに選択する。マーケティングページ、カタログ、ダッシュボード、APIは通常異なる戦略が必要。
遅延読み込みとパフォーマンス
- Nuxtはすでにルートごとにページをコード分割している。コンポーネント分割をマイクロ最適化する前に、ルート境界を意味のあるものに保つ。
- 非クリティカルなコンポーネントの動的インポートには
Lazyプレフィックスを使用する。 - UIが実際に必要とするまでチャンクがロードされないよう、遅延コンポーネントを
v-ifで条件付きレンダリングする。 - ファーストビュー以下や非クリティカルなインタラクティブUIには遅延ハイドレーションを使用する。
<template>
<LazyRecommendations v-if="showRecommendations" />
<LazyProductGallery hydrate-on-visible />
</template>
- カスタム戦略には、ビジビリティまたはアイドル戦略で
defineLazyHydrationComponent()を使用する。 - Nuxtの遅延ハイドレーションはシングルファイルコンポーネントで動作する。遅延ハイドレーションされたコンポーネントに新しいpropsを渡すと、即座にハイドレーションがトリガーされる。
- 内部ナビゲーションには
NuxtLinkを使用して、Nuxtがルートコンポーネントと生成されたペイロードをプリフェッチできるようにする。
レビューチェックリスト
- 最初のSSRレンダリングとハイドレーションされたクライアントレンダリングが同じマークアップを生成する
- ページデータがトップレベルの
$fetchではなくuseFetchまたはuseAsyncDataを使用している - 非クリティカルデータは遅延で、明示的なローディングUIがある
- ルートルールがページのSEOと鮮度の要件に一致している
- 重いインタラクティブアイランドが遅延読み込みまたは遅延ハイドレーションされている
レビュー
まだレビューはありません。使ってみた感想をお寄せください。
同じリポジトリのスキル
概要と使いどころ
hage-oyaji/everything-claude-code-jp-local32026年3月29日 更新
AIエージェントのアクションスペース、ツール定義、オブザベーションフォーマットを設計・最適化し、タスク完了率を向上させる
hage-oyaji/everything-claude-code-jp-local32026年3月29日 更新
評価ファーストの実行、分解、コスト考慮型モデルルーティングによるエージェンティックエンジニアとしての運用
hage-oyaji/everything-claude-code-jp-local32026年3月29日 更新
AIエージェントが実装出力の大部分を生成するチームのためのエンジニアリング運用モデル
hage-oyaji/everything-claude-code-jp-local32026年3月29日 更新
AI支援開発のためのリグレッションテスト戦略。データベース依存なしのサンドボックスモードAPIテスト、自動バグチェックワークフロー、同一モデルがコードの作成とレビューを行う際のAIの盲点を検出するパターン。
hage-oyaji/everything-claude-code-jp-local32026年3月29日 更新
AndroidおよびKotlin Multiplatformプロジェクトのためのクリーンアーキテクチャパターン — モジュール構成、依存関係ルール、UseCase、Repository、データレイヤーパターン
hage-oyaji/everything-claude-code-jp-local32026年3月29日 更新