Vue3新特性合集

embedded/2024/10/18 23:52:21/

Vue3

简介

‌‌Vue 3‌ 是‌Vue.js的最新版本,它带来了许多改进和新的特性,旨在提供更好的性能更强的类型支持以及更灵活的组件开发方式。Vue 3的推出是为了解决Vue 2中存在的一些限制,如响应式系统的限制和虚拟DOM的效率问题。Vue 3在多个方面进行了重大改进,包括其核心的响应式系统和虚拟DOM的实现。‌

优点

体积更小 性能更好 更好的TS支持 更好的代码组织 更好的逻辑抽离 更多新功能

新特性

  1. 重写响应式数据(proxy)
  2. VDOM重写,性能提升,对模板编译进行了优化,diff 算法,path flag 静态节点
  3. Fragment,组件上层增加了虚拟节点,但是不会渲染出来
  4. Tree-shaking 支持,引用并使用了才打包(大量的 API 挂载在 Vue 对象的原型上,难以实现TreeShaking)
  5. Composition API,更好的代码组织,相关逻辑比较集中,setup ref 生命周期钩子 reactive 等
  6. TS支持,Vue2 的 TS 支持不友好,所有属性放在this对象上,难以推导数组的数据类型
  7. 异步组件写法:defineAsyncComponent(() => import(‘…/ele.vue’))
  8. Teleport :传送组件,指定该子组件渲染到父组件之外的其它 DOM 节点下,类似于弹窗中的弹窗放到body中
  9. Suspense :通过插槽实现的 loading 异步加载组件,加载插槽名为 fallback
  10. 多事件:对 DOM 元素的一个操作(比如点击)可以可以绑定多个事件
  11. createApp :写法不同,之前是 new Vue、Vue.use(),现在是 Vue.createApp()、app.use()
  12. 移除 .async 成为v-model:(async 子组件修改父组件传入的参数 双向绑定)
  13. emits 事件:没有this了,setup第二个参数传入emit触发事件,子组件emits事件集合
  14. 生命周期 :destory变成unmount

快在哪里

  1. proxy 和 reflect 实现响应式
  2. diff 算法更高效,同层双端比较
  3. PatchFlag 静态标记:编译模板时将不同的动态节点标记(text props),diff算法优化 区分不同类型的节点(静态节点不进行对比)
  4. hoistStatic 静态提升:编译时将静态节点的定义提升到顶级作用域 缓存起来,多个相邻的静态节点会被合并,拿空间换时间的策略
  5. tree-shaking :编译时根据使用应用引入对应的API,不会一股脑全部引用
  6. cacheHandler :编译缓存事件,有缓存走缓存,没缓存重新定义,拿空间换时间
  7. SSR 优化:静态节点直接输出,绕过vdom,动态节点仍然动态渲染

Options API和Composition API对比

CP带来了更好打代码组织、更好的逻辑复用、更好的类型推导
(相关的代码逻辑比较集中)
小型、简单项目可沿用OP,逻辑复杂的大型项目使用CP更便于维护


http://www.ppmy.cn/embedded/128588.html

相关文章

Dinky 字段模式演变 PIPELINE 同步MySQL到Doris

背景 用Dinky数据平台 FlinkCDC收集Mysql BinLog 至 Doris 搭建实时数仓 问题 用Dinky CDCSOURCE 字段模式演变 整库同步Mysql到Doris 字段新增删除不生效 组件信息 Flink 1.17 FlinkCDC 3.1 dinky 1.1 Doris 2.1.6 Mysql 8.0Dinky MySQLCDC 整库到 Doris需要的依赖 Flink/…

开发一个微信小程序要多少钱?

在当今数字化时代,微信小程序成为众多企业和个人拓展业务、提供服务的热门选择。那么,开发一个微信小程序究竟需要多少钱呢? 开发成本主要取决于多个因素。首先是功能需求的复杂程度。如果只是一个简单的信息展示小程序,功能仅限…

【C++标准模版库】unordered_map和unordered_set的介绍及使用

unordered_map和unordered_set 一.unordered_set1.unordered_set类的介绍2.unordered_set和set的使用差异 二.unordered_map1.unordered_map和map的使用差异 三.unordered_multimap/unordered_multiset四.unordered_map/unordered_set的哈希相关接口 一.unordered_set 1.unord…

Git 可视化的实现:提升版本控制体验的利器

Git 是目前最流行的分布式版本控制系统,广泛应用于软件开发和项目管理中。然而,对于许多人来说,Git 命令行操作可能有些复杂且难以直观理解,特别是当涉及到复杂的分支和合并操作时。为了更好地帮助开发者掌握 Git 的操作过程&…

electron-vite_5打包后跳转失效?请用hash

关于打包后跳转失效, 请检查你的vue和react路由模式是不是hash模式; 注意必须使用hash模式,否则打包后路由跳转失效 React 版本 // "react-router-dom": "^6.11.2", import { HashRouter } from react-router-dom ReactDOM.createR…

树型名称前面插入图片

需求&#xff1a; 搜索树、树型要显示连线&#xff0c;还有名称前带图片 ui组件&#xff1a;https://devui.design/components/zh-cn/overview 直接上代码 [checkable] false 表示取消复选框 <div class"p-sm"><div class"row"><d-sea…

【vue】前置知识学习

代码获取 知识小结 1. 常量和变量 let 定义变量const 定义常量 2. 模板字符串 普通字符串是使用 “” 和 ‘’ 定义的 模板字符串是使用 定义的 模板字符串的好处 可以换行可以插入变量可以插入表达式 3. 对象 取值 .点取值 []方括号取值 // 对象定义 const obj {…

leetcode——135.分发糖果

135.分发糖果 n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求&#xff0c;给这些孩子分发糖果&#xff1a; 每个孩子至少分配到 1 个糖果。 相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果&#xff0c;计算并…