我們正持續致力於釋出 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 生態系統中)的更新。
完整的釋出說明
衷心感謝所有參與本次釋出的人。❤️
如果你有任何反饋或問題,請隨時告訴我們!🙏