Vue3源码梳理:源码目录结构及源码阅读方法

超详细Vue3响应式原理介绍加源码阅读 本章介绍Vue中另一个非常重要的模块,响应式。介绍了基本原理(含图)简单实现以及如何阅读源码。 阅读详情

VUE3 源码目录结构

1 ) 下载源码三种方式

  • 方式1,Download ZIP,不推荐
  • 方式2,通过https,或ssh或github cli来克隆项目
    • $ git clone https://github.com/vuejs/core.git
    • $ git clone git@github.com:vuejs/core.git
  • 方式3,点击Fork, 到自己仓库,再执行上面两步的方式下载

2 )源码目录解析

  • tsconfig.json ts 配置文件
  • rollup.config.js rollup 配置文件
  • packages 包
    • compiler-core: 编译器的核心库
    • compiler-dom: 编译器浏览器相关
    • compiler-ssr: 服务端渲染的编译模块
    • compiler-sfc: .vue组件的编译模块
    • reactivity: 响应性的核心模块
    • reactivity-transform: 已过期的模块,无需过于关注
    • runtime-core: 运行时核心库,内部针对不同平台进行实现
    • runtime-dom:基于浏览器的运行时
    • runtime-test:测试用的
    • server-renderer:服务端渲染库
    • sfc-playground:sfc 工具,暂时无需关注,参考:https://sfc.vuejs.org
    • shared: 存放共享工具方法等
    • size-check: 运行时包大小的检查库,暂无需关注
    • template-explorer: 提供的线上测试,暂无需关注,https://template-explorer.vuejs.org, 用于把template转化为render
    • vue: 包含测试实例,以及打包后的dist文件,src中对外暴露入口的方法
    • vue-compat: vue2的兼容性代码,以及vue的合并代码
    • global.d.ts 全局的ts声明
  • netlify.toml 自动化部署相关
  • jest.config.js 测试相关
  • api-extractor.json ts的api分析工具
  • SECURITY.md 报告漏洞,维护安全的声明
  • CHANGELOG.md 更新日志
  • BACKERS.md 赞助声明
  • test-dts 测试相关
  • scripts 配置文件相关
  • pnpm-workspace.yaml pnpm 相关配置
  • pnpm-lock.yaml 使用 pnpm 下载的依赖包版本锁文件

创建测试 实例

1 ) 需要全局安装下 pnpm

  • pnpm.io/zh/motivation
  • 安装完成,直接执行 pnpm i
  • 之后运行:npm run build
  • 编写我们的用例,在vue/examples下新建我们测试的代码目录
    • 新建reactivity目录, 在其下新建 reactive.html
    • 编写如下代码

2 )编写简单测试代码

<script src='../../dist/vue.global.js'></script>

<body>
  <div id='app'></div>
</body>

<script>
  const { reactive, effect } = Vue
  const obj = reactive({
    name: '张三'
  })
  effect(()=>{
    document.querySelector('#app').innerText = obj.name
  })
  const timer = setTimout(() => {
    clearTimeout(timer)
    obj.name = '李四'
  })
</script>

3 )开启sourceMap

  • 只有开启sourceMap才能进行debugger
  • 这样,我们就可以借助sourceMap查看打包之前的代码,而非打包之后的代码
  • 我们打包用的命令在package.json中,是:node scripts/build.js
  • 在这个文件中,我们可以看到: sourceMap ? SOURCE_MAP:true : ``, 这里开启 sourceMap的关键就在这个变量里
  • 这里的代码:SOURCE_MAP:true 最终会被 rollup 构建
  • 在rollup.config.js 中包含sourceMap的逻辑,大概在94行
  • output.sourcemap = !!process.env.SOURCE_MAP
  • 这个变量 sourcemap 在 build.js中是取决于 args.sourcemap 或 args.s
  • 而 args 是在使用了 minimist 库来生成的:const args = require('minimist')(process.argv.slice(2))
  • 这个 minimist 包是在 npmjs.com/package/minimist 中 查看 example
  • 而在vue中开启sourceMap, 其实非常简单,只需要在build命令后面添加 -s 参数即可
    • "build": "node scripts/build.js -s"

