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

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

讓ChatGPT解讀Vue3源碼過程解析

瀏覽:175日期: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久久,三上悠亚国产精品一区二区三区
    日韩**一区毛片| 国产日韩三级| 久久香蕉精品香蕉| 国产日产一区| 亚洲精品影院在线观看| 最新亚洲激情| 亚洲一区久久| 日韩精品一二区| 日韩一区二区三免费高清在线观看| 在线亚洲自拍| 先锋影音久久久| 亚洲综合中文| 日韩1区2区日韩1区2区| 青青草精品视频| 国产精品tv| 欧美亚洲日本精品| 欧美日韩中文一区二区| 欧美高清不卡| 美国三级日本三级久久99| 在线亚洲国产精品网站| 亚洲天堂日韩在线| 国产麻豆一区二区三区精品视频| 欧美aa在线视频| 国产美女高潮在线| 精品欧美激情在线观看| 亚洲香蕉视频| 精品日本视频| 99国产成+人+综合+亚洲欧美| 日本在线成人| 日本蜜桃在线观看视频| 亚洲黄页一区| 欧美韩一区二区| 999国产精品永久免费视频app| 久久亚洲色图| 久久精品国产精品亚洲毛片| 91精品蜜臀一区二区三区在线| 日韩中文字幕不卡| 国产一区一一区高清不卡| 黄色日韩在线| 国产一区二区精品久| 亚洲三级av| 国产一区亚洲| 麻豆精品蜜桃视频网站| 免费日韩av片| 久久精品播放| 国产成人精品一区二区三区视频 | 国产一区二区三区国产精品| 午夜在线播放视频欧美| 岛国精品一区| 国产精品手机在线播放| 亚洲一区成人| 亚洲香蕉网站| 日韩精品电影| 国产一区二区三区四区| 欧美亚洲二区| 在线精品视频一区| 婷婷激情综合| 国产精品99一区二区| a国产在线视频| 国产成人精品999在线观看| 日本一区二区中文字幕| 亚洲影视一区| 天海翼精品一区二区三区| 国产亚洲在线观看| 日韩亚洲国产欧美| 久久高清一区| 日韩精品一区第一页| 免费在线观看一区二区三区| 尤物在线精品| 亚洲影视一区| 国产情侣一区| 久久久久九九精品影院| 欧美激情五月| 中文字幕色婷婷在线视频| 久久久久久夜| 日韩在线第七页| 久久亚洲专区| 久久av在线| 国产一级成人av| 粉嫩av一区二区三区四区五区| 色一区二区三区四区| 亚洲成a人片| 免费人成黄页网站在线一区二区| 亚洲精品高潮| 精品久久美女| 精品一区亚洲| 日韩和欧美一区二区| 精品国产91| 美日韩精品视频| 欧美国产中文高清| 中文字幕成在线观看| 亚洲精品综合| 亚洲v在线看| 国产日韩免费| 欧美综合国产| 国产一区二区三区自拍| 久久精品天堂| 欧美日韩1区| 亚洲97av| 美日韩精品视频| 激情欧美一区| 国产成年精品| 久久wwww| 日韩成人午夜精品| 黑丝一区二区三区| 水蜜桃精品av一区二区| 日韩高清一级| 久久免费国产| 麻豆一区在线| 国产调教一区二区三区| 视频一区二区国产| 在线成人动漫av| 日韩欧美视频专区| 国产精品久久久久久久免费观看| 国产精品一卡| 欧美国产极品| 精品国产网站| 91中文字幕精品永久在线| 国产精品igao视频网网址不卡日韩| 视频一区欧美日韩| 激情六月综合| 欧美女激情福利| 先锋亚洲精品| 日韩精品一区二区三区av| 中文字幕av一区二区三区人| 中文字幕一区二区精品区| 亚洲人亚洲人色久| 亚洲精品乱码| 久久爱www成人| 日韩欧美视频专区| 狠狠久久婷婷| 另类av一区二区| 日本不卡一区二区三区| 国产调教精品| 日韩久久精品| 亚洲综合丁香| 97成人超碰| 国产精品精品| 亚洲一区二区三区在线免费| 国产精品黄色片| 欧美日韩在线网站| 在线精品国产亚洲| 麻豆91在线播放| 亚洲精品国产偷自在线观看| 日本综合精品一区| 激情国产在线| 免费在线看一区| av中文字幕在线观看第一页| 久久不射中文字幕| 久久精品福利| 欧美日韩国产探花| 国产调教精品| 日韩精品一级中文字幕精品视频免费观看 | 91精品成人| 免费高清在线一区| 免费亚洲婷婷| 天堂av在线一区| sm捆绑调教国产免费网站在线观看| 精品一区二区三区的国产在线观看| 欧美影院三区| 欧美成a人片免费观看久久五月天| 欧美日韩日本国产亚洲在线| 荡女精品导航| 国产欧美日韩免费观看| 久久亚洲二区| 狠狠色综合网| 久久电影tv| 国产伦精品一区二区三区千人斩 | 国产三级一区| 国产亚洲一级| 国产专区一区| 成人影视亚洲图片在线| 日本强好片久久久久久aaa| 欧美.日韩.国产.一区.二区| 国产精品一站二站| 亚洲精品少妇| 三级在线观看一区二区| 欧美日中文字幕| 国产激情在线播放| 国产精品videossex| 日本不卡高清| 婷婷亚洲成人| 日韩专区在线视频| 欧美资源在线| 日本亚州欧洲精品不卡| 蜜臀av一区二区三区| 久久高清免费观看| 中文无码久久精品| 蜜桃免费网站一区二区三区| 亚洲欧美日韩在线观看a三区 | 福利一区二区| 国产在线看片免费视频在线观看| 久久精品99国产精品日本| 亚欧洲精品视频在线观看| 日韩精品一页| 国产精品扒开腿做爽爽爽软件| 国产极品模特精品一二| 福利精品在线| 99久久婷婷| 亚洲欧美日韩一区在线观看|