2024年9月3日,vue 官方团队发布了 Vue.js 3.5
稳定版,这个小版本不包含任何破坏性变更,为服务器端渲染(SSR)带来了一些期待已久的改进,同时包括了内部改进和实用的新功能。让我们一起来探索这些有趣的变化。
响应式系统优化
在 3.5 中,Vue 的响应式系统经历了又一次重大重构,实现了更好的性能和显著减少了内存占用(-56%),且没有行为变化。这次重构还解决了 SSR 过程中由于悬挂的计算属性导致的过时计算值和内存问题。
此外,3.5 还优化了对大型、深度响应式数组的响应式追踪,在某些情况下使此类操作的速度提高了多达 10 倍。
响应式 Props
解构
响应式 Props 解构在 3.5 中已经稳定。该功能现在默认启用,在 <script setup> 中从 defineProps 调用解构的变量现在是响应式的。值得注意的是,这个功能通过利用 JavaScript 的原生默认值语法,大大简化了声明带有默认值的 props。
Lazy Hydration 懒加载水合
异步组件现在可以通过 defineAsyncComponent() api 的 hydrate 选项来控制何时进行水合。核心 API 故意设计得比较底层,Nuxt 团队已经在这个功能之上构建了更高级的语法糖。
使用
useTemplateRef() 获取模板引用
在 Vue 3 中,你可以使用 ref 来获取模板引用,以访问 dom 和子组件,但 ref 可能令人困惑。例如,一个 ref 变量是响应式数据还是 DOM 元素?
当一个模板绑定的 ref 拥有多个相同名称的元素时,useTemplateRef() 会返回一个数组,例如使用 v-for 渲染的列表。
Teleport
组件改进
<Teleport> 组件有一个已知的限制,即其目标元素必须在组件挂载时存在。在 Vue 3.5 中,<Teleport> 引入了一个 defer 属性,允许在当前渲染周期结束后挂载。
由于 <div id="cont"></div> 在 Teleport 之后渲染,因此需要 defer 属性。如果 <div id="cont"></div> 在 Teleport 之前渲染,则不需要 defer。
使用useId()
生成唯一的应用 ID
useId() 用于为每个应用程序生成唯一的 ID,确保在服务器端和客户端渲染之间保持稳定性。它可以用于生成表单元素和可访问性属性的 ID,而不会在 SSR 应用程序中造成 ID 冲突。
useId() 平时工作中不常用。但是需要注意的是:useId() 只会对一个 createApp 的实例生成一个唯一的 id,而如果存在多个 createApp ,那么每一个 createaApp 的实例中的 id 其实都是相同的,所以这时候我们可以选择自定义一个唯一的前缀+ id,进行二次 id 的单一化。
以上就是汉码未来今天给大家分享的文章,想了解更多关于前端的相关内容,可以登录汉码未来官网咨询,主打5人小班,全程面授,主打物联网嵌入式(人工智能)、Java全栈开发、鸿蒙应用开发、Linux云计算SRE工程师、C/C++、AI人工智能大模型算法、游戏开发、Web前端开发、Python大数据、PHP等学习进修,有专业的授课老师为你答疑解惑。