透過 100+ 個提示學習 Nuxt!

伺服器引擎

Nuxt 由新的伺服器引擎:Nitro 提供動力。

在建構 Nuxt 3 時,我們建立了一個新的伺服器引擎:Nitro

它附帶許多功能

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

API 層

伺服器 API 端點中介軟體由內部使用 h3 的 Nitro 新增。

主要功能包括

  • 處理常式可以直接傳回物件/陣列以進行自動處理的 JSON 回應
  • 處理常式可以傳回 promises,這些 promises 會被等待 (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 會產生一個獨立的伺服器 dist,其獨立於 node_modules

Nuxt 2 中的伺服器不是獨立的,需要 Nuxt 核心的一部分透過執行 nuxt start (使用 nuxt-startnuxt 發佈) 或自訂程式化使用方式來參與,這種方式很脆弱,容易發生中斷,不適合用於無伺服器和服務工作者環境。

Nuxt 會在執行 nuxt build 時將此 dist 產生到 .output 目錄中。

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

在 GitHub 上閱讀有關 Nitro 引擎的詳細資訊。