はじめに
Nuxtの目標は、優れた開発者体験を念頭に置いて、直感的で高性能なウェブ開発を実現することです。
Nuxtは、Vue.jsを使用して、型安全で高性能かつプロダクションレベルのフルスタックウェブアプリケーションやウェブサイトを直感的かつ拡張可能な方法で作成するための無料のオープンソースフレームワークです。
開発中はホットモジュールリプレースメントを楽しみながら、プロダクションではデフォルトでサーバーサイドレンダリングを使用して高性能なアプリケーションを提供できるように、最初から .vue
ファイルを書き始めることができます。
Nuxtはベンダーロックインがなく、アプリケーションをどこにでも、エッジでもデプロイすることができます。
ブラウザでNuxtを試してみたい場合は、オンラインサンドボックスで試してみることができます。
自動化と規約
Nuxtは規約と意見のあるディレクトリ構造を使用して、繰り返しのタスクを自動化し、開発者が機能の追加に集中できるようにします。設定ファイルはデフォルトの動作をカスタマイズおよびオーバーライドすることができます。
- ファイルベースのルーティング:
app/pages/
ディレクトリの構造に基づいてルートを定義します。これにより、アプリケーションを整理しやすくなり、手動でのルート設定が不要になります。 - コード分割: Nuxtは自動的にコードを小さなチャンクに分割し、アプリケーションの初期ロード時間を短縮します。
- サーバーサイドレンダリングの標準搭載: NuxtはSSR機能を標準で備えているため、別途サーバーを設定する必要がありません。
- 自動インポート: Vueのコンポーザブルやコンポーネントをそれぞれのディレクトリに書き、インポートせずに使用できます。これにより、ツリーシェイキングと最適化されたJSバンドルの利点を享受できます。
- データフェッチユーティリティ: NuxtはSSR対応のデータフェッチを処理するためのコンポーザブルを提供し、さまざまな戦略をサポートします。
- ゼロコンフィグのTypeScriptサポート: 自動生成された型と
tsconfig.json
を使用して、TypeScriptを学ばずに型安全なコードを書くことができます。 - 設定済みのビルドツール: 開発中のホットモジュールリプレースメント(HMR)をサポートし、ベストプラクティスを組み込んだ形でコードをプロダクション用にバンドルするために、デフォルトで Vite を使用しています。
Nuxtはこれらを管理し、フロントエンドとバックエンドの機能を提供するので、あなたは重要なこと、つまりウェブアプリケーションの作成に集中できます。
サーバーサイドレンダリング
Nuxtはデフォルトでサーバーサイドレンダリング(SSR)機能を標準搭載しており、サーバーを自分で設定する必要がなく、ウェブアプリケーションに多くの利点をもたらします。
- 初期ページロード時間の短縮: Nuxtは完全にレンダリングされたHTMLページをブラウザに送信し、即座に表示できます。これにより、特に遅いネットワークやデバイスでのユーザー体験(UX)が向上します。
- SEOの改善: 検索エンジンはSSRページをより良くインデックス化でき、HTMLコンテンツが即座に利用可能で、クライアントサイドでJavaScriptを使用してコンテンツをレンダリングする必要がありません。
- 低性能デバイスでのパフォーマンス向上: クライアントサイドでダウンロードおよび実行する必要のあるJavaScriptの量を減らし、重いJavaScriptアプリケーションの処理に苦労する可能性のある低性能デバイスに有益です。
- アクセシビリティの向上: 初期ページロード時にコンテンツが即座に利用可能になり、スクリーンリーダーやその他の支援技術に依存するユーザーのアクセシビリティが向上します。
- キャッシングの容易化: ページはサーバーサイドでキャッシュでき、コンテンツをクライアントに生成して送信する時間を短縮することで、さらにパフォーマンスを向上させます。
全体として、サーバーサイドレンダリングは、より迅速で効率的なユーザー体験を提供し、検索エンジン最適化とアクセシビリティを向上させることができます。
Nuxtは多用途なフレームワークであり、nuxt generate
を使用してアプリケーション全体を静的ホスティングに静的にレンダリングしたり、ssr: false
オプションでSSRをグローバルに無効にしたり、routeRules
オプションを設定してハイブリッドレンダリングを活用することができます。
サーバーエンジン
NuxtのサーバーエンジンNitroは、新しいフルスタック機能を解放します。
開発中は、RollupとNode.jsワーカーを使用してサーバーコードとコンテキストの分離を行います。また、server/api/
内のファイルを読み取ってサーバーAPIを生成し、server/middleware/
からサーバーミドルウェアを生成します。
プロダクションでは、Nitroはアプリとサーバーを1つのユニバーサルな.output
ディレクトリにビルドします。この出力は軽量で、最小化され、Node.jsモジュール(ポリフィルを除く)から削除されています。この出力は、Node.js、サーバーレス、ワーカー、エッジサイドレンダリング、または純粋に静的なシステムでデプロイできます。
プロダクション対応
Nuxtアプリケーションは、NodeまたはDenoサーバーにデプロイしたり、静的環境にホストするためにプリレンダリングしたり、サーバーレスやエッジプロバイダーにデプロイしたりできます。
こちらも参照 デプロイメントセクションモジュラー
モジュールシステムにより、カスタム機能やサードパーティサービスとの統合を通じてNuxtを拡張できます。
こちらも参照 Nuxtモジュールの概念アーキテクチャ
Nuxtは、さまざまなコアパッケージで構成されています。
- コアエンジン: nuxt
- バンドラー: @nuxt/vite-builder, @nuxt/rspack-builder, @nuxt/webpack-builder
- コマンドラインインターフェース: @nuxt/cli
- サーバーエンジン: nitro
- 開発キット: @nuxt/kit
Nuxtの機能と各パッケージの範囲を完全に理解するために、各概念を読むことをお勧めします。
※このページは Nuxt.js 公式ドキュメントの翻訳ページ(非公式)です。
公式ドキュメントの該当ページはこちら:
https://nuxt.com/docs/4.x/getting-started/introduction