日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

讓ChatGPT解讀Vue3源碼過程解析

瀏覽:173日期:2022-06-01 18:25:52
目錄
  • 前言
  • 實戰
    • setup
    • 小結
  • 總結

    前言

    ChatGPT 最近十分火爆,今天我也來讓 ChatGPT 幫我閱讀一下 Vue3 的源代碼。

    都知道 Vue3 組件有一個 setup函數。那么它內部做了什么呢,今天跟隨 ChatGPT 來一探究竟。

    實戰

    setup

    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 context    if (!(__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 = isSSR  const { props, children } = instance.vnode  const isStateful = isStatefulComponent(instance)  initProps(instance, props, isStateful, isSSR)  initSlots(instance, children)  const setupResult = isStateful    ? setupStatefulComponent(instance, isSSR)    : undefined  isInSSRComponentSetup = false  return setupResult}

    把代碼喂給 ChatGPT:

    setupComponent 函數中,處理完 props 和 slots 后,根據是否是有狀態組件調用了setupStatefulComponent。

    直接整個 setupStatefulComponent喂給 ChatGPT:

    太長了,大概意思:

    • 創建了代理緩存accessCache,干嘛用的咱也不知道,可以問 ChatGPT
    • 創建公共實例代理對象(proxy)
    • 執行組件的 setup()

    后續操作是調用 handleSetupResultfinishComponentSetup 返回渲染函數。開始走渲染邏輯了。

    小結

    小結一下setup的始末:

    • 從組件掛載開始調用createComponentInstance創建組件實例
    • 傳遞組件實例給setupComponent
    • setupComponent內部初始化 props 和 slots
    • setupStatefulComponent 執行組件的setup
    • 完成 setup 流程
    • 返回渲染函數
    • ...

    總結

    ChatGPT 很強大,也很笨,畢竟它不聯網,且只有 2021 年以前的數據。可用來幫助我們讀一下晦澀的源碼還是可以的,但也只能輔助作用,還需要自己的思考。

    以上就是讓ChatGPT解讀Vue3源碼過程解析的詳細內容,更多關于ChatGPT讀Vue3源碼的資料請關注其它相關文章!

    標簽: JavaScript
    日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
    91嫩草精品| 亚洲国产福利| 激情国产在线| 欧美一区自拍| 欧美在线精品一区| 国产一级一区二区| 日韩在线欧美| 国产精品magnet| 日本91福利区| 99国产精品自拍| 欧美日韩一二| 久久天堂影院| 国产精品伦理久久久久久| 亚洲日韩中文字幕一区| 99精品99| 石原莉奈在线亚洲二区| 另类亚洲自拍| 国产乱码精品一区二区三区四区| 欧美一区影院| 国产精品成久久久久| 亚洲福利免费| 蜜臀久久久久久久| 国产毛片一区二区三区 | 久久人人97超碰国产公开结果| 色婷婷综合网| 亚洲激情另类| 国产精品女主播一区二区三区| 日韩在线观看中文字幕| 久久只有精品| 亚洲二区三区不卡| 国产欧美精品| 久久要要av| 久久国产免费看| 亚洲激情中文| 国产极品模特精品一二| 亚洲黑丝一区二区| 日本亚洲三级在线| 日韩欧美一区二区三区在线观看| 久久福利影视| 日本欧美国产| 欧美亚洲二区| 日产精品一区二区| 亚洲v天堂v手机在线| 亚洲成a人片| 欧美一级全黄| 欧美中文字幕一区二区| 久久精品凹凸全集| 在线亚洲一区| 久久视频一区| 精品国产一区二区三区性色av| 美女久久一区| 激情综合自拍| 中文字幕在线看片| 欧美黄页在线免费观看 | 国产极品一区| 日韩激情综合| 蜜臀久久久99精品久久久久久| 欧美日中文字幕| 亚洲国产福利| 久久不见久久见免费视频7| 亚洲免费毛片| 亚洲制服一区| 99国产精品99久久久久久粉嫩| 日韩av有码| 福利一区在线| 一区二区精品伦理...| 国产精品一级| 国产精品免费99久久久| 国产激情一区| 日韩av中文字幕一区| 蜜臀av亚洲一区中文字幕| 精品欧美久久| 亚洲黄页一区| 中文精品视频| 视频一区二区三区中文字幕| 国产日韩综合| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲一区av| 欧美日韩一区二区三区不卡视频 | 日韩另类视频| 伊人精品一区| 石原莉奈在线亚洲二区| 91国内精品| 中文字幕人成乱码在线观看| 丝袜av一区| 亚洲尤物在线| 国产欧美自拍一区| 日韩黄色大片| 欧美日韩四区| 视频一区日韩精品| 国产一区二区精品久| 欧美成人精品| 欧美日韩一区自拍| 日韩欧美1区| 中文字幕av亚洲精品一部二部| 国产精品99精品一区二区三区∴| 日韩精品麻豆| 91精品日本| 欧美手机在线| 国产精品一区二区精品视频观看 | 国产精品观看| 中文字幕系列一区| 日本国产一区| 久久蜜桃资源一区二区老牛| 日本一区免费网站| 久久精品国产99久久| 国产乱论精品| 一区二区三区国产在线| 天堂а√在线最新版中文在线| 深夜福利亚洲| 亚洲欧美日韩高清在线| 国产高清视频一区二区| 亚洲精品美女91| 欧美激情综合| 日韩一区二区三区四区五区| 欧美日韩在线二区| 麻豆精品av| 国产日韩一区| 综合五月婷婷| 六月婷婷一区| 99视频+国产日韩欧美| 色黄视频在线观看| 高清日韩中文字幕| 麻豆国产精品视频| 久久av电影| 欧美国产中文高清| 国内不卡的一区二区三区中文字幕| 日韩欧美中文在线观看| 婷婷久久一区| 精品1区2区3区4区| 国产偷自视频区视频一区二区| 99精品视频精品精品视频| 免费看av不卡| 少妇久久久久| 亚洲二区在线| 欧美va天堂| 国产视频一区免费看| 欧美综合国产| 亚洲精品大全| 国产精品一区二区三区美女| 国产精品一卡| 97人人精品| 日本精品不卡| 成人羞羞视频在线看网址| 亚洲性图久久| 蜜臀av性久久久久蜜臀aⅴ四虎| 免费日韩av片| 日韩av不卡在线观看| 久久a爱视频| 天堂资源在线亚洲| 亚洲精品系列| 国产精品资源| 日韩在线观看| 狠狠干综合网| 日本不卡不码高清免费观看| 久久av免费| 欧美一级精品| 日韩超碰人人爽人人做人人添| 三级亚洲高清视频| 欧美中文一区| 欧美aa一级| 丝袜亚洲精品中文字幕一区| 国产精品一区免费在线| 天堂8中文在线最新版在线| 欧美综合二区| 日本一二区不卡| 喷白浆一区二区| 精品三区视频| 亚洲97av| 久久高清免费| 国产精品一区二区三区美女 | 国产欧美一区二区三区国产幕精品 | 自拍自偷一区二区三区| 久久亚洲国产精品尤物| 国产精品视区| 日韩欧美中文| 国产欧美一区二区色老头| 欧美精品高清| 精品视频99| 亚洲18在线| 国产综合婷婷| 国产成人精品福利| 午夜视频一区二区在线观看| 亚洲成av人片一区二区密柚| **爰片久久毛片| 蜜桃久久av| 欧美福利在线| 久久久精品五月天| 国内精品伊人| 美女久久久精品| 国产精品午夜一区二区三区| 中文字幕日韩亚洲| 神马久久午夜| 风间由美中文字幕在线看视频国产欧美 | 日本在线视频一区二区| 首页国产欧美日韩丝袜| 成人av动漫在线观看| 91精品国产乱码久久久久久久| 成人在线超碰| 一区二区三区四区日本视频|