4 ) 进行debugger

  • 基于之前的live-server打开的http访问的页面:http://127.0.0.1:5500/**/code/vue-next-3.2.37/packages/vue/examples/reactivity/reactive.html
    • 我们点击chrome的Sources面板,向下可看到Page, Filesystem子面板,选择Page面板,查看当前页面对应的html文件里的代码,我们可看到 reactive.html 文件
    • 只有这一个html文件以及dist/vue.global.js的js文件
  • 重新运行 build 命令, 在dist目录中,发现生成了一些 map.js 文件
    • 同样,按上述步骤操作,查看 Page 子面板,等一会儿发现,同步了一堆文件:
    • vue, compiler-core/src, compiler-dom/src, reactivity/src, runtime-core/src, runtime-dom/src, shared/src
  • 现在我想调试,如上代码中的 reactive api, 我在 reactivity/src/reactive.ts 中找到 reactive 函数并打上一个断点,即可调试了

如何阅读源码

1 ) 关于误区

  • 误区:
    • 把源代码中的每一行代码都读明白,这会导致 事倍功半
  • 正确:
    • 摒弃边缘情况,仅阅读核心逻辑,一些边缘的和一些条件可适当忽略
    • 跟随一条主线, 下面三大块不是同时的,而是跟着一条线来走完
      • 响应性
      • 运行时
      • 编译器

2 )关于调试流程

  • 基于上述源码,我们可以测试我们的功能
  • 但是为了研究出具体的功能,我们可以自行搭建一套类似vue的框架来简化核心流程
【ChatGPT带你学Vue】Vue3 核心源码解析(1)createApp 、h函数、nextTick 首先安利一个非常好用的小站,清晰地梳理了Vue3源码的一些核心模块,结合ChatGPT插件的代码解释功能一起阅读,无比丝滑!下面就记录一下AI帮我分析的源码相关内容。 阅读详情

相关推荐

Vue3 源码实战课程下载(附源码)

Vue3 源码实战课程下载(附源码),一共54节,课程手把手带你构建自己的 Vue3

Vue3学习--正确调试vue3源码

vue3

qq_45264054的博客 2558

vue3.0源码2024-7-1从gitlub上下载的

vue3.0源码2024-7-1从gitlub上下载的

vue3 源码下载地址

vue3 源码下载

weixin_44565776的博客 1236

NE555构成多谐振荡器及三角波、正弦波的生成(附工程文件)

NE555构成多谐振荡器及三角波、正弦波的生成 续上一篇:NE555基本原理及相关公式的推导

qq_49979053的博客 5万+

Quartus II 13.0安装避坑指南:从下载到破解的完整流程(附常见错误解决方案)

本文提供Quartus II 13.0软件的详细安装与破解指南,涵盖从下载准备、路径设置、主程序安装到授权配置的全流程。重点解析了破解过程中生成和修改license.dat文件的核心步骤,并针对“无法找到有效的License文件”等常见错误提供了实用的解决方案,帮助用户快速构建稳定的FPGA开发环境。

weixin_29291863的博客 762

Vue3源码解读--方向篇

vue源码解读

嗨,欢迎来到我的 优快云 博客小天地!一名深耕多年的技术发烧友。在这里,我将把日常工作中积累的宝贵经验,从复杂架构设计的精妙之处,到代码优化的实战技巧,毫无保留地分享给大家。 1679

从零开始:使用CMake构建GreenHills RH850项目的完整工作流(2018.1.5版)

本文详细介绍了如何从零开始使用CMake构建GreenHills RH850嵌入式项目的完整工作流。通过编写工具链文件、定义CMakeLists.txt,实现自动化、可维护的跨平台构建,有效解决了传统IDE在多模块、持续集成场景下的局限性,显著提升团队协作效率和项目可维护性。

