VueUse v15.0.0 发布:移除 templateRef、放弃 Node.js 20,新增 useWebMCP
译注:本文编译自 VueUse 官方 GitHub Release,原文为英文发布说明,链接见文末。以下内容忠实于原文,未作事实性增补。
VueUse 正式发布 v15.0.0。作为一个大版本更新,本次发布包含多项破坏性变更(Breaking Changes),同时引入了若干新的组合式函数(composables),并修复了一批长期存在的边界问题。开发者升级前需重点关注 API 移除与默认行为调整。
破坏性变更
本次大版本共包含 6 项破坏性变更,涉及 API 移除、运行时支持与默认行为调整:
- 移除
templateRef:由 @43081j 与 @ilyaliao 在 #4883 中完成。 - 放弃对 Node.js 20 的支持:由 @antfubot 在 #5553 中完成。
- core:移除已废弃的 timer 选项,统一改用
scheduler:由 @OrbisK 在 #5564 中完成。 useEventSource:处理 SSE 的message类型,同时触发onmessage与addEventListener:由 @ixyzorg、@OrbisK 与 @antfu 在 #5331 中完成。useIDBKeyval:支持跨标签页同步变更:由 @Slessi 在 #5338 中完成。useThrottleFn:默认trailing选项由false改为true:由 @kyumoon 与 @OrbisK 在 #5249 中完成。
其中,useThrottleFn 的默认值调整与 timer 选项的移除,可能直接影响现有业务逻辑,建议升级后重点回归测试。
新增功能
v15.0.0 新增了三个组合式函数:
- core:新增
useWebMCP:由 @antfubot 与 @antfu 在 #5580 中完成。 useLiveAnnouncer:全新函数,用于无障碍实时播报:由 @IceMooncake 与 @antfubot 在 #5315 中完成。useTemporalNow:新增时间相关工具函数:由 @JonathanSchndr 与 @antfubot 在 #4793 中完成。
问题修复
本次修复覆盖 tree-shaking 注解、集成依赖对齐以及多个组合式函数的边界场景:
- 修正重载函数与箭头函数的 tree-shaking 注解(#5613)。
- integrations:将 drauu 的 peer 依赖范围与实际使用版本对齐(#5595)。
onLongPress:在pointercancel时清除待触发的长按(#5555)。useBluetooth:去重 disconnect 监听器,并在挂载时重连(#5603)。useCloned:使自定义 clone 函数具备类型安全(#5559)。useFetch:当更新的请求已发起时,忽略过期的成功响应(#5574)。usePointer:在pointercancel时重置isInside(#5587)。useResizeObserver:用instanceof Element保护observe(),避免在 Comment 节点上崩溃(#5593)。useWebSocket:忽略来自已被取代的 socket 的消息(#5573)。
性能优化
DisabledFunctions改用Set实现(#5569)。
升级建议
由于本次为破坏性大版本,建议开发者在升级前确认项目运行环境已脱离 Node.js 20,并检查是否依赖 templateRef、废弃的 timer 选项,以及 useThrottleFn 的 trailing 默认行为。完整变更列表可在 GitHub 上查看。