1. vue2和vue3双向数据绑定原理发生了改变

  1. vue2的双向数据绑定是利用了es5 的一个API Object.definepropert() 对数据进行劫持 结合发布订阅模式来实现的。vue3中使用了es6的proxyAPI对数据进行处理。
  2. 相比与vue2,使用proxy API 优势有:defineProperty只能监听某个属性,不能对全对象进行监听;可以省去for in 、闭包等内容来提升效率(直接绑定整个对象即可);可以监听数组,不用再去单独的对数组做特异性操作,vue3可以检测到数组内部数据的变化。

2.Vue3支持碎片(Fragments)

就是说可以拥有多个跟节点。

3. Composition API

Vue2 与vue3 最大的区别是vue2使用选项类型api,对比vue3合成型api。旧得选项型api在代码里分割了不同得属性:data,computed,methods等;新得合成型api能让我们使用方法来分割,相比于旧的API使用属性来分组,这样代码会更加简便和整洁。

4. 建立数据data

vue2是把数据放入data中,vue3就需要使用一个新的setup()方法,此方法在组件初始化构造得时候触发。使用一下三个步骤来简=建立反应性数据: 1. 从vue引入reactive;使用reactive() 方法来声明数据为响应性数据;3. 使用setup()方法来返回我们得响应性数据,从而template可以获取这些响应性数据。

5. 生命周期

vue2     --------------- vue3
beforeCreate                         ->   setup()
Created                                 ->   setup()
beforeMount                          ->   onBeforeMount
mounted                                ->    onMounted
beforeUpdate                        ->    onBeforeUpdate
updated                                 ->    onUpdated
beforeDestroyed                    ->    onBeforeUnmount
destroyed                              ->     onUnmounted
activated                                ->     onActivated
deactivated                            ->     onDeactivated

6. 父子传参不同,setup()函数特性

  1. setup()函数接收两个参数:props、context(包含attrs、slots、emit)
  2. setup函数是处于生命周期beforeCreated和created俩个钩子函数之前
  3. 执行setup时,组件实例尚未被创建(在setup()内部,this不会是该活跃实例得引用,即不指向vue实例,Vue为了避免我们错误得使用,直接将setup函数中得this修改成了undefined)
  4. 与模板一起使用时,需要返回一个对象
  5. 因为setup函数中,props是响应式得,当传入新的prop时,它将会被更新,所以不能使用es6解构,因为它会消除prop得响应性,如需解构prop,可以通过使用setup函数中得toRefs来完成此操作。
  6. 父传子,用props,子传父用事件 Emitting Events。在vue2中,会调用this$emit然后传入事件名和对象;在vue3中得setup()中得第二个参数content对象中就有emit,那么我们只要在setup()接收第二个参数中使用分解对象法取出emit就可以在setup方法中随意使用了。
  7. 在setup()内使用响应式数据时,需要通过 .value 获取
import { ref } from 'vue'
const count = ref(0)
console.log(count.value)
  1. 从setup() 中返回得对象上得property 返回并可以在模板中被访问时,它将自动展开为内部值。不需要在模板中追加.value。
  2. setup函数只能是同步的不能是异步的。

