vue源码之首次渲染过程详解

 更新时间:2022年02月09日 09:40:33   作者:前端阿龙  
这篇文章主要为大家详细介绍了vue源码之首次渲染过程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

首次渲染

src/core/instance/index.js 中的 this._init方法

在这里插入图片描述

init方法内部

在这里插入图片描述
在这里插入图片描述

$mount内部 - 编译版本内部逻辑

在这里插入图片描述

$mount内部 - 运行时版本内部逻辑(最终执行) runtime/index中的 $mount方法

进入runtime/index中的$mount方法可以看到最终调用了mountComponent函数来渲染dom

core/instance/lifecycle 中的mountComponent

在这里插入图片描述

src/core/observer/watcher

在这里插入图片描述

在这里插入图片描述

总结

首次渲染过程

  • vue初始化 实例成员 静态成员
  • new Vue()
  • this._init()
  • vm.$mount() - src/platforms/web/entry-runtime-with-compiler.js
    • 如果没有传递render,把模版编译成render函数
    • compileToFunctions()生成render()渲染函数
    • options.render = render
  • vm.$mount() runtime/index中定义的 $mount 最终调用了mountComponent函数
  • mountComponent(this,el) - src/core/instance/lifecycle.js
    • 判断是否有render选项,如果没有但是传入了模版,并且当前是开发环境的话会发送警告
    • 触发beforeMount
    • 定义 updateComponent
    • 创建watcher实例
    • 触发mounted
    • return vm
  • watcher.get()
    • 创建完watcher之后会调用一次get
    • 调用updateComponent函数
    • 调用 vm._render函数创建VNode
      • 调用render.call(vm._renderProxy, vm.$createElement)
      • 调用实例化时vue传入的render 函数
      • 或者编译template生成的render
      • 返回vnode
    • 调用vm._update内部调用vm.__patch__方法挂载真实dom 记录 vm.$el

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!      

相关文章

  • vue项目使用微信公众号支付总结及遇到的坑

    vue项目使用微信公众号支付总结及遇到的坑

    这篇文章主要介绍了vue项目使用微信公众号支付总结,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-10-10
  • vuex 使用文档小结篇

    vuex 使用文档小结篇

    Vuex 是一个专为Vue.js应用程序开发的状态管理模式,集中式存储管理应用的所有组件状态。本文给大家介绍了vuex使用文档,需要的朋友参考下吧
    2018-01-01
  • vue中数据不响应的问题及解决

    vue中数据不响应的问题及解决

    这篇文章主要介绍了vue中数据不响应的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • Vue中为什么要引入render函数的实现

    Vue中为什么要引入render函数的实现

    本文主要介绍了Vue中为什么要引入render函数的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Composition API思想封装NProgress示例详解

    Composition API思想封装NProgress示例详解

    这篇文章主要为大家介绍了Composition API思想封装NProgress示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • 详解Vue中$props、$attrs和$listeners的使用方法

    详解Vue中$props、$attrs和$listeners的使用方法

    本文主要介绍了Vue中$props、$attrs和$listeners的使用详解,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • vue3 Teleport瞬间移动函数使用方法详解

    vue3 Teleport瞬间移动函数使用方法详解

    这篇文章主要为大家详细介绍了vue3 Teleport瞬间移动函数使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-03-03
  • vue中EventBus的使用教程详解

    vue中EventBus的使用教程详解

    在Vue中,使用EventBus可以实现组件间的通信,如何使用EventBus? 都需要做哪些配置呢?他的注意事项是什么呢?下面就跟随小编一起学习一下吧
    2024-02-02
  • vue element 生成无线级左侧菜单的实现代码

    vue element 生成无线级左侧菜单的实现代码

    这篇文章主要介绍了vue element 生成无线级左侧菜单的实现代码,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • vuex的使用及持久化state的方式详解

    vuex的使用及持久化state的方式详解

    这篇文章主要介绍了vuex的使用及持久化state的方式详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01

最新评论