2409vue,vue3.5更新

news/2024/9/18 17:22:05/ 标签: vue.js, 前端

原文

今天,很高兴地发布Vue3.5!

次要版本不包含破坏更改,只包括内部改进和有用的新函数.这里包含一些亮点.

反应式系统优化

3.5中,Vue响应式系统经历了另一次重大重构,实现了更好性能显著提高(-56%)内存使用率而行为不变.

重构还解决了在SSR时,因挂起计算而导致的过时计算值和内存问题.

此外,3.5还优化了大型深度响应式数组响应性跟踪,有时会使此类操作速度提高10倍.

ReactiveProps析构

3.5版本中稳定了响应时属性析构.现在默认启用该功能后,从<script setup>中的defineProps调用析构的变量,现在是响应式的.

注意,此特征通过利用js本地默认值语法,大大简化了用默认值声明属性的过程:

//以前
const props = withDefaults(defineProps<{count?: numbermsg?: string}>(),{count: 0,msg: 'hello'}
)

现在:

const { count = 0, msg = 'hello' } = defineProps<{count?: numbermessage?: string
}>()

通过编译器会自动把访问析构变量(如计数)编译到props.count中,因此在访问时会跟踪它们.
类似props.count,监视析构的属性变量或给它传递到可组合项中并同时保留响应性,需要在取器中包装它:

watch(count /*...*/)
//^导致编译时错误
watch(() => count /*...*/)
//在取器中工作,
//组合应用`toValue()`来归一化输入
useDynamicCount(() => count)

对那些希望更好区分析构属性普通变量的人,@vue/languagetools2.1提供了一个选入设置来为它们启用内联提示.

SSR改进

3.5为服务渲染(SSR)带来了一些期待已久的改进.

懒冻结

通过defineAsyncComponent()API冻结选项指定策略,异步组件现在可控制何时应该冻结它们.如,要仅在组件可见时冻结组件:

import { defineAsyncComponent, hydrateOnVisible } from 'vue'
const AsyncComp = defineAsyncComponent({loader: () => import('./Comp.vue'),hydrate: hydrateOnVisible()
})

核心API有意降级,Nuxt团队已在此函数上面构建了更高级的语法糖.这里

useId()

useId()是一个可生成每个应用,保证在服务器和客户渲染保持稳定的唯一的IDAPI.
它们可用来生成表单元素助手函数属性ID,且可在SSR应用中使用,而不会导致冻结不匹配:

<script setup>
import { useId } from 'vue'
const id = useId()
</script>
<template><form><label :for="id">Name:</label><input :id="id" type="text" /></form>
</template>

允许不匹配数据(data-allow-mismatch)

如果客户值不可避免地与其服务器对应值(如日期)不同,现在可用属性抑制生成的冻结不匹配警告:

<span dataallowmismatch>{{ data.toLocaleString() }}</span>

还可为属性提供值限制允许的不匹配类型,其中可能的值为text,children,class,styleattribute.

自定义元素改进

3.5修复了许多与defineCustomElement()API相关的长期问题,并添加了许多使用Vue编写自定义元素新能力:

1,configureApp选项支持自定义元素的应用配置.
2,新增useHost(),useShadowRoot()this.$host接口,来访问自定义元素主机元素阴影根.

3,支持传递shadowRoot:false来挂载没有ShadowDOM自定义元素.

4,支持通过自定义元素附加<style>标签上来提供nonce选项.
5,可通过第二个参数把这些新的仅限自定义元素的选项传递给defineCustomElement:
JS

import MyElement from './MyElement.ce.vue'
defineCustomElements(MyElement, {shadowRoot: false,nonce: 'xxx',configureApp(app) {app.config.errorHandler = ...}
})

其他显著功能

useTemplateRef()

3.5引入了一个通过useTemplateRef()API模板引用新方法:

<script setup>
import { useTemplateRef } from 'vue'
const inputRef = useTemplateRef('input')
</script>
<template><input ref="input">
</template>

3.5前,建议使用变量名静引用属性匹配的普通引用.旧方法要求引用属性可由编译器解析,因此仅限于静态引用属性.
相比之下,useTemplateRef()通过运行时串ID匹配引用,因此支持动态引用绑定到不断变化ID.

@vue/languagetools2.1还特殊支持新语法,因此在使用useTemplateRef()时,会根据模板中是否有引用属性收到自动补全和警告:

