那些关于前端的Vue(2)

Vue组件如何通讯

我在这里例举几种常见的吧。

  • 父–>子使用props,子–>父用$emit触发事件
  • 通过自定义事件使用 $on(eventName) 监听事件,使用 $emit(eventName) 触发事件
  • 还有可以通过状态管理器vuex进行组件通讯

描述组件渲染和更新的过程

在这里插入图片描述

  • vue组件渲染过程
    初次渲染时,将模板编译为render函数,触发响应式,对data 的getter和setter进行监听,执行render函数生成VDOM,即生成Vnode和patch(elem,vnode)。
  • vue组件更新过程时
    修改data后触发data属性里面的setter(在此之前已经监听了getter),执行render函数生成newVnode,patch(vnode,newVnode)

在这里补充一些知识点

  • vdom的本质是用树型结构的JS对象来描述真实的DOM结构的信息,这个树结构的JS对象包含了整个DOM结构的信息.。

  • 在vnode技术出现之后,我们建立一个虚拟 dom 对象来对应真实的 dom 树,那么每次 dom 的更改就变成了 js 对象的属性的更改
    ,这样一来就能查找 js 对象的属性变化要比查询 dom 树的 性能开销小。

  • vnode优化性能核心思想,就是每次更新 dom都尽量避免刷新整个页面,而是有针对性的 去刷新那被更改的一部分 ,来释放掉被无效渲染占用的 CPU性能。同时,也减少了大量的dom操作,减少了浏览器的回流和重绘。
    (使用了diff算法,优化遍历,对真实DOM进行新增修改删除,实现局部更新)
    diff算法的本质就是调用patch()函数(对diff算法的详情在后续更新)

双向数据绑定v-model原理

v-model 本质

<input type="text" @keydown.enter="send" v-model="getcontent">

本质是

<input :value="getcontent" @input="getcontent=$event.target.value">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值