Vue 3.5 正式发布,代号“天元突破红莲螺岩”
本文转载自:「前端圈」微信公众号
Vue 官方今天发布 Vue 3.5 正式版,我们一起来看看都有哪些变化?
今天我们很兴奋地宣布 Vue 3.5“天元突破红莲螺岩”(Tengen Toppa Gurren Lagann) 版本发布!这个小版本不包含任何破坏性变更,同时包括了内部改进和实用的新功能。
我们将在这篇博文中介绍一些亮点 - 如需完整的变更和新功能列表,请参阅 GitHub 上的完整更新日志。
https://github.com/vuejs/core/blob/main/CHANGELOG.md
响应式系统优化
在 3.5 中,Vue 的响应式系统经历了又一次重大重构,实现了更好的性能和显著减少了内存占用(-56%),且没有行为变化。这次重构还解决了 SSR 过程中由于悬挂的计算属性导致的过时计算值和内存问题。
此外,3.5 还优化了对大型、深度响应式数组的响应式追踪,在某些情况下使此类操作的速度提高了多达 10 倍。
响应式 Props 解构
响应式 Props 解构在 3.5 中已经稳定。该功能现在默认启用,在<script setup>
中从defineProps
调用解构的变量现在是响应式的。值得注意的是,这个功能通过利用 JavaScript 的原生默认值语法,大大简化了声明带有默认值的 props:
Before
const props = withDefaults(
After
const { count = 0, msg = 'hello' } = defineProps<{
访问解构变量(例如count
)时,编译器会自动将其编译为props.count
,因此它们在访问时会被追踪。与props.count
类似,如果要观察解构的 prop 变量或将其传递给组合式函数并保持响应性,需要将其包装在一个 getter 中:
watch(count /* ... */)
对于那些更喜欢将解构的 props 与普通变量区分开来的人,@vue/language-tools
2.1 版本已经发布了一个可选设置,可以为它们启用内联提示:
详情:
-
使用方法和注意事项请参阅文档。
-
有关此功能的历史和设计理念,请参阅 RFC#502。
https://vuejs.org/guide/components/props.html#reactive-props-destructure
https://github.com/vuejs/rfcs/discussions/502
SSR 改进
3.5 为服务器端渲染(SSR)带来了一些期待已久的改进。
Lazy Hydration 懒加载水合
异步组件现在可以通过defineAsyncComponent()
API 的hydrate
选项来控制何时进行水合。例如,只在组件变为可见时才进行水合:
import { defineAsyncComponent, hydrateOnVisible } from 'vue'
核心 API 故意设计得比较底层,Nuxt 团队已经在这个功能之上构建了更高级的语法糖。
useId()
useId()
是一个可以用来生成应用内唯一 ID 的 API,这些 ID 保证在服务器和客户端渲染之间保持稳定。它们可以用于生成表单元素和无障碍属性的 ID,并且可以在 SSR 应用中使用而不会导致水合不匹配:
<script setup>
data-allow-mismatch
在客户端值不可避免地与其服务器端对应值不同的情况下(例如日期),我们现在可以使用data-allow-mismatch
属性来抑制由此产生的水合不匹配警告:
<span data-allow-mismatch>{{ data.toLocaleString() }}</span>
您还可以通过为该属性提供一个值来限制允许哪些类型的不匹配,可能的值包括text
、children
、class
、style
和attribute
。
自定义元素改进
3.5 修复了许多与defineCustomElement()
API 相关的长期存在的问题,并为使用 Vue 创建自定义元素添加了一些新功能:
-
通过
configureApp
选项支持自定义元素的应用配置。 -
添加
useHost()
、useShadowRoot()
和this.$host
API,用于访问自定义元素的宿主元素和影子根。 -
通过传递
shadowRoot: false
支持挂载不带影子 DOM 的自定义元素。 -
支持提供
nonce
选项,该选项将附加到自定义元素注入的<style>
标签上。
这些新的仅用于自定义元素的选项可以通过第二个参数传递给defineCustomElement
:
import MyElement from './MyElement.ce.vue'
其他值得关注的特性
useTemplateRef()
3.5 引入了一种通过useTemplateRef()
API 获取模板引用的新方法:
<script setup>
在 3.5 之前,我们建议使用普通的 ref,其变量名与静态ref
属性匹配。旧方法要求ref
属性可以被编译器分析,因此仅限于静态ref
属性。相比之下,useTemplateRef()
通过运行时字符串 ID 匹配 ref,因此支持动态 ref 绑定到变化的 ID。
@vue/language-tools
2.1 也为新语法实现了特殊支持,因此在使用useTemplateRef()
时,根据ref属性存在与否会有自动完成和警告出现:
Deferred Teleport 延迟传送门
内置<Teleport>
组件的一个已知限制是,其目标元素必须在传送门组件挂载时存在。这阻止了用户将内容传送到 Vue 在传送门之后渲染的其他元素。
在 3.5 中,我们为<Teleport>
引入了一个 defer 属性,它会在当前渲染周期之后挂载传送门,所以现在这样做是可行的:
<Teleport defer to="#container">...</Teleport>
这种行为需要defer
属性,因为默认行为需要向后兼容。
有关 3.5 中变更和功能的完整列表,请查看 GitHub 上的完整更新日志。
https://github.com/vuejs/core/blob/main/CHANGELOG.md

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Mozilla 发布 Firefox 130,推出自动画中画功能,增强多任务处理能力
Mozilla 正式发布了 Firefox 130,引入了一系列新功能,以提升用户体验。其中最引人注目的新增功能是自动画中画(Picture-in-Picture, PiP)模式。该功能允许用户在切换标签页时,视频可以自动继续在一个单独的可调整大小的窗口中播放,使得用户在进行多任务处理时不会错过内容。 自动画中画:无缝多任务处理 通过自动画中画模式,Firefox 130 将媒体播放体验提升到了一个新水平。该功能的工作原理是:当用户离开正在播放视频的标签页时,画中画会自动激活。视频将弹出一个小窗口,用户可以在浏览其他标签页时继续观看视频。当用户返回原标签页时,画中画窗口会自动关闭,确保用户顺畅地回到原来的页面观看体验。这个新功能可以通过设置中的 Firefox Labs 部分启用,Mozilla 允许用户在此测试即将推出的功能。 Firefox 130 的其他重要增强功能 除了自动画中画功能之外,Firefox 130 还提供了其他多项改进: 文本翻译:用户现在可以直接在浏览器中翻译网页的特定文本。内置的翻译工具新增了对加泰罗尼亚语、克罗地亚语和越南语等语言的支持,进一步扩大了 Fir...
- 下一篇
SQLE 3.2408.0 发布,数据源配置简单高效!
本周我们发布了 SQLE 3.2408.0 正式版!主要更新概览: 社区版 支持将 SQL 一键上线到其他实例 支持对接 CI/CD 专业版 优化数据源插件配置流程 企业版 支持标记慢日志扫描中的高优先级 SQL 支持独立配置项目的推送规则 支持配置管控 SQL 例外 社区版和专业版已同步更新欢迎下载体验,以下是 SQLE 3.2408.0 正式版的新功能解读。 🎈 新功能 社区版 1. 一键克隆 SQL 工单,实现跨环境部署 现在,您现在可以通过将 SQL 工单上线到其他数据源的方式,实现跨环境的一致性部署。 对于需要在开发、测试、预发布等多个阶段逐步部署的 SQL 脚本,此功能减少了在不同环境中重复上传和部署的工作量,同时避免了手动重复上传可能引入的错误,确保上线 SQL 的一致性和准确性。 以下是简单的操作示例: 1. 进入工单详情,点击“上线到其他实例”按钮。 新增“上线到其他实例”按钮 2. 根据提示变更工单名称及需要上线的数据源,同时确认需要上线的 SQL/SQL 脚本配置是否符合预期。 3. 创建工单,完成相同 SQL/SQL 脚本在不同环境的上线。 2. 将...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6