用 ChatGPT 读 Vue3 源码,会怎么样?

article/2024/9/8 8:47:36

前言

ChatGPT 最近十分火爆,今天我也来让 ChatGPT 帮我阅读一下 Vue3 的源代码。

都知道 Vue3 组件有一个 setup函数。那么它内部做了什么呢,今天跟随 ChatGPT 来一探究竟。

实战

setup 函数在什么位置呢,我们不知道他的实现函数名称,于是问一下 ChatGPT:

 

ChatGPT 告诉我,setup 函数在packages/runtime-core/src/component.ts 文件中。众所周知,runtime-core是 Vue3 的运行时核心代码。我们进去看一眼。

按照它所说的,我们找到了 setupComponentcreateComponentInstance 函数,并没有找到 setupRenderEffect 函数,ChatGPT 的只知道 2021 年以前的知识,Vue3 代码经过了很多变动,不过没关系,这不影响太多。

ChatGPT 告诉我,setupComponent 函数是在createComponentInstance函数中执行的,createComponentInstance看名字是创建组件实例,看一下详细代码。

直接复制给 ChatGPT:

我们根据 ChatGPT 的解释来阅读代码,发现createComponentInstance只是创建了组件的实例并返回。并没有像它上面说的在函数中执行了 setupComponent,笨笨的 ChatGPT。

那就自己找一下setupComponent是在哪里被调用的。

可以packages/runtime-core/搜一下函数名,很快就找到了。在packages/runtime-core/src/renderer.ts文件中的mountComponent函数中。

mountComponent 是挂载组件的方法,前面还有一堆自定义渲染器的逻辑,不在此篇展开。