懒传递

内置<Teleport>组件的一个已知约束是,在挂载Teleport组件时,必须要有目标元素.这阻止了用户在传递传递内容Vue渲染的其他元素.

3.5中,为<Teleport>引入了一个延迟属性,它会在当前渲染周期挂载它,所以如下现在可以工作了:

<Teleport defer target="#container">...</Teleport>
<div id="container"></div>

因为默认要后向兼容,此行为需要延迟属性.

onWatcherCleanup()

3.5引入了一个全局导入API,onWatcherCleanup(),来在监视器注册清理回调:

import { watch, onWatcherCleanup } from 'vue'
watch(id, (newId) => {const controller = new AbortController()fetch(`/api/${newId}`, { signal: controller.signal }).then(() => {//回调逻辑})onWatcherCleanup(() => {//(中止过时请求)controller.abort()})
})

http://www.ppmy.cn/news/1521004.html

相关文章

微服务中的服务降级与熔断机制

目录&#xff1a; 1、简介2、服务降级2.1. Hystrix基础配置2.2. 启用Hystrix2.3. 实现服务降级2.4. 配置Hystrix 3、熔断机制3.1. 配置熔断器3.2. 查看Hystrix Dashboard 1、简介 在微服务架构中&#xff0c;服务降级与熔断机制是保证系统稳定性和可靠性的关键技术。当系统中的…

flowable 国产数据库并发性能优化

最近在生产环境有用户反馈系统流转速度较慢&#xff0c;这边用的是金仓数据库&#xff0c;这边查了数据库的慢sql日志&#xff0c;最后发现问题&#xff0c;以下是部分慢sql的执行时间截图 主要都是流转过程中更新执行表和历史变量表执行时间较长&#xff0c;于是查了表的默认索…

2024年全国铁路(铁路、高铁、地铁)矢量数据集

数据更新时间​&#xff1a;2024年6月​&#xff1b; ​数据范围&#xff1a;全国各省&#xff08;不包含台湾&#xff09;; 数据格式​&#xff1a;shp; ​数据包含类型&#xff1a;铁路、高铁、地铁 数据​坐标信息&#xff1a; EPSG Code 4326 大地基准面 D_WGS_1…

【OpenGL】 理解makeCurrent函数

背景 用QT学校OpenGL绝对可以事半功倍&#xff0c;QT提供了一系列对OpenGL的支持&#xff0c;包括OPenGL窗口类&#xff0c;对OpenGL函数的面向对象的封装等。 总体说明 在Qt框架中&#xff0c;makeCurrent 是QOpenGLContext类的一个方法&#xff0c;它封装了这些平台特定的…

CSS解析:盒模型

在网页上实现元素布局涉及很多技术。在复杂网站上&#xff0c;可能会用到浮动元素、绝对定位元素以及其他各种大小的元素&#xff0c;甚至也会使用较新的CSS特性&#xff0c;比如Flexbox或者网格布局。 在此之前我们要打好基础&#xff0c;深刻理解浏览器是如何设置元素的大小…

Update Azure OpenAI npm Package to 2023-12-01-preview Version

题意&#xff1a;将 Azure OpenAI npm 包更新到 2023-12-01-preview 版本 问题背景&#xff1a; I am currently using the azure-openai npm package in my project with version 2023-03-15-preview. As per the latest updates, version 2023-12-01-preview is available a…

使用 SCSS 或 LESS 相比于纯 CSS 的好处

使用 SCSS 或 LESS 相比于纯 CSS 有以下几个好处&#xff1a; 变量支持&#xff1a; SCSS/LESS&#xff1a;可以定义变量用于存储颜色、字体大小、间距等值&#xff0c;便于在整个样式文件中复用。例如&#xff0c;可以定义一个颜色变量 $primary-color: #3498db;&#xff0c;然…

网站维护更新简易单页404页html代码

源码介绍 一个简约风格的单页html页面&#xff0c;可用于网站维护中或更新网站时挂个首页使用&#xff0c;如果不喜欢现在的颜色请F12修改设置既可。 效果预览 源码获取 网站维护更新简易单页404页html代码

数据分析利器:Java与MySQL构建强大的数据挖掘系统

数据分析在当今信息时代具有重要的作用&#xff0c;它可以帮助企业和组织深入理解数据&#xff0c;发现隐藏在数据中的模式和规律&#xff0c;并基于这些洞察进行决策和优化。Java与MySQL作为两个强大的工具&#xff0c;结合起来可以构建出一个高效、可靠且功能丰富的数据挖掘系…

在Ubuntu 16.04上安装Nginx的方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 介绍 Nginx 是世界上最流行的 Web 服务器之一&#xff0c;负责托管一些互联网上最大和最高流量的网站。在大多数情况下&#xff0c;它比…

杭州网站建设网页手机版

杭州作为中国的电子商务之都&#xff0c;网站建设在杭州可谓是异常繁荣。随着移动互联网的兴起&#xff0c;越来越多的企业开始注重网页的手机版建设&#xff0c;以满足用户在移动设备上的浏览需求。杭州网站建设公司也专门针对手机版网页进行优化&#xff0c;提供更好的用户体…

Git 使用指南 --- 版本管理

序言 Git 是一个开源的 分布式版本控制系统&#xff0c;可以有效、高速地处理从很小到非常大的项目版本管理。对一个程序员来说&#xff0c;掌握 Git 的使用是必要的。  在这个系列中&#xff0c;将详细的介绍 Git 的使用和原理&#xff0c;话不多说&#xff0c;让我们开始吧。…

【UEFI基础】SMBIOS基础和使用

SMBIOS的定义 SMBIOS的全称是System Management BIOS&#xff0c;关于它的理解包括&#xff1a; 它不是一个BIOS&#xff0c;之所以出现了BIOS字样&#xff0c;是因为它跟BIOS有关&#xff0c;仅此而已。它是一个规范&#xff0c;定义了BIOS传递给操作系统的系统管理信息&…

java整合Redission

1.maven仓库查询Redisson并倒入项目 <dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.35.0</version> </dependency> 2.配置文件&#xff08;采用yml配置方式&…

并发和并行的关系

先说结论&#xff0c;并发、并行并不对立&#xff0c;可同时存在。 什么是并发&#xff1f; CPU运行速度远大于内存读取速度&#xff0c;为了充分利用CPU性能&#xff0c;不让它总是等着从内存里读数据&#xff0c;CPU时间片技术应运而生&#xff0c;可分时复用CPU&#xff0c…

Linux——redis理论、安全模型

一、redis 主要的data type redis 的原生客户端redis 支持通过python php golang 等语言连接redis 主要适用场景 二、redis如何进行数据存储 非关系数据库 不使用二维表 redis 使用键值对完成数据的存储redis一共有16个库 &#xff0c;不同的库使用编号 0-15redis 在…

LED深圳标准认证产品发布会将在泰国LED展同期举行

9月5-7日&#xff0c;2024泰国曼谷LED照明产品及技术展LED EXPO THAILAND将在IMPACT展览中心盛大召开。深圳市照明与显示工程行业协会将组织立洋股份、亿鑫越、飞业泰、崧盛电子等企业以深圳标准认证展团的方式集团亮相本次展会&#xff0c;并同期召开LED深圳标准认证产品全球发…

Python集成学习和随机森林算法使用详解

概要 集成学习是一种通过组合多个模型来提高预测性能的机器学习方法。它通过将多个弱学习器的结果结合起来,形成一个强学习器,从而提升模型的准确性和稳健性。随机森林(Random Forest)是集成学习中一种非常流行且有效的算法,特别适用于分类和回归任务。本文将详细介绍Pyt…

安装Android Studio及第一个Android工程可能遇到的问题

Android Studio版本众多&#xff0c;电脑操作系统、电脑型号、电脑硬件也是多种多样&#xff0c;幸运的半个小时内可以完成安装&#xff0c;碰到不兼容的电脑&#xff0c;一天甚至更长时间都无法安装成功。 Android安装及第一个Android工程分为4个步骤&#xff0c;为什么放到一…

龙芯+FreeRTOS+LVGL实战笔记(新)——04开启主任务

本专栏是笔者另一个专栏《龙芯RT-ThreadLVGL实战笔记》的姊妹篇&#xff0c;主要的区别在于实时操作系统的不同&#xff0c;章节的安排和任务的推进保持一致&#xff0c;并对源码做了改进和优化&#xff0c;各位可以先到本人主页下去浏览另一专栏的博客列表&#xff08;目前已撰…