vue如何实现视图渲染

从脚手架入手
template 模板 比如

<template>
<div>
<span v-if="bool"></span>
</div>
</template>
<script>
exprot default{
data:function(){
return {
bool:"true"
}
}
}
</script>

一步步来分析
data使用函数来返回数据对象
将这些数据对象做数据劫持使用object.defindPrototype
或使用proxy代理对象,转换成get,set
模板开始编译 把类似HTML的标签都转换成对象来表示,形成虚拟节点
HTML标签分元素节点,属性节点,文本节点
1 ,遇到data触发get来渲染视图同时产生对应的观察者与收集依赖(订阅器)
2,把遇见的内置指令还是自定义指令都转化成对应的js代码
3,虚拟节点向HTML真实节点转化形成标签
4,对应的css样式来渲染标签 到这一步触发mounted生命周期
使用ref来操作节点 query selector等等
5,当data数据变化触发set,收集的依赖也就是订阅器会去寻找对应的watcher 通知template模板里面包含data的数据(包含{{msg}}这样的文本,指令,但凡涉及data数据)进行更新,组件重新渲染
6.模板的渲染有el <template<render 本质都是转化成render,也是jsx写法
7.初始化与刷新,本质是虚拟节点使用diff算法对比减少重绘重排形成节点
8.vue文件后缀编译形成组件化也得益于nodejs以及webpage等等的兴起

vue2.x对数组的一些常用操作可以监听
对data的数据一个个遍历监听
为了完善提供Vue.set(obj,key,value)与observer({count:0})
也提供了computed watch来进行深入监听 比如
deep:true深入
immediate:true初始

而proxy代理返回一个对象弥补上面的缺陷

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值