釋出·  

Nuxt 3.15

Nuxt 3.15 釋出 - 搭載 Vite 6,帶來更好的 HMR 和更快的效能
Daniel Roe

Daniel Roe

@danielroe.dev

我們正持續致力於釋出 Nitro v3、Nuxt v4 等。但我們很高興能在聖誕節(及時)推出 Nuxt v3.15。

❄️ 降雪!

節日快樂!當您啟動 Nuxt 時,您會注意到(如果您在北半球)載入螢幕上有一些雪(#29871).

⚡️ 包含 Vite 6

Nuxt v3.15 首次包含Vite 6。儘管這是一個主要版本,但我們預計這不會對 Nuxt 使用者造成重大更改(請參閱完整的遷移指南)。但是,如果您的依賴項依賴於特定的 Vite 版本,請務必小心。

Vite 6 最重要的變化之一是新的 Environment API,我們希望將其與 Nitro 結合使用,以改善伺服器開發環境。敬請關注!

您可以在Vite 6 變更日誌.

中閱讀完整的更改列表。

🪵 Chromium devtools 改進

我們經常談論 Nuxt DevTools,但 v3.15 在開發模式下與基於 Chromium 的瀏覽器開發工具進行了更好的整合。我們現在使用 Chrome DevTools 可擴充套件性 API來新增對在瀏覽器開發工具效能面板中列印 Nuxt 鉤子計時器的支援。

🗺️ callOnce 的導航模式

callOnce 是 Nuxt 內建的組合式函式,用於僅執行一次程式碼。例如,如果程式碼在伺服器上執行,它就不會在客戶端再次執行。但有時您確實希望程式碼在*每次導航*時執行——只是避免初始的伺服器/客戶端雙重載入。為此,新增了一個 mode: 'navigation' 選項,它將僅在*每次導航*時執行一次程式碼。(請參閱#30260瞭解更多資訊。)

await callOnce(() => counter.value++, { mode: 'navigation' })

🥵 模板、頁面和頁面元資料的 HMR

我們現在為 Nuxt 的虛擬檔案(如路由、外掛、生成的檔案)以及頁面元資料(在 definePageMeta 宏中)的內容實現了熱模組過載(#30113).

這意味著您在開發過程中會有更快的體驗,並且在更改路由時無需重新載入頁面。

📋 頁面元資料增強

我們現在支援透過 experimental.extraPageMetaExtractionKeys 提取額外的頁面元資料鍵(可能由模組作者使用)(#30015)。這使模組作者可以在構建時,在 pages:resolved 鉤子中使用此資訊。

我們現在還支援在 definePageMeta 中使用本地函式(#30241)。這意味著您可以做這樣的事情:

function validateIdParam(route) {
  return !!(route.params.id && !isNaN(Number(route.params.id)))
}

definePageMeta({
  validate: validateIdParam,
})

🔥 效能改進

如果應用程式清單將在水合應用程式時使用,我們現在會在瀏覽器中預載入它(#30017).

如果可能的話,我們還會將 vue-router 的 hash 模式歷史記錄從您的捆綁包中進行 tree shake——具體來說,如果您沒有自定義您的 app/router.options.ts#30297).

🐣 v4 更新

v4 的新預設值又進行了一些更改,包括預設情況下僅對 Vue 元件內聯樣式(#30305).

✅ 升級

像往常一樣,我們建議您執行以下命令進行升級

npx nuxi@latest upgrade --force

這也將重新整理你的 lockfile,並確保你拉取 Nuxt 依賴的其他依賴項(尤其是在 unjs 生態系統中)的更新。

完整的釋出說明

閱讀 Nuxt v3.15.0 的完整發行說明。

衷心感謝所有參與本次釋出的人。❤️

如果你有任何反饋或問題,請隨時告訴我們!🙏