はじめに
Nuxt の目標は、素晴らしい開発者体験を念頭に置きながら、直感的でパフォーマンスの高いウェブ開発を実現することです。
Nuxtは、無料でオープンソースのフレームワークです。これは、Vue.jsを使って、型安全で、パフォーマンスが高く、本番環境に適したフルスタックウェブアプリケーションやウェブサイトを直感的かつ拡張可能な方法で作成するためのものです。
最初から .vue
ファイルを書き始めることができるようにすべてを整えています。開発中にはホットモジュール置換を楽しみ、デフォルトでサーバーサイドレンダリングによるパフォーマンスの良いアプリケーションを本番環境で実現します。
Nuxtはベンダーロックインがなく、アプリケーションをどこにでも、エッジを含めてデプロイできます。
ブラウザでNuxtを試してみたい場合は、オンラインサンドボックスのいずれかで試してみることができます。
自動化と規約
Nuxtは規約と意見を反映したディレクトリ構造を使用して繰り返しのタスクを自動化し、開発者が機能の追加に集中できるようにします。設定ファイルは、そのデフォルトの動作をカスタマイズして上書きすることができます。
- ファイルベースのルーティング:
pages/
ディレクトリの構造に基づいてルートを定義します。これにより、アプリケーションの整理が容易になり、手動でのルート設定の必要がなくなります。 - コード分割: Nuxtは自動的にコードを小さなチャンクに分割し、アプリケーションの初期読み込み時間を短縮するのに役立ちます。
- デフォルトでのサーバーサイドレンダリング: Nuxtには内蔵されたSSR機能があり、別途サーバーの設定をする必要がありません。
- 自動インポート: Vueのコンポーザブルとコンポーネントをそれぞれのディレクトリに記述し、インポートすることなく使用できます。これにより、ツリーシェーキングと最適化されたJSバンドルのメリットが得られます。
- データ取得ユーティリティ: NuxtはSSR互換のデータ取得を扱うコンポーザブルを提供するとともに、さまざまな戦略を提供します。
- ゼロコンフィグTypeScriptサポート:
tsconfig.json
と自動生成された型を使用して、TypeScriptを学ばなくても型安全なコードを記述できます。 - 設定済みビルドツール: デフォルトでViteを使用し、開発中のホットモジュール置換(HMR)をサポートし、ベストプラクティスを取り入れた本番コードのバンドルを行います。
Nuxtはこれらを管理し、フロントエンドとバックエンドの機能を提供するので、あなたはウェブアプリケーションの作成に集中できます。
サーバーサイドレンダリング
Nuxtはデフォルトで内蔵されたサーバーサイドレンダリング(SSR)機能を備えており、別途サーバーを設定する必要がありません。これにはウェブアプリケーションに多くの利点があります:
- 初期ページ読み込み時間の高速化: Nuxtはブラウザに完全にレンダリングされたHTMLページを送信し、すぐに表示することができます。これにより、ページの読み込み時間が速く感じられ、特に遅いネットワークやデバイスの場合はUXが向上します。
- SEOの改善: HTMLコンテンツがすぐに利用可能なため、検索エンジンがSSRページをよりよくインデックス化できます。これは、クライアント側でコンテンツをレンダリングするためにJavaScriptが必要な場合とは異なります。
- 低性能デバイスでのパフォーマンス向上: クライアント側でダウンロードして実行する必要のあるJavaScriptの量を減らすことで、重いJavaScriptアプリケーションの処理が苦手な低性能デバイスにとって有利です。
- アクセス性の向上: コンテンツは初期ページ読みロード時にすぐに利用可能です。これは、スクリーンリーダーやその他の支援技術に依存するユーザーのアクセス性を向上させます。
- キャッシングの容易性: ページをサーバーサイドでキャッシングすることができ、それによってコンテンツを生成してクライアントに送信するまでの時間をさらに短縮することができます。
全体として、サーバーサイドレンダリングはより高速で効率的なユーザーエクスペリエンスを提供し、検索エンジンの最適化とアクセス性を向上させることができます。
Nuxtは多機能なフレームワークであり、nuxt generate
で全アプリケーションを静적ホスティングに静적レンダリングすること、ssr: false
オプションでグローバルにSSRを無効化すること、またはrouteRules
オプションを設定してハイブリッドレンダリングを活用することが可能です。
サーバーエンジン
NuxtのサーバーエンジンNitroは、新しいフルスタック機能を解放します。
開発中には、サーバーコードとコンテキスト分離のためのRollupとNode.jsワーカーを使用します。また、server/api/
内のファイルを読み取ってサーバーAPIを生成し、server/middleware/
からサーバーミドルウェアを生成します。
本番環境では、Nitroはあなたのアプリケーションとサーバーを一つの.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/3.x/getting-started/introduction