vue2和vue3的区别
这周呢主要就是整理整理学的东西,不然看的也记不住,把这些学的东西做成笔记,感觉会清楚许多,这次就把vue2和vue3的区别总结一下,明天要考四级,嗐,本来想着复习四级,结果只写了一两套题,四级这有点悬呀。
1.API
vue2:vue2使用选项类型API,选项类型API在代码里分割了不同的属性data,computed,methods等,一个逻辑散乱在文件不同的位置,导致代码可读性变乱
vue3:vue3中使用组合式API,将逻辑内容写到一起,增强了代码的可读性,还提供了逻辑复用性方案
2.生命周期
整体变化不大,但在vue3在组合式API中使用生命周期的时候,要先引入。而Vue2在选项API中可直接调用生命周期钩子。
| vue2 | vue3 |
|---|---|
| beforeCreate | |
| created | |
| beforeMount | onbeforeMount |
| mounted | mounted |
| beforeUpdate | onbeforeUpdate |
| updated | onupdated |
| beforeDestory | onbeforeDestory |
| destoryed | ondestoryed |
除了这些钩子函数,vue3还增加了onRenderTracked 和onRenderTriggered函数。
setup是围绕beforeCreate和created钩子函数去运行的,所以不需要显示去定义
3.多根节点
vue2中多根节点会报错
//vue2中存在多个节点会报错,但是vue3中支持多个节点
<template><header></header><main></main><footer></footer>
</template>
//只能存在一个根节点,需要一个div包裹
<template><div><header></header><main></main><footer></footer></div>
</template>
4.异步组件Suspense
vue3提供的Suspense组件,有两个插槽:#default和#fallback,来确保加载完成异步内容是显示默认插槽,并将#fallback插槽用作加载状态。
Suspense常见的使用场景:
配合vue3中的defineAsyncComponent来加载异步组件时,进行loading处理
配合路由使用,当未加载完毕时不显示router-view,而是渲染fallback的内容
<template><div class="child"><h3>我是Child组件</h3></div>
</template><script>
import {ref} from 'vue'
export default {name:'Child',setup(){return new Promise((resolve,reject)=>{setTimeout(()=>{resolve({sum})},3000)})}
}
</script>
<style>
.child{background-color:rgb(206, 225, 65) ;padding: 10px;
}
</style>
Child组件(有可能是异步组件,也有可能是组件内部处理逻辑或查找操作过多导致加载过慢等)未加载完成前,显示 Loading…(即 fallback 插槽内容),加载完成时显示自身(即 default 插槽内容)
<template><div class="app"><h3>我是App组件</h3><Suspense><template v-slot:default><Child/></template><template #fallback><h3>加载中。。。</h3></template></Suspense></div>
</template><script>
// import Child from './components/Child.vue'//静态引入
import {defineAsyncComponent} from 'vue'
const Child = defineAsyncComponent(()=>import('./components/Child.vue')) //异步引入
export default {name:'App',components:{Child}
}
</script><style>
.app{background-color:royalblue ;padding: 10px;
}
</style>
Suspense组件会触发三个事件:pending,resolve和fallback。
pending:pending事件是在进入挂起状态时触发。resolve:resolve事件是在default插槽完成获取新内容时触发。fallback:fallback事件是在fallback插槽的内容显示时触发
5.Telport
vue3提供了Telport组件可将部分DOM移动到vue app之外的地方。比如说经常要是用的dialog弹框
<template><button @click="isShow = true">点我弹个窗</button><teleport to="#teleport-target">//将对话框移动到了teleport-target盒子下面<div v-if="isShow" class="mask"><div class="dialog"><h4>我是一个对话窗组件</h4><h4>我是一个对话窗组件</h4><button @click="isShow = false">关闭弹窗</button></div></div></teleport>
</template>
6.响应式原理
1.vue2响应式原理基础是Object.defineProperty,通过Object.defineProperty来劫持各个属性的setter、getter,在数据变动时发布消息给订阅者,触发相应的监听回调
Object.defineProperty基本用法:直接在一个对象上定义新的属性或修改现有的属性,并返回对象
2.vue3响应式原理基础是Proxy相较于vue2,提供语言全范围响应能力,消除了局限性
3.差异如下:
vue2
- Object.defineProperty,不具备监听数组的能力,需要重新定义数组的原型来达到响应式
- Object.defineProperty无法监测到对象属性的添加和删除
- 由于vue会在初始化实例时对属性执行getter和setter转化,所有属性必须在data对象上才能让vue将它转化为响应式
- 深度监听需要一次递归,对性能影响较大
vue3
- 基于Proxy和Reflect,可以原生监听数组,可以监听对象属性的添加和删除
- 不需要一次性遍历data的属性,可以显著提高性能
7.TypeScript支持
vue3由typeScript重写,相对vue2有更好的typeScript的支持
最后,vue3比vue2还新增了响应式的API(reactive、ref等),响应式侦听(watchEffect)等
相关文章:
vue2和vue3的区别
这周呢主要就是整理整理学的东西,不然看的也记不住,把这些学的东西做成笔记,感觉会清楚许多,这次就把vue2和vue3的区别总结一下,明天要考四级,嗐,本来想着复习四级,结果只写了一两套…...
【你不知道的事】JavaScript 中用一种更先进的方式进行深拷贝:structuredClone
你是否知道,JavaScript中有一种原生的方法来做对象的深拷贝? 本文我们要介绍的是 structuredClone 函数,它是内置在 JavaScript 运行时中的: const calendarEvent {title: "Builder.io Conf",date: new Date(123),attendees: ["Steve…...
XE开发Linux应用(二)-Webservice
新建一个工程。选择如图。继续输入服务名然后就生成对应的单元。增加linux 平台。完善对应的单元代码{ Invokable implementation File for Txaliontest which implements Ixaliontest }unit xaliontestImpl;interfaceuses Soap.InvokeRegistry, System.Types, Soap.XSBuiltIns…...
kubernetes实战与源码学习
1.1 关于Kubernetes的介绍与核心对象概念 关于Kubernetes的介绍与核心对象概念-阿里云开发者社区 k8s架构 核心对象 使用kubeadm10分钟部署k8集群 使用 KuboardSpray 安装kubernetes_v1.23.1 | Kuboard k8s-上部署第一个应用程序 Deployment基本概念 给应用添加service&a…...
CNCF x Alibaba云原生技术公开课 第八章 应用配置管理
Pod配置管理分类 可变配置就用 ConfigMap;敏感信息是用 Secret;身份认证是用 ServiceAccount;资源配置是用 Resources;安全管控是用 SecurityContext;前置校验是用 InitContainers。 1、ConfigMap 概念:…...
YUV实践记录
文章目录YUV基础介绍:不同采样YUV格式的区别为什么要使用YUV格式呢?YUV的存储方式Android中的YUV_420_888附录:YUV基础介绍: YUV在做手机图像或者视频处理的时候会经常用到的一个格式,用此文来记录YUV相关介绍…...
【题解】百度2020校招Web前端工程师笔试卷(第一批):单选题、多选题
题目来源 若有错误请指正! 单选 1 分页存储管理将进程的逻辑地址空间分成若干个页,并为各页加以编号,从0开始,若某一计算机主存按字节编址,逻辑地址和物理地址都是32位,页表项大小为4字节,若…...
探索云原生技术之容器编排引擎-kubeadm安装kubernetes1.21.10(新版:针对高版本内核)
❤️作者简介:2022新星计划第三季云原生与云计算赛道Top5🏅、华为云享专家🏅、云原生领域潜力新星🏅 💛博客首页:C站个人主页🌞 💗作者目的:如有错误请指正,将…...
2023广西自治区职业技能大赛“网络安全” 项目比赛任务书
2023广西自治区职业技能大赛“网络安全” 项目比赛任务书2023广西自治区职业技能大赛“网络安全” 项目比赛任务书A模块基础设施设置/安全加固(200分)A-1:登录安全加固(Windows, Linux)A-2:Nginx安全策略&a…...
Reactor模式
Reactor是一种设计模式,可以用于构建高并发的网络服务器。 Reactor模式的好处在于:可以在一个或多个reactor线程使用多路复用技术去管理所有网络连接连接建立、IO请求,保证工作线程不被IO阻塞。 前置知识:IO多路复用技术 1. 传统网…...
Git图解-IDEA中的Git操作
目录 一、配置Idea 二、项目克隆 三、文件状态识别 四、Git操作 4.1 git add--添加暂存区 4.2 git commit--提交本地仓库 4.3 git push--推送远程仓库 4.4 git pull--更新本地仓库 五、完整开发流程 5.1 步骤1:克隆项目 5.2 步骤2:创建自己开发…...
在一个web应用中应该如何完成资源的跳转
在一个web应用中通过两种方式,可以完成资源的跳转: 第一种方式:请求转发 第二种方式:重定向 转发和重定向的区别: 代码上的区别: 请求转发 // 获取请求转发器对象 RequestDispatcher dispatcher request.…...
前缀和部分题目
前缀和 前缀和指数组的前 N项之和,是个比较基础的算法 例题 面试题 17.05. 字母与数字 给定一个放有字母和数字的数组,找到最长的子数组,且包含的字母和数字的个数相同。 返回该子数组,若存在多个最长子数组,返回左…...
三天吃透MySQL面试八股文
本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~ Github地址:https://github.com/…...
Giving You A guide to learning any topic faster than 95% of people
A guide to learning any topic faster than 95% of people: Richard Feynman was a physician who won the Nobel Prize in 1965. But he became known for his great lectures. Why? He was able to explain complex concepts in simple terms with these 4 steps: 1 • E…...
(七十七)大白话MySQL是如何根据成本优化选择执行计划的?(中)
上次我们讲完了全表扫描的成本计算方法,相信大家应该都理解了,其实还是比较简单的,今天我们来讲一下索引的成本计算方法,因为除了全表扫描之外,还可能多个索引都可以使用,但是当然同时一般只能用一个索引&a…...
原来CSS 也可以节流啊
Ⅰ、前言 「节流」 是为了减少请求的触发频率,不让用户点的太快,达到节省资源的目的 ;通常 我们采用 JS 的 定时器 setTimeout ,来控制点击多少秒才能在触发;其实 通过 CSS 也能达到 「节流」 的目的,下面…...
UE官方教程笔记03-功能、术语、操作简介
对官方教程视频[官方培训]03-UE功能、术语、操作简介 | 徐良安 Epic的笔记这一部分基本都是走马观花的简单介绍功能世界创建建模Mesh editingtool是一个全新的建模工具,具备大多数的主流建模软件的核心功能HOUDINI ENGINE FOR UNREALHoudini编辑器,可以用…...
BN,LN,IN,GN的理解和用法
绿色区域表示将该区域作用域(四种方法都贯穿了w,h维度),即将该区域数值进行归一化,变为均值为0,标准差为1。BN的作用区域时N,W,H,表示一个batch数据的每一个通道均值为0,标准差为1;LN则是让每个数据的所有channel的均值…...
Linux:epoll模式web服务器代码,代码debug
源码: https://blog.csdn.net/weixin_44718794/article/details/107206136 修改的地方: 修改后代码: #include <stdio.h> #include <unistd.h> #include <stdlib.h> //#include “epoll_server.h” #ifndef _EPOLL_SER…...
第一批“首席龙虾官”,月薪6万
鱼羊 发自 凹非寺量子位 | 公众号 QbitAI当你以为🦞还是大家伙业余养养的新鲜玩具,已经有公司正经在招「龙虾官」了。(doge)随便打开一个招聘网站一搜,你别说,你还真别说,「OpenClaw」标签下的在…...
WorkBuddy杀疯了?一群AI专家帮我打工,我在微信里当赛博虾工头!
梦瑶 发自 凹非寺量子位 | 公众号 QbitAI到底是谁说,给老板打工自己就当不成老板的?又是谁说,龙虾不好用、还不听使唤的?反正这些事儿,现在跟我没啥关系了。毕竟现在的我,已经转头当起了「虾工头」…...
OpenClaw长期运行:Qwen3.5-9B自动化系统的维护与更新
OpenClaw长期运行:Qwen3.5-9B自动化系统的维护与更新 1. 为什么需要长期维护? 去年冬天,我部署了一个基于OpenClaw和Qwen3.5-9B的自动化系统来处理日常的文档整理工作。最初几周运行得很顺利,直到某个凌晨,系统突然停…...
NaViL-9B效果实测:支持中英文混排表格图像的行列结构识别与内容提取
NaViL-9B效果实测:支持中英文混排表格图像的行列结构识别与内容提取 1. 模型介绍 NaViL-9B是新一代原生多模态大语言模型,专为处理复杂视觉-语言任务设计。与常规视觉模型不同,它不仅能够理解图片内容,还能精准解析表格、文档等…...
从EWA Splatting到3DGS:一阶泰勒展开如何保住高斯的“椭圆”形状?
从EWA Splatting到3DGS:一阶泰勒展开如何保住高斯的“椭圆”形状? 在计算机图形学的演进历程中,三维高斯分布(3D Gaussian)的投影问题一直是个既基础又关键的挑战。想象一下,当你试图将一个完美的三维椭球投…...
抖音无水印视频智能下载与高效管理解决方案:从技术原理到行业应用
抖音无水印视频智能下载与高效管理解决方案:从技术原理到行业应用 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 一、行业痛点与技术破局:重新定义视频内容获取效率 你是否曾遇到这…...
嵌入式设备文件传输协议解析与实践
嵌入式设备文件传输协议深度解析与应用实践1. 文件传输协议概述1.1 传统串口文件传输协议Xmodem协议族作为经典的串口文件传输解决方案,在嵌入式领域已有数十年的应用历史。该协议通过串口实现设备间的可靠数据传输,采用校验和或CRC校验机制确保数据完整…...
从零构建一个轻量级WebSocket服务器:基于libwebsockets的实战与事件循环剖析
从零构建一个轻量级WebSocket服务器:基于libwebsockets的实战与事件循环剖析 在当今实时应用盛行的时代,WebSocket技术已成为构建即时通讯、实时数据推送等功能的基石。不同于传统的HTTP请求-响应模式,WebSocket提供了全双工通信能力…...
HeadPose角度检测避坑指南:从原理到车载疲劳预警系统部署
HeadPose角度检测工程实战:车载疲劳预警系统的嵌入式部署精要 引言:当计算机视觉遇上行车安全 凌晨三点的高速公路上,一辆货运卡车正以80公里时速行驶。驾驶座上的王师傅眼皮开始不受控制地下垂,头部微微前倾——这个细微动作被安…...
别再只用Cesium了!Three.js + Cesium 1.8 整合实战:从零搞定天地图中文底图与BIM模型加载
Three.js与Cesium 1.8深度整合实战:天地图中文底图与BIM模型加载全解析 当我们需要在三维地理信息系统中同时展示宏观地理环境和精细建筑内部结构时,单独使用Cesium或Three.js往往难以完美兼顾。本文将带你完成一次技术栈的深度整合,解决国内…...