weixin_28839699的博客 131

如何阅读vue3源码

摘要:Vue3源码调试与阅读指南 调试Vue3源码的步骤包括:1)从GitHub下载core目录源码,使用pnpm安装依赖;2)新版(3.5.17+)无需开启sourcemap,旧版需修改package.json配置;3)用liveserver运行examples/composition下的demo进行调试。阅读建议关注核心逻辑,重点理解响应性、编译器和运行时三部分。源码位于packages/vue/dist目录,dev命令生成vue.global.js文件供调试使用。

wxiao_xiao_miao的博客 657

信息抽取实战:三元组抽取(限定领域 vs 开放领域)(附代码)

信息抽取实战:三元组抽取 目录信息抽取实战:三元组抽取一、限定领域的三元组抽取比赛介绍数据分析序列标注模型关系分类模型三元组提取总结开放领域的三元组抽取标注平台文本分类新数据进行三元组抽取总结参考文献 一、限定领域的三元组抽取   本项目将会介绍在2019语言与智能技术竞赛的三元组抽取比赛方面的一次尝试。由于该比赛早已结束,当时也没有参加这个比赛,因此没有测评成绩,我们也只能拿到训练集和验证集。但是,这并不耽误我们在这方面做实验。 比赛介绍   该比赛的网址为:http://lic2019.ccf.org.

南有芙蕖 2万+

Visual Studio 2022调试Godot 4 C#项目全攻略:从环境配置到断点调试

本文详细介绍了如何配置Visual Studio 2022以高效调试Godot 4 C#项目。从环境搭建、外部编辑器设置到两种核心调试模式(附加到进程与启动配置)的实战指南,帮助开发者构建无缝的工业级工作流,解决编码乱码、断点失效等常见问题,大幅提升开发与问题排查效率。

bush的博客 392

Vue2源码梳理:关于vue2的源码目录设计与相关模块作用分析

Vue.js 的源码都在 src 目录下,其目录结构如下。

Wang的专栏 525

rk3568 Android12 默认授予预装app权限

默认授予预装应用权限可以避免用户在每次使用应用时都要重复同意权限请求。尽管在Android 12中,用户对权限的管理有了更高的控制权,但这也可能导致用户在频繁使用预装应用时感到繁琐和不必要的干扰。通过默认授权,减少了这种麻烦。一些厂商可能会根据其定制的Android系统(如Samsung的One UI、Xiaomi的MIUI)要求某些预装应用默认获得权限,以便应用能够提供厂商特定的功能。这也有助于设备厂商提供统一和稳定的服务,不至于因为权限问题导致某些功能无法使用。

weixin_35723192的博客 661

Vue3源码 第一篇-总览

Vue3源码总览 文章目录Vue3源码总览前言一、从哪里搞到源码?二、开始学习1.准备所需文件,并且引入Vue32.如何读源码3.Vue.createApp()3.1 ensureRenderer()总结 前言 之前读过Vue2的源码,所以Vue3源码发布后就迫不及待的赶紧下载下来读了读,对比Vue2的源码还是有许多改变,但是对Vue2源码有所了解还是比较好读的,我自己也是一边读代码一边记笔记,把自己的一些笔记和想法分享在这里,如果有错误的地方希望大佬斧正,废话不多说,开冲~~ 提示:以下是本篇文章

不忘初心 1714

Linkage Mapper 工具参数详解——Building Network and Map Linkages

此文档用于解析使用LinkageMapper各输入输出参数详情以及可能的影响,并介绍了如何解释模型输出结果和输出参数,适合刚入手的人。篇幅很长很啰嗦,是因为每个参数都解释的万分细致。

sumuses的博客 6121

《UDS协议从入门到精通(UDS速查手册)》(完结撒花版)

