Vue设计原理解读之初始化挂载流程(二)

本文目的是为探究vue初始化时的挂载流程,主要包括如下核心问题:

  • 渲染器的创建
  • vnode的创建
  • vnode的渲染

环境准备

  1. 克隆vuejs/core到本地:git clone https://github.com/vuejs/core.git
  2. pnpm i安装依赖==> pnpm run dev-esm打一个runtime的包==>打出来的包在packages/vue/dist/vue.runtime.esm-bundler.js,并且生成了sourceMap便于调试
  3. 创建test文件,文件位置如下:
html 复制代码
    <!doctype html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Document</title>
      </head>
  <body>
    <div id="root"></div>
    <script type="module">
      import { h, ref, createApp } from '../../dist/vue.runtime.esm-bundler.js'

      const count = ref(0)

      const HelloWorld = {
        name: 'Child',
        render() {
          return h('div', `我是子组件: count: ${count.value}`)
        },
      }

      const App = {
        name: 'App',
        render() {
          return h('div', { tId: 1 }, [h('p', {}, '我是父组件'), h(HelloWorld)])
        },
      }

      createApp(App).mount(document.querySelector('#root'))
    </script>
  </body>
</html>
  1. 创建vscode的debugger文件,可进行本地调试
launch.json 复制代码
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Launch Chrome",
      "request": "launch",
      "type": "chrome",
      "url": "http://127.0.0.1:5501/packages/vue/examples/exam/index.html",
      "webRoot": "${workspaceFolder}"
    }
  ]
}

上述文件中的端口自行修改 ,我们打个断点,然后按F5就可以打开调试页面了。:

源码看起来比较复杂,我是通过画思维导图来学习整体流程的。

相关推荐
NiceCloud喜云36 分钟前
Opus 4.8 的 Effort Control 怎么选:Low 到 Max 五档策略
android·java·大数据·前端·c++·python·spring
wordbaby1 小时前
React Native + RNOH:跨页面数据回传的最佳实践与避坑指南
前端·react native
丷丩1 小时前
MapLibre GL JS第22课:查看本地GeoJSON
前端·javascript·map·mapbox·maplibre gl js
Front思2 小时前
AI前端工程师需要具备能力+
前端·人工智能·ai
ZC跨境爬虫4 小时前
跟着 MDN 学CSS day_29:(掌握文本与字体样式的核心艺术)
前端·css·ui·html·tensorflow
李子琪。5 小时前
网络空间安全深度实战:CSRF 漏洞原理剖析与基于 Token 的纵深防御体系构建(全栈实验报告)
前端·安全·csrf
冰暮流星5 小时前
javascript之history对象介绍
前端·笔记
IT_陈寒5 小时前
Vite热更新失灵?你可能漏了这个配置
前端·人工智能·后端
丷丩5 小时前
MapLibre GL JS第19课:实时更新要素
前端·javascript·gis·map·mapbox·maplibre gl js
Mr.Daozhi5 小时前
RAG 进阶实战:跑通 Demo 后我连续翻了 6 次车,逐一修复才真正可用(含 Gradio Web 版)
前端·数据库·langchain·大模型·gradio·rag·科研工具