基于 v3.16 的延迟水合支持,我们现在支持延迟水合宏(#31192)!它们提供了一种更便捷的方式来控制组件的水合:
<script setup lang="ts">
const LazyHydrationMyComponent = defineLazyHydrationComponent(
'visible',
() => import('./components/MyComponent.vue')
)
</script>
<template>
<div>
<!--
当元素距离进入视口 100px 时,
将触发水合。
-->
<LazyHydrationMyComponent :hydrate-on-visible="{ rootMargin: '100px' }" />
</div>
</template>
这些宏使得可以在使用显式组件导入的同时,利用 Nuxt 的延迟水合工具。
我们通过在内置的 app.vue 中加入 <NuxtRouteAnnouncer> 进行了无障碍增强(#32621)。这意味着页面变更会被屏幕阅读器宣布,使视觉障碍用户的导航体验更友好。(此功能仅针对项目中没有自定义 app.vue 的情况;如果你已有自定义,请确保在其中保留 <NuxtRouteAnnouncer>!)
新增了Chrome DevTools 工作区集成(#32084),允许你直接在 Chrome DevTools 中编辑 Nuxt 源文件。这带来了更好的调试体验,DevTools 中的修改会直接反映到实际源文件。
组件类型安全得到了如下改进:
<ClientOnly> 和 <DevOnly> 增加类型化插槽(#32707)——更好的 IntelliSense 和错误检查<NuxtTime> 的 props 类型(#32547)——更易扩展和自定义onWatcherCleanup来自 vue 的 onWatcherCleanup 函数现在可自动导入(#32396),方便清理 watcher 防止内存泄漏:
const { data } = useAsyncData('users', fetchUsers)
watch(data, (newData) => {
const interval = setInterval(() => {
// 某些周期任务
}, 1000)
// 停止 watcher 时清理
onWatcherCleanup(() => {
clearInterval(interval)
})
})
页面路由现已暴露给 Nitro 以支持可观测性(#32617),实现更好的监控和与支持平台的分析集成。这让可观测工具能更有效地追踪页面级指标。
模块作者将体验到多项便利改进:
addServerImports 实用工具现支持单个导入(#32289),添加单个服务器工具更方便:
// 以前:必须传入数组
addServerImports([{ from: 'my-package', name: 'myUtility' }])
// 现在:可以直接传入对象
addServerImports({ from: 'my-package', name: 'myUtility' })
模块现在可向 typescript.hoist 添加配置(#32601),获得更多对 TypeScript 配置及类型生成的控制权。
我们做了多项性能优化:
oxc-walker(#32250)及使用 oxc 进行 onPrehydrate 转换(#32045),提升代码转换速度本次发布还包含若干重要修复:
scrollBehaviorType 现在仅用于哈希滚动(#32622)一如既往,建议运行:
npx nuxi@latest upgrade --dedupe
这会刷新你的锁文件并拉取 Nuxt 依赖的所有最新版本,尤其是 unjs 生态下的依赖。
衷心感谢所有参与本次发布的贡献者。在接下来的六个月内,我们将持续回移兼容的 v4 功能和修复,欢迎大家继续反馈!❤️