伺服器引擎

Nuxt 由一個新的伺服器引擎提供支援:Nitro。

在構建 Nuxt 的過程中,我們建立了一個新的伺服器引擎Nitro.

它具有許多功能

  • 跨平臺支援 Node.js、瀏覽器、服務工作者等。
  • 開箱即用的無伺服器支援。
  • API 路由支援。
  • 自動程式碼分割和非同步載入的塊。
  • 靜態 + 無伺服器站點的混合模式。
  • 帶有熱模組重新載入的開發伺服器。

API 層

伺服器 API 端點中介軟體 由 Nitro 新增,它在內部使用h3.

主要功能包括

  • 處理程式可以直接返回物件/陣列,以實現自動處理的 JSON 響應
  • 處理程式可以返回 Promise,這些 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 的伺服器分發。

Nuxt 2 中的伺服器不是獨立的,需要透過執行 nuxt start(使用nuxt-startnuxt分發版)或自定義程式設計用法來涉及 Nuxt 核心的一部分,這種方式脆弱且容易損壞,不適用於無伺服器和服務工作者環境。

Nuxt 在執行 nuxt build 時將此分發版生成到 .output 目錄中。

輸出包含執行時程式碼,可在任何環境(包括實驗性瀏覽器服務工作者!)中執行您的 Nuxt 伺服器並提供您的靜態檔案,使其成為 JAMstack 的真正混合框架。此外,Nuxt 實現了原生儲存層,支援多源驅動程式和本地資產。

在 GitHub 上閱讀更多關於 Nitro 引擎的資訊。