透過 100+ 則秘訣來學習 Nuxt!
發布·  

Nuxt 3.7

Nuxt 3.7 已發布,帶來了全新的 CLI、原生 Web Streams 和 Response、渲染最佳化、非同步上下文支援 - 以及更多功能。

🐣 全新 CLI

我們使用 unjs/citty 重構了 nuxi,這標誌著 Nuxt 首個依賴新版本的發布,安全地在其自身的儲存庫中。我們對此有宏大的計畫 - 請查看 nuxt/cli 中的一些功能 + 路線圖討論,並隨時貢獻您的想法!

Nuxi 現在已與主要的 nuxt 版本解耦 - 我們計畫在未來更快地迭代和發布 nuxi,因此您可以期待即將到來的新事物!

🕸️ 原生 Web Streams 和 Response

隨著 unjs/h3unjs/nitro 的改進,現在可以直接從伺服器路由返回 Response 物件,這意味著可以在 Nuxt 中原生返回和處理串流。

👉 請查看 unjs/h3unjs/nitro 發行說明中的完整詳細資訊。

🔥 HTML 渲染最佳化

此版本帶來了伺服器渲染 HTML 回應的一些改進。我們現在在建置時決定是否預載/預先提取資源(因此您可以在 build:manifest hook 中自訂此設定)。我們現在也直接在 unhead 中管理它們的 HTML 渲染 (#22179),這表示您可以設定 <link><meta><script><style> 等的順序。而且 - 在我們的初步測試中 - 它甚至更快!

可以使用 experimental.headNext 標誌選擇加入即將推出的 head 改進。目前包含基於 capo.js 的新排序演算法 (#22431),並允許啟用未來在 unhead 中發布的最佳化功能

export default defineNuxtConfig({
  experimental: {
    headNext: true
  }
})

我們很樂意聽取您的想法 - 您可以在 此討論 中回覆任何問題/回饋。

🛠️ 建置環境捷徑

在您的 Nuxt 設定中,您現在可以使用 $client$server 捷徑,輕鬆定義僅適用於 Vite 用戶端/伺服器 (#22302) 或 webpack 用戶端/伺服器 (#22304) 建置的設定。這之前僅能透過 vite:extendConfigwebpack:config hooks 實現。

例如

export default defineNuxtConfig({
  vite: {
    $client: {
      build: {
        rollupOptions: {
          output: {
            chunkFileNames: '_nuxt/[hash].js',
            assetFileNames: '_nuxt/[hash][extname]',
            entryFileNames: '_nuxt/[hash].js'
          }
        }
      }
    }
  }
})

⚡️ Vite 4.4

我們選擇取消釘選 Vite 的次要版本,這表示每當 Vite 發布新功能版本時,您可以立即選擇加入。Vite 4.4 帶來了許多令人興奮的功能,包括實驗性的 Lightning CSS 支援 - 以及更多!

👉 請查看 Vite 發行說明 以了解更多資訊。

💪 TypeScript 更新

我們現在在生成的 tsconfig.json 中使用純粹相對路徑,而不是設定 baseUrl。這表示對開發環境(例如 Docker 映像檔)的支援更好,在這些環境中,絕對路徑可能與您的 IDE 不符 (#22410)。

我們還設定了一些額外的編譯器標誌預設值,以符合 Vite/TS 建議 (#22468)。

此外,您現在應該可以在 setPageLayout 以及 <NuxtLayout name> 中獲得版面配置的類型提示存取權 (#22363)。

🦄 非同步上下文支援

如果您曾經遇到「Nuxt context unavailable」的問題,這可能對您有所幫助。我們現在在 Nuxt 和 Nitro 中,在實驗性標誌下,支援 Bun 和 Node 的原生非同步上下文 (#20918)。

這使得在伺服器上使用 Nuxt composables 成為可能,無需確保它們直接在 setup 函數中被呼叫。這也允許在 Nitro 中使用,並提供新的 useEvent() 實用程式,可在伺服器路由中使用。

若要試用,您可以啟用 experimental.asyncContext

export default defineNuxtConfig({
  experimental: {
    asyncContext: true
  }
})

👓 監視器更新

我們修復了監視器的一些問題,這表示您應該可以減少重新啟動伺服器的次數 - 並且如果您正在使用 layers,您應該會看到顯著的效能提升。

⚗️ Nitro 2.6

Nitro 2.6 直接帶來了許多更令人興奮的功能,包括更小、更輕量的伺服器,以及在 .data 目錄中的全新持久性資料儲存。

👉 在完整發行文章中閱讀更多資訊。

✅ 升級

與往常一樣,我們建議的升級方法是執行

npx nuxi upgrade --force

這也將刷新您的 lockfile,並確保您從 Nuxt 依賴的其他相依性(特別是在 unjs 生態系統中)提取更新。

📃 完整變更日誌

https://github.com/nuxt/nuxt/releases/tag/v3.7.0 上閱讀完整發行說明