Nuxt Nation カンファレンスが開催されます。11月12日~13日にご参加ください。

サーバーエンジン

Nuxtは、新しいサーバーエンジンであるNitroによって動いています。

Nuxt 3を構築する際、新しいサーバーエンジンであるNitroを作成しました。

多くの機能が搭載されています。

  • Node.js、ブラウザ、サービスワーカーなど、クロスプラットフォームをサポート。
  • サーバーレスサポートが標準搭載。
  • APIルートをサポート。
  • 自動コード分割と非同期ロードチャンク。
  • 静的サイト+サーバーレスサイトのハイブリッドモード。
  • ホットモジュールリローディングを備えた開発サーバー。

APIレイヤー

サーバーのAPIエンドポイントミドルウェアは、内部でh3を使用するNitroによって追加されます。

主な機能は次のとおりです。

  • ハンドラーは、自動的に処理されるJSONレスポンスに対してオブジェクト/配列を直接返すことができます
  • ハンドラーはPromiseを返すことができ、これは待機されます(res.end()およびnext()もサポートされています)
  • ボディ解析、Cookie処理、リダイレクト、ヘッダーなどのヘルパー関数

詳細については、h3のドキュメントを参照してください。

server/ディレクトリのAPIレイヤーの詳細をご覧ください。

直接API呼び出し

Nitroでは、グローバルに使用可能な$fetchヘルパーを介してルートを「直接」呼び出すことができます。これにより、ブラウザで実行されている場合はサーバーへのAPI呼び出しが行われますが、サーバーで実行されている場合は関連する関数が直接呼び出され、追加のAPI呼び出しが不要になります

$fetch APIは、ofetchを使用しており、主な機能は次のとおりです。

  • JSONレスポンスの自動解析(必要に応じて生のレスポンスにアクセス可能)
  • リクエストボディとパラメータは、正しいContent-Typeヘッダーで自動的に処理されます

$fetch機能の詳細については、ofetchを参照してください。

型付きAPIルート

APIルート(またはミドルウェア)を使用する場合、res.end()を使用してレスポンスを送信するのではなく、値を返す限り、Nitroはこれらのルートの型定義を生成します。

$fetch()またはuseFetch()を使用すると、これらの型にアクセスできます。

スタンドアロンサーバー

Nitroは、node_modulesに依存しないスタンドアロンのサーバーdistを生成します。

Nuxt 2のサーバーはスタンドアロンではなく、nuxt startnuxt-startまたはnuxtディストリビューションを使用)またはカスタムのプログラムによる使用を実行することにより、Nuxtコアの一部が関与する必要があります。これは、脆弱で破損しやすく、サーバーレスおよびサービスワーカー環境には適していません。

Nuxtは、nuxt build.outputディレクトリに実行するときに、このdistを生成します。

出力には、Nuxtサーバーをあらゆる環境(実験的なブラウザサービスワーカーを含む!)で実行し、静的ファイルを提供するためのランタイムコードが含まれており、JAMstack向けの真のハイブリッドフレームワークとなっています。さらに、Nuxtは、マルチソースドライバーとローカルアセットをサポートするネイティブストレージレイヤーを実装しています。

Nitroエンジンの詳細については、GitHubをご覧ください。