釋出·  

Nuxt 3.18

Nuxt 3.18 釋出了——它將 v4 的功能帶到了 v3,改進了可訪問性,更好地集成了瀏覽器開發工具,並提升了效能!
Daniel Roe

Daniel Roe

@danielroe.dev

🧪 延遲水合宏

在 v3.16 延遲水合支援的基礎上,我們現在支援延遲水合宏#31192)!它們提供了一種更符合人體工程學的方式來控制組件水合。

<script setup lang="ts">
const LazyHydrationMyComponent = defineLazyHydrationComponent(
  'visible',
  () => import('./components/MyComponent.vue')
)
</script>
<template>
  <div>
    <!-- 
      Hydration will be triggered when
      the element(s) is 100px away from entering the viewport.
    -->
    <LazyHydrationMyComponent :hydrate-on-visible="{ rootMargin: '100px' }" />
  </div>
</template>

這些宏使得 Nuxt 的延遲水合工具可以與顯式元件匯入一起使用。

♿️ 可訪問性改進

我們透過在內建的 app.vue 中包含 <NuxtRouteAnnouncer> 來增強可訪問性(#32621)。這意味著頁面更改將向螢幕閱讀器宣佈,從而使視力障礙使用者更容易導航。(這僅適用於您的專案中沒有 app.vue 的情況。如果您有,請將 <NuxtRouteAnnouncer> 保留在您的 app.vue 中!)

🛠️ 增強的開發體驗

Chrome DevTools 工作區整合

我們添加了 Chrome DevTools 工作區整合#32084),允許您直接從 Chrome DevTools 編輯 Nuxt 原始檔。這建立了更好的除錯體驗,在 DevTools 中所做的更改會反映在您的實際原始檔中。

更好的元件型別安全

元件型別安全性已得到改進,

  • <ClientOnly><DevOnly> 的型別化插槽 (#32707)——更好的 IntelliSense 和錯誤檢查
  • 匯出的 <NuxtTime> prop 型別 (#32547)——更容易擴充套件和定製

新的自動匯入:onWatcherCleanup

來自 vueonWatcherCleanup 函式現在可以自動匯入(#32396),使其更容易清理偵聽器並防止記憶體洩漏

const { data } = useAsyncData('users', fetchUsers)

watch(data, (newData) => {
  const interval = setInterval(() => {
    // Some periodic task
  }, 1000)
  
  // Clean up when the watcher is stopped
  onWatcherCleanup(() => {
    clearInterval(interval)
  })
})

📊 可觀測性增強

頁面路由現在已暴露給 Nitro 以實現可觀測性#32617),從而更好地與受支援的平臺進行監控和分析整合。這使得可觀測性工具能夠更有效地跟蹤頁面級指標。

🔧 模組開發改進

模組作者獲得了一些生活質量改進

簡化伺服器匯入

addServerImports kit 工具現在支援單個匯入#32289),使其更容易新增單個伺服器實用程式

// Before: had to wrap in array
addServerImports([{ from: 'my-package', name: 'myUtility' }])

// Now: can pass directly
addServerImports({ from: 'my-package', name: 'myUtility' })

TypeScript 配置

模組現在可以新增到 typescript.hoist#32601),從而更好地控制 TypeScript 配置和型別生成。

⚡️ 效能改進

我們進行了一些效能最佳化

  • 透過內部 socket 改進 Vite-node 通訊#32417),以加快開發構建速度
  • 遷移到 oxc-walker (#32250)和 oxc 用於 onPrehydrate 轉換#32045),以加快程式碼轉換速度

🐛 錯誤修復

此版本還包括一些重要的修復

  • 改進資料獲取:當計算鍵更改時,舊資料現在會正確保留(#32616)
  • 更好的滾動行為scrollBehaviorType 現在僅用於雜湊滾動(#32622)
  • 修復目錄別名:為了一些目錄別名添加了尾部斜槓,以獲得更好的一致性(#32755)

✅ 升級

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

npx nuxi@latest upgrade --dedupe

這會重新整理您的 lockfile 並拉取 Nuxt 依賴的所有最新依賴項,尤其是來自 unjs 生態系統的依賴項。

完整的釋出說明

閱讀 Nuxt v3.18.0 的完整發布說明。

非常感謝所有參與此版本釋出的人。在接下來的六個月中,我們將繼續向後移植相容的 v4 功能和錯誤修復,所以請繼續提供反饋!❤️