const mountComponent: MountComponentFn = (...args) => {const instance: ComponentInternalInstance =compatMountInstance ||(initialVNode.component = createComponentInstance(initialVNode,parentComponent,parentSuspense))// ... 省略代码// resolve props and slots for setup contextif (!(__COMPAT__ && compatMountInstance)) {// ...这里调用了setupComponent,传入了实例,还写了注释,感人setupComponent(instance)}// setupRenderEffect 居然也在这setupRenderEffect(instance,initialVNode,container,anchor,parentSuspense,isSVG,optimized)}

mountComponent函数先调用了createComponentInstance, 返回个组件实例,又把实例当作参数传给了 setupComponent。顺便我们还在这发现了 ChatGPT 搞丢的setupRenderEffect函数,它是用来处理一些渲染副作用的。

回到 setupComponent函数,Evan 的注释告诉我们它是处理 props 和 slots 的。

export function setupComponent(instance: ComponentInternalInstance,isSSR = false
) {isInSSRComponentSetup = isSSRconst { props, children } = instance.vnodeconst isStateful = isStatefulComponent(instance)initProps(instance, props, isStateful, isSSR)initSlots(instance, children)const setupResult = isStateful? setupStatefulComponent(instance, isSSR): undefinedisInSSRComponentSetup = falsereturn setupResult
}

把代码喂给 ChatGPT:

setupComponent 函数中,处理完 props 和 slots 后,根据是否是有状态组件调用了setupStatefulComponent

直接整个 setupStatefulComponent喂给 ChatGPT:

 

 

太长了,大概意思:

  • 创建了代理缓存accessCache,干嘛用的咱也不知道,可以问 ChatGPT
  • 创建公共实例代理对象(proxy)
  • 执行组件的 setup()

后续操作是调用 handleSetupResultfinishComponentSetup 返回渲染函数。开始走渲染逻辑了。

小结

小结一下setup的始末:

  • 从组件挂载开始调用createComponentInstance创建组件实例
  • 传递组件实例给setupComponent
  • setupComponent内部初始化 props 和 slots
  • setupStatefulComponent 执行组件的setup
  • 完成 setup 流程
  • 返回渲染函数
  • ...

总结

ChatGPT 很强大,也很笨,毕竟它不联网,且只有 2021 年以前的数据。可用来帮助我们读一下晦涩的源码还是可以的,但也只能辅助作用,还需要自己的思考。

PS: vue 源码太多了,喂不动了,有兴趣的自己试一下。


最近熬夜给大家准备了一份非常全的ChatGPT 高效指令汇总大全【完整版】,需要的可以私信免费领取!


http://chatgpt.dhexx.cn/article/wfmhfVbO.shtml

相关文章

ChatGPT读PDF、生成思维导图的几种方案

大家好,我是可夫小子,《小白玩转ChatGPT》专栏作者,关注AIGC、读书和自媒体。 日常办公,我们离不开pdf文档读取,思维导图制作,那么ChatGPT能够给我们什么帮助呢? 通常的方法是:我们…

chatgpt赋能python:Numpy读音:是“num-pie”还是“num-pee”?

Numpy读音:是“num-pie”还是“num-pee”? 你是否曾经在想,“numpy”这个词怎么念?很多人都有不同的看法。有些人说“num-pie”,而另一些人则说“num-pee”。那么,谁是正确的呢?在这篇文章中&a…

一文读懂ChatGPT(全文由ChatGPT撰写)

最近ChatGPT爆火,相信大家或多或少都听说过ChatGPT。到底ChatGPT是什么?有什么优缺点呢? 今天就由ChatGPT自己来给大家答疑解惑~ 全文文案来自ChatGPT! 01 ChatGPT是什么 ChatGPT是一种基于人工智能技术的自然语言处理系统&…

【记录】ChatGPT使用记录

文章目录 2023年02月08日数学哲学Java其他 2023年02月09日ChatGPT网络 2023年02月10日算法组网 2023年02月11日ChatGPT(优化目标)DOS 2023年02月15日影评(三体、流浪地球2)Discord 2023年02月17日翻译 🔥 根据对话的日…

ChatGPT App 来了!

两个月前,在 ChatGPT 相继公开 API、带来「插件功能」之际,我们明显感知到了 GPT 正在以前所未有的速度成为人工智能时代的 Windows,AI 发展也正处于 iPhone 4 时刻。 当下,ChatGPT 的进度再下一城,其自身真正迎来了 …

ChatGPT大规模封锁亚洲地区账号

我是卢松松,点点上面的头像,欢迎关注我哦! 在毫无征兆的情况下,从3月31日开始OpenAI大规模封号,而且主要集中在亚洲地区,特别是ip地址在台湾、日本、香港三地的,命中率目测40%。新注册的账号、…

Chatgpt详细登录教程

一、准备“梯子” 梯子、科学上网、翻墙,三者是同一个意思。本店没相关科技产品和服务,请用户各显神通。 1. 确认IP 打开跳转入口,看下图 ​ 2.尝试登录 注意,第1点不是必需的,有些设备ip查询会延迟但当下依然能登…

ChatGPT知识库丨ChatGPT 登不上官网怎么办?

ChatGPT知识库丨公开 分享 进步 一站式GPT知识库 语雀秉持公开、分享和进步的理念,打造一站式ChatGPT知识库https://www.yuque.com/gptcn/gpt原文首发于语雀知识库文档 最近看见不少人说ChatGPT 登不上官网了,那怎么办? 首先,记…

ChatGPT为我做的账号介绍

以上是ChatGPT介绍 另外Captain目前在职与一家ToB家居售后行业,主要专注于家居家具类产品售后环节的数据产品建设和数据模型设计、指标看板设计、选品和售后类数据化解决方案。 回答: 大家好,我是Captain,一个CSDN博主&#xff…

如何修改ChatGPT账号密码?偷偷告诉你一个小技巧。请赶紧修改

文 / 韩彬(微信公众号:量子论) 说个现实问题,因为各种原因,不少朋友的ChatGPT是买的账号或代为注册的账号。 考虑安全问题,强烈建议修改初始密码。 然而,ChatGPT竟然没有提供修改密码的功能&…

手把手教你个性化修改ChatGPT账号头像,纯干货,超简单

文 / 韩彬(微信公众号:量子论) 上一篇文章《该为 GPT-4 降温了》的结尾,我提了一个问题,如何修改ChatGPT账号头像? 比如,在与ChatGPT对话时,显示的头像是两个字母。 我想同下图一样&…

用ChatGPT,快速设计一个真实的账号系统

hi,我是熵减,见字如面。 用ChatGPT,可以尝试做很多的事情。 今天我们就来让ChatGPT做为架构师,来帮我们设计一个账号系统吧。 我的实验过程记录如下,与你分享。 用户故事 首先,我们从用户故事开始吧。 提示…

针对近日ChatGPT账号大批量封禁的理性分析

文 / 高扬(微信公众号:量子论) 这两天不太平。 3月31号,不少技术圈的朋友和我闲聊说,ChatGPT账号不能注册了。 我不以为然,自己有一个号足够了,并不关注账号注册的事情。 后面又有不少朋友和我说…

ChatGPT 账号被封?推荐 5 款国外网站,完美替代!

ChatGPT 由于某些原因,导致亚洲地区大面积封号,自己的账号也没有幸免。而官网又停止了注册,所以想重新申请是不可能了。但仍然有这方面比较成熟的网站,推荐给大家。 ​注:​以下国外网站访问可能需要会 “魔法"​…

被封了?教你如何解封chatgpt账号,中英版都有

近日,不管你是普通账号还是plus账号,都会面临被封的风险,大家不要慌,要是你的号也被封了,下面紧急启动了一个解封攻略,帮助大家快速解封 第一步:写一封英文邮件进行申诉: 告诉官方这是误会 1. 把邮箱账号和姓名复制到中英文模板 2. 登录其他的邮箱,利用这个邮箱…

chatGPT 使用场景

应用场景:ChatGPT可以用于自动客服服务,智能客服,智能问答,智能对话,智能搜索,智能推荐等。 ChatGPT是一种基于自然语言处理技术的聊天机器人,它可以帮助企业提供更好的客户服务。它可以自动识别…

chatGPT使用疑难问题汇总

疑难问题汇总 准备工作1: 梯孑 客户端软件 ,设置全局, 软路由不行,湾湾不行,紫荆花不行,北极熊不行,不要问为什么ipinfo.io 查看自己的IP 是否在外面,但是不要登录这个网站游览器 …

ChatGPT使用进阶,你一定要知道的应用技巧

鉴于ChatGPT的巨大能力,深入学习ChatGPT使用技巧势在必行。作为伴随着ChatGPT等大语言模型(LLM)出现的还有一个新的工程领域:提示工程(Prompt Engineering)。 提示工程(Prompt Engineering&…

用 chatgpt 训练 midjourney

Midjourney加上ChatGPT玩法 (notion.site) 语音 转文字 文字转语音、语音转文字! 这几种方法你最好要知道 - 零度解说 (freedidi.com)

【ChatGPT使用笔记】 ChatGPT回答不完整,如何获取后续的内容

____tz_zs 对于 ChatGPT 回答不完整的情况(篇幅限制,没有说完),可以输入“继续”指令,让其继续回答下去,获得完整内容。 如下图,发问 “使用web3js 调用 eth链智能合约” 直到这里才是获得了刚…