この記事の要点
• アプリコードがapp/ディレクトリに移動し、サーバーコードと明確に分離
• 開発サーバー起動52%高速化、ホットリロード66%高速化
• useAsyncDataの改善やNitro 3統合で開発体験が大幅向上
Nuxt 4の概要
Nuxt 4は、Vue 3エコシステムの最新技術を取り入れた大型アップデートです。より高速な起動、改善されたDX、新しいディレクトリ構造が特徴です。
新しいディレクトリ構造
project/ ディレクトリ構成:
app/components/composables/layouts/pages/plugins/app.vue
public/server/api/middleware/plugins/
nuxt.config.tspackage.json
ポイント: アプリケーションコードがapp/ディレクトリに移動し、サーバーコードと明確に分離されました。
パフォーマンスの改善
起動時間の短縮
開発サーバー起動:
- Nuxt 3: 2.5秒
- Nuxt 4: 1.2秒 (52%高速化)
ホットリロード:
- Nuxt 3: 300ms
- Nuxt 4: 100ms (66%高速化)
ビルド最適化
// nuxt.config.ts
export default defineNuxtConfig({
future: {
compatibilityVersion: 4
},
experimental: {
// 新しい最適化オプション
sharedPrerenderData: true,
compileTemplate: true
}
});
新しいData Fetching
useAsyncData の改善
useFetch の型安全性
サーバーサイドの改善
Nitro 3統合
// server/api/users.ts
export default defineEventHandler(async (event) => {
// H3の新機能
const query = getQuery(event);
const body = await readBody(event);
// バリデーション
const schema = z.object({
name: z.string()
});
const validated = await readValidatedBody(event, schema.parse);
return { users: [] };
});
注意: Nuxt 4への移行にはVue 3.4以上が必須です。一部のコンポーザブルAPIにも変更があるため、ドキュメントを確認してください。
サーバーコンポーネント
新しいコンポーザブル
usePreviewMode
useLoadingIndicator
Layers の強化
// nuxt.config.ts
export default defineNuxtConfig({
extends: [
'@my-org/ui-layer',
'@my-org/auth-layer',
'../shared-config'
]
});
my-app/ レイヤー構成:
layers/ui/components/nuxt.config.ts
auth/composables/nuxt.config.ts
nuxt.config.ts
モジュールエコシステム
# 主要モジュール
npx nuxi module add @nuxt/image
npx nuxi module add @nuxt/ui
npx nuxi module add @nuxtjs/i18n
npx nuxi module add @pinia/nuxt
実践メモ: npx codemod nuxt/4/new-directory-structure で新しいディレクトリ構造への移行を自動化できます。
移行ガイド
# 自動マイグレーション
npx nuxi upgrade --force
# Codemod
npx codemod nuxt/4/new-directory-structure
主な破壊的変更
| 変更 | 対応 |
|---|---|
| ディレクトリ構造 | app/ディレクトリへ移動 |
| Vue 3.4以上必須 | Vueをアップグレード |
| 一部のコンポーザブルAPI変更 | ドキュメント参照 |
まとめ
Nuxt 4は、パフォーマンスの大幅な改善と新しいディレクトリ構造により、より快適な開発体験を提供します。Vue 3エコシステムの最新機能を活用し、モダンなWebアプリケーションを構築できます。