放肆青春的博客
首页
前端
算法
网络
面试
技术
后端
运维
杂项
数据库
工具
网址
电脑
个人
文章
  • 分类
  • 标签
  • 归档
github (opens new window)
gitee (opens new window)

放肆青春

一个前端菜鸟的技术成长之路
首页
前端
算法
网络
面试
技术
后端
运维
杂项
数据库
工具
网址
电脑
个人
文章
  • 分类
  • 标签
  • 归档
github (opens new window)
gitee (opens new window)
  • 前端

    • 前端 概览
    • 前端汇总

    • front 博文

    • front 项目总结

    • front 高级

    • front tools

  • vue

    • vue 概览
    • vue 汇总

    • vue 博文

    • vue 项目总结

    • vue 高级

      • vue 原理汇总
      • vue3新特性
      • watch原理
      • computed原理
      • vue响应式原理
        • vue 响应式原理
          • 响应式和双向绑定区别
          • 响应式简介
          • 原理图
          • 响应式源码解析
      • vue双向数据绑定
      • key原理
      • 虚拟DOM
      • diff算法
      • keep-alive原理
      • nextTick原理
      • scoped原理
      • vue模板编译
      • vue渲染机制
      • vue api原理
      • vue实例方法原理
      • vue源码
  • html

    • html 概览
    • html 汇总

    • html 博文

  • css

    • css 概览
    • css 汇总

    • css 博文

    • sass

    • less

  • js

    • javascript 概览
    • JS 汇总

    • ES6

    • JS 博文

    • JS 工具

  • node

    • node 概览
    • node 汇总

    • node 框架

    • node 博文

  • react

    • react 概览
    • react 汇总

    • react 博文

    • react 高级

  • 微信小程序

    • 微信小程序 概览
    • 微信小程序总结
    • 微信小程序文章
    • 微信小程序 博文

    • 微信小程序 高级

  • 微信公众号

    • 微信公众号 概览
    • 微信公众号总结
    • 微信公众号文章
  • 多端开发

    • 多端开发
    • dsbridge 概览
    • jsbridge 概览
    • webview
    • uniapp

      • uniapp 概览
    • taro

      • taro 概览
    • flutter

      • flutter 概览
      • flutter 环境搭建
    • electron

      • electron 概览
  • front
放肆青春
2021-11-15

vue响应式原理

# vue 响应式原理

# 响应式和双向绑定区别

响应式一般指:数据改变驱动视图改变,是单向的.

双向绑定:是双向的,视图反过来也可以改变数据。 也就是说响应式是双向绑定的一环.

# 响应式简介

数据驱动视图更改需要具备两个条件:

  1. 知道什么时候数据更改 -监听数据改变

  2. 数据改变后将更改更新到视图

监听数据改变

  1. 手动触发视图更新(setData) 对应 react
  2. 数据劫持 对应 vue
  3. 脏检查 对应 angular

如何更新到视图

通过发布订阅模式,监听到数据变化之后,get 时收集依赖,set 的时候通知更新视图。

# 原理图

image

# 响应式源码解析

  1. observe 函数: 是用来监测数据的变化,是一个入口函数,并提供一个出口。

  2. Observer 类: 实例化的过程中对实例添加__ob__属性,并遍历 data

  3. defineReactive 函数: 直接实现将数据转换为响应化的函数

顺序是 1 => 2 => 3 => 1 ... 间接递归的出口在 1 当传入的值不是对象时。

参考:Vue 的 MVVM 模式响应式原理https://juejin.cn/post/6922855909546786830 (opens new window)

observe 解析

  1. 判断必须是对象和非 VNode 的对象类型

  2. 判断是否被观察 __ob__,__ob__属性,表示这个数据被观察了。

  3. 给数组或对象 实例化一个 Observer 对象实例

Observer 解析

  1. 给 data 数据添加__ob__
更新时间: 11/17/2021, 10:30:11 AM
computed原理
vue双向数据绑定

← computed原理 vue双向数据绑定→

最近更新
01
前端权限管理
02-24
02
vue2指令
02-24
03
vue2 hook
02-24
更多文章>
Theme by Vdoing | Copyright © 2019-2022 放肆青春
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式