第一章 vue3学习

1、vue双向数据绑定原理

vue.js是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调来渲染视图。

vue是一个mvvm框架,即数据双向绑定,即当数据发生变化的时候,视图也就发生变化,当视图发生变化的时候,数据也会跟着同步变化。

2、vue3新特性

(1)重写双向数据绑定

vue2基于Object.defineProperty()实现

vue3 基于Proxy

Vue3采用了Proxy代理的方式,Proxy是ES6引入的一个新特性,它提供了一个用于创建代理对象的构造函数。它是对整个对象的监听和拦截,可以对对象所有操作进行处理。Object.defineProperty只能监听单个属性的读写,无法监听新增、删除等操作。

Object.defineProperty的缺点

该方法只能监听到数据的修改,监听不到数据的新增和删除,从而不能触发组件更新渲染。vue2中会对数组的新增删除方法push、pop、shift、unshift、splice、sort、reserve通过重写的形式,在拦截里面进行手动收集触发依赖更新。

(2)优化VDOM

在Vue2中,每次更新diff,都是全量对比,Vue3则只对比带有标记的,这样大大减少了非动态内容的对比消耗

(3)Vue3 Fragment

vue3允许我们支持多个根节点

(4)Vue3 Tree shaking

Vue3源码引入tree shaking特性,将全局 API 进行分块。如果你不使用其某些功能,它们将不会包含在你的基础包中。

在Vue2中,无论我们使用什么功能,它们最终都会出现在生产代码中。主要原因是Vue实例在项目中是单例的,捆绑程序无法检测到该对象的哪些属性在代码中被使用到

(5)Vue 3 Composition Api

Setup 语法糖式编程 

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-22 19:48:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-22 19:48:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-22 19:48:02       82 阅读
  4. Python语言-面向对象

    2024-03-22 19:48:02       91 阅读

热门阅读

  1. c++算法学习笔记 (14) 并查集

    2024-03-22 19:48:02       38 阅读
  2. SpringBoot自定义starter开发:定时任务报表开发

    2024-03-22 19:48:02       36 阅读
  3. Rust无法流行起来

    2024-03-22 19:48:02       44 阅读
  4. sqlite简单的增删改查

    2024-03-22 19:48:02       45 阅读
  5. 什么是设计模式?

    2024-03-22 19:48:02       43 阅读
  6. Springboot vue elementui 超市管理系统

    2024-03-22 19:48:02       36 阅读
  7. 位运算算法

    2024-03-22 19:48:02       40 阅读
  8. Python的反射机制

    2024-03-22 19:48:02       39 阅读
  9. python数据库封装调用

    2024-03-22 19:48:02       43 阅读
  10. 从SQL质量管理体系来看SQL审核(2) - SQL质量标准

    2024-03-22 19:48:02       44 阅读