Vue 的首次渲染的过程

Vue版本:2.6.10

  1. 首先进行Vue的初始化,初始化Vue的实例成员和静态成员
  2. 调用构造函数中的_init()方法,作为整个Vue的入口
  3. 在_init()中调用$mount()方法:
    • 第一个$mount():在入口文件entry-runtime-with-compiler.js中。其核心作用是将模板(按照传入render>template>el的优先级作为模板)用compileToFunction()编译成render函数并存储在option.render中
    • 第二个$mount():在runtime/index.js中。运行时版本不会走第一个mount(),所以仅会在这里中获取el
  4. 调用mountComponent(),src/core/instance/lifecycle.js中定义
    1. 判断render选项,若运行时版本&没有render&传入了模板,会警告运行时版本不支持编译器
    2. 触发beforeMount()
    3. 定义updateComponent(),该方法中调用了两个方法:
      • _rende():调用了render.call(vm._renderProxy,vm$createElement)将用户传入的render()或者自己编译生成的render()生成的虚拟DOM返回
      • _update():调用了__patch__(vm.$el,vnode)将虚拟DOM转换成真实DOM,并且挂载到页面上;将生成的真实DOM记录到vm.$el中。
    4. 创建Watcher对象。创建时传递了updateComponent()并在内部调用get()时调用了updateComponent()
    5. 触发mounted()
    6. return vm
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值