vue源码讲解系列之四------在render中创建节点和使用组件发生了什么

上一篇我们了解了创建vue实例时调用了_update方法,_update又调用了实例上的__patch__方法,它接收DOM元素、vnode、hydrating和removeOnly这几个参数。createChildren递归调用createElm创建真实DOM,最后使用原生appendChild方法将节点插入到DOM树中。接下来我们来了解vue组件化的过程。

通过组件化的思想,我们可以将界面拆分为多个独立的模块,可以复用和嵌套使用。

上一篇我们了解到了在render函数中直接创建节点的方法:

var app = new Vue({
   
  el: '#app',
  render:function(createElement){
   
      return createElement('div',{
   
          attrs:{
   
              id:'app'
          }
      },this.message)
  },
  data: {
   
    message: 'Hello Vue!'
  }
})

通过判断是真实节点还是虚拟节点,来渲染元素。上述是创建了一个真实节点(isRealElement=true),所以render会走createElm方法,我们可以在测试文件里将以上代码打上断点,看vuejs运行流程:createElement->_createElement->createElm->VNode

function createElement (
//...
): VNode | Array<VNode> {
   
  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值