vue2和vue3区别相关推荐

  1. vue2、vue3中自定义v-model的使用和区别

    在我们的日常开发中,时常需要写一些自定义组件,而其中可能就会使用到v-model,v-model是Vue中的一个指令,用来实现数据的双向绑定,实现数据.视图更新,v-model是一个语法糖,,我们可以 ...

  2. vue2和vue3的区别

    文章目录 前言 一.vue2和vue3双向数据绑定原理的区别? 二.根节点的不同 三.Composition API (组合api) 四.生命周期的变化 五. vue2和vue3的diff算法 六. ...

  3. vue2与vue3的区别

    1. vue2和vue3双向数据绑定原理发生了改变 vue2 的双向数据绑定是利用ES5 的一个 API Object.definePropert()对数据进行劫持 结合 发布订阅模式的方式来实现的. ...

  4. 说一说实战项目升级从vue2到vue3 之main.js 区别

    相信很多人都对尤大口中的vue3蠢蠢欲动许久了,但是很多人就是一头雾水没法下手,不知道改怎么搞,或者怕项目升级报错什么的. 我自己的成功的把项目进行升级了,所以想简单记录一下. 简而言之首先就是版本嘛 ...

  5. vue2和vue3的区别(由浅入深)

    前言 vue2和vu3之前的区别,一直以来是面试必考题目,如何回答,回答的层次决定了面试者的对于vue2,3的理解,以及对于vue3目前稳定版本发展的方向的了解,即考察使用程度,又考察了学习能力,可以 ...

  6. 浅谈vue2与vue3的区别

    一.vue2和vue3双向数据绑定原理 vue2 的双向数据绑定是利用ES5 的一个 API Object.definePropert()对数据进行劫持 结合 发布订阅模式的方式来实现的 vue3发生 ...

  7. 【经典面试题】vue2与vue3的区别

    目录 一. vue2和vue3双向数据绑定原理发生了改变 二. Vue3支持碎片(Fragments) 三. Composition API 四. 建立数据 data 五. 生命周期钩子 - Life ...

  8. Vue基础——VueJS是什么、Vue的优缺点、vue2和vue3的模板区别、MVVM数据双向绑定、Vue的安装和使用、Vue模板语法-文本渲染、常用的vue的指令

    目录 一.VueJS是什么? 二.Vue的优缺点 三.MVVM 数据双向绑定 四.Vue的安装和使用 五.Vue模板语法-文本渲染 六.常用的vue的指令 一.VueJS是什么? 它是一个轻量级MVV ...

  9. vue2与vue3的diff算法区别

    Vue2和Vue3的diff算法有一些区别: Vue2使用双向指针来进行虚拟DOM的比较,而Vue3则使用了单向链表的方式. 在计算key值不同时,Vue2会采用首尾两端比较的方法,而Vue3则采用了 ...

最新文章

  1. Yahoo前端优化性能规则
  2. 自动驾驶进入第3阶段 ADAS黑科技守护开车人
  3. Python基础之格式化输出函数format()功能详解
  4. 十大经典排序算法之插入排序及其二分优化
  5. ANSYS——模态提取方法简介
  6. 使有用计算机不注意卫生,保护眼睛注意细节有哪些
  7. 自媒体文章如何提高原创度以及如何检测原创度
  8. python批量保存网页为pdf_在chrome Python3.6中自动打印/将网页保存为pdf
  9. python离线语音识别_python语音识别模块
  10. Home Assistant启动失败,页面报404
  11. Zend与PHP之间到底是什么关系
  12. Debezium 抽取oracle数据
  13. 修改Unity3d Asset Store 默认下载文件位置?
  14. 微信小程序从开发到上线步骤(持续更新)
  15. 视频中的帧、行、场概念
  16. “亚马逊抄袭”引热议,拼多多、淘宝、京东该怎么玩?
  17. emoji mysql 乱码 php_MYSQL utf8mb4 插入emoji表情乱码
  18. discuz 发表带html内容的帖子
  19. 记一次MySQL崩溃修复案例,再也不用删库跑路了
  20. 创业前期如何选择云服务器?

热门文章

  1. centos 日志文件
  2. java--Timer 定时器
  3. 基于UE -Traffic_ SINR – Statistics — 手机在线视频流量对业务速率、小区容量影响分析
  4. ubuntu18.04系统如何新建文档,并且把新建文档作为模板全局使用
  5. python记忆式键入,在Python编程模式下输入命令”print(100+200)“执行的结果是()
  6. 《Unity 3D脚本编程:使用C#语言开发跨平台游戏》序言
  7. 20210212web04mysql多表,事务
  8. 杭州保俶塔实验机器人_以沟通促学习 以交流促进步----赴杭州市保俶塔实验学校交流学习...
  9. 给编程一个你热爱它的机会
  10. 浙大ZOJ 1005 Jugs问题解决