Vue源码系列16------响应式原理-----原理

博客分析了Vue数据渲染和组件化的初始化过程,指出Vue数据驱动不仅是数据渲染DOM,数据变更也会触发DOM变化。通过示例对比不用Vue和用Vue实现需求的差异,强调手动操作DOM存在的问题,而Vue对这些问题做了封装,后续将重点分析其内部逻辑。

至此分析了Vue 怎么实现数据渲染和组件化的,主要是初始化的过程,把原始的数据最终映射到 DOM 中,但并没有涉及到数据变化到 DOM 变化的部分。而 Vue 的数据驱动除了数据渲染 DOM 之外,还有一个很重要的体现就是数据的变更会触发 DOM 的变化。都知道前端开发最重要的 2 个工作,一个是把数据渲染到页面,另一个是处理用户交互。


先来看一个示例:

<div id="app" @click="changeMsg">
  {{ message }}
</div>
var app = new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue!'
  },
  methods: {
    changeMsg() {
      this.message = 'Hello World!'
    }
  }
})

当我们去修改 this.message 的时候,模板对应的插值也会渲染成新的数据,那么这一切是怎么实现的?

在分析前,我们先直观的想一下,如果不用 Vue 的话,我们会通过最简单的方法实现这个需求:监听点击事件,修改数据,手动操作 DOM 重新渲染。这个过程和使用 Vue 的最大区别就是多了一步“手动操作 DOM 重新渲染”。这一步看上去并不多,但它背后又潜在的几个要处理的问题:

  1. 我需要修改哪块的 DOM?
  2. 我的修改效率和性能是不是最优的?
  3. 我需要对数据每一次的修改都去操作 DOM 吗?
  4. 我需要 case by case 去写修改 DOM 的逻辑吗?

在Vue中,以上几个问题都被Vue做了封装。Vue内部的逻辑将是分析的重点

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值