专栏总目录,文中介绍了UDS协议相关的基础知识和一些术语,给出了详细介绍6大类26种服务的跳转目录。

车载系统攻城狮 9万+

从Vue3源码深入理解ref响应式

首先我们要去学习源码,就要对整个项目有一个基本了解,了解每个模块、每个目录的作用,这样对我们后期阅读源码也会有很大的帮助;我们将项目从Github上克隆下来:bash代码解读复制代码如果因为网络问题克隆不下来,点击这个链接获取源码;笔者克隆下来时,当前版本号为3.5.12。我们看到整个项目的目录还是非常多的,又有编译时,又有运行时的目录,主要的代码都存放在packages目录,因此我们主要看下它下面的目录结构:bash代码解读复制代码。

qq_66118130的博客 1020

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Vue3 源码系列:项目调试和项目架构分析(一)

源码阅读,知其然知其所以然,学习框架背后优秀的设计思想和理念,接触开源项目,零距离和大佬接触,吸收他们优秀的编程经验

前端攻城狮 2164

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

深入vue - 源码目录及构建过程分析

“本文主要梳理一下vue代码的目录,以及vue代码构建流程,旨在对vue源码整体有一个认知,有助于后续对源码的阅读。”01—目录结构上图是对vue的代码的所有目录进行的梳理,其中源码位...

yuqing1008的博客 134

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

深入Vue - 源码目录及构建过程分析

摘要: Vue源码阅读第一步。 原文:深入vue - 源码目录及构建过程分析 公众号:前端小苑 Fundebug经授权转载,版权归原作者所有。 本文主要梳理一下vue代码的目录,以及vue代码构建流程,旨在对vue源码整体有一个认知,有助于后续对源码的阅读。 1. 目录结构 上图是对vue的代码的所有目录进行的梳理,其中源码位于src目录下,下面对src下的目录进行介绍。 compiler ...

weixin_34161032的博客 191

源码阅读--vue-router-next核心源码大纲梳理

文章目录前言一、源码大纲名词解释第一部分:创建第二部分:注册到vue(vue.use) src/router.ts: install第三部分:使用二、实际工作流程 前言 本文仅做大纲整理,方便日后回顾。所以很少贴代码(贴上太多代码看着乱遭)。 本次阅读源码原因:项目需要多窗口 一、源码大纲 名词解释 当前路由信息(currentRouter):当前匹配到的路由–this.$route 路由实例(router):this.$router 第一部分:创建 代码位置 // src/router.

qq985169322的博客 1541

.vue文件怎么使用_深入Vue - 源码目录及构建过程分析

摘要: Vue 源码阅读第一步。原文:深入 vue - 源码目录及构建过程分析公众号:前端小苑Fundebug经授权转载,版权归原作者所有。本文主要梳理一下 vue 代码的目录,以及 vue 代码构建流程,旨在对 vue 源码整体有一个认知,有助于后续对源码的阅读。1. 目录结构上图是对 vue 的代码的所有目录进行的梳理,其中源码位于 src 目录下,下面对 src 下的目录进行介绍。compi...

weixin_39641236的博客 217

从零到一读懂 Vue 3 中文文档:新手完整避坑阅读指南

深夜十一点,你刚敲完 `npm create vite`,却被一整页英文术语劝退。别慌,这份 docs-next-zh-cn——Vue 3 官方文档(v3.vuejs.org)的完整中文翻译——就是为这个时刻准备的。它把官方文档同步翻译成中文,更新不打折、术语不走样,让中文开发者第一次能在"母语"里理解响应式、组件与组合式 API。接下来我带你按一条不绕弯的路线,把这本"大部头"真正读薄、读透。

gitblog_00878的博客 127
上一篇: Vue3源码梳理:关于运行时和编译时
下一篇: Docker笔记:数据卷挂载的三种方式及物理机与容器内的环境变量的传递
Wang's Blog
博客等级 码龄12年 7434粉丝 2421原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值