最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue $nextTick實(shí)現(xiàn)原理深入詳解

 更新時(shí)間:2023年10月08日 10:43:40   作者:光法V3  
這篇文章主要介紹了vue $nextTick實(shí)現(xiàn)原理深入詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

簡(jiǎn)介

鑒于一些朋友想學(xué)習(xí) vue2 源碼,但一看到源碼就頭痛(比如在下...),這里本著能給別人講會(huì),自己就能學(xué)會(huì)的態(tài)度,想開一個(gè)專題,旨在用最簡(jiǎn)單的代碼 讓感興趣的朋友了解一些源碼的設(shè)計(jì)思路(重在思路)。當(dāng)然受限于在下技術(shù)水平,若有歧義或不正確的地方還望大佬們及時(shí)指正。

這一節(jié)主要講一下$nextTick 如何實(shí)現(xiàn)的

nextTick 的作用

我們看一下這一段代碼

當(dāng)我們進(jìn)入頁(yè)面后 根據(jù)雙向綁定原理(當(dāng)然我們還沒(méi)講,如果這個(gè)文章反應(yīng)好后面會(huì)補(bǔ)上)的知識(shí) num 每次執(zhí)行++ 時(shí),其 setter 方法都會(huì)執(zhí)行一次,而每次執(zhí)行 setter 時(shí),都會(huì)觸發(fā) watcher 的更新 dom 方法,那執(zhí)行下來(lái),dom 就會(huì)被更新 10000 次,很明顯這樣就太低效了。

經(jīng)過(guò)簡(jiǎn)單思考我們就可以想到,雖然 num 被更新了 10000 次,但我們實(shí)際只想在最后一次更新后,執(zhí)行 dom 的更新,那就意味著想要提升性能,dom 更新就不能是同步的,而應(yīng)該等每次代碼執(zhí)行完畢后,把所有收集到的 watcher 進(jìn)行去重,如演示代碼中,應(yīng)該在每次執(zhí)行 num 的 setter 后,先把觸發(fā)的 watcher 存入隊(duì)列,等代碼執(zhí)行完畢后,對(duì)收集到的 watcher 進(jìn)行去重,這里就只保留最后一次的 watcher 更新 dom 即可。

nextTick 的簡(jiǎn)單實(shí)現(xiàn)

解析

  • (1)首先,nextTick 函數(shù)將回調(diào)函數(shù)封裝在一個(gè)新的函數(shù)中,并將該封裝函數(shù)推入 callbacks 數(shù)組中。
  • (2)然后,它會(huì)檢查 pending 的狀態(tài),如果為 false,則表示當(dāng)前沒(méi)有執(zhí)行異步更新任務(wù),需要進(jìn)行異步更新。
  • (3)在異步更新中,它會(huì)根據(jù)瀏覽器支持情況選擇使用宏任務(wù)(macro task)或微任務(wù)(micro task)。
    如果瀏覽器支持宏任務(wù),macroTimerFunc 函數(shù)會(huì)被調(diào)用,將異步更新任務(wù)推入宏任務(wù)隊(duì)列中,以便在下一個(gè)宏任務(wù)執(zhí)行時(shí)執(zhí)行回調(diào)函數(shù)。
    如果瀏覽器不支持宏任務(wù),則會(huì)調(diào)用 microTimerFunc 函數(shù),將異步更新任務(wù)推入微任務(wù)隊(duì)列中,以便在下一個(gè)微任務(wù)執(zhí)行時(shí)執(zhí)行回調(diào)函數(shù)。
  • (4)最后,如果回調(diào)函數(shù)為 undefined,并且當(dāng)前環(huán)境支持 Promise,則會(huì)返回一個(gè) Promise 對(duì)象,以便可以使用 await 或 .then() 等方式等待回調(diào)函數(shù)執(zhí)行完成。

以上就是vue $nextTick實(shí)現(xiàn)原理深入詳解的詳細(xì)內(nèi)容,更多關(guān)于vue $nextTick實(shí)現(xiàn)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 在IDEA?2024創(chuàng)建Vue項(xiàng)目的完整實(shí)例代碼

    在IDEA?2024創(chuàng)建Vue項(xiàng)目的完整實(shí)例代碼

    Vue.js是一個(gè)構(gòu)建用戶界面的漸進(jìn)式框架,而IntelliJ IDEA是一款功能強(qiáng)大的Java集成開發(fā)環(huán)境(IDE),但它也支持多種前端技術(shù),包括Vue.js,這篇文章主要介紹了在IDEA 2024創(chuàng)建Vue項(xiàng)目的相關(guān)資料,需要的朋友可以參考下
    2026-02-02
  • 基于vue2.0+vuex的日期選擇組件功能實(shí)現(xiàn)

    基于vue2.0+vuex的日期選擇組件功能實(shí)現(xiàn)

    這篇文章主要介紹了 基于vue2.0+vuex的日期選擇組件功能實(shí)現(xiàn),詳細(xì)介紹了使用vue編寫的日期組件,,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。
    2017-03-03
  • vue中解決拖拽改變存在iframe的div大小時(shí)卡頓問(wèn)題

    vue中解決拖拽改變存在iframe的div大小時(shí)卡頓問(wèn)題

    這篇文章主要介紹了vue中解決拖拽改變存在iframe的div大小時(shí)卡頓問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Vue的diff算法原理你真的了解嗎

    Vue的diff算法原理你真的了解嗎

    這篇文章主要為大家詳細(xì)介紹了Vue的diff算法原理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • 解決vue終端報(bào)錯(cuò):不是內(nèi)部或外部命令

    解決vue終端報(bào)錯(cuò):不是內(nèi)部或外部命令

    最近學(xué)習(xí)一下前端框架Vue,整體上感覺還是比較有意思的,但是在安裝vue-cli腳手架的時(shí)候,出現(xiàn)了一些問(wèn)題,解決問(wèn)題也花費(fèi)了不少時(shí)間,下面這篇文章主要給大家介紹了關(guān)于解決vue終端報(bào)錯(cuò):不是內(nèi)部或外部命令的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • 在vue中寫jsx的幾種方式

    在vue中寫jsx的幾種方式

    本文主要介紹了在vue中寫jsx的幾種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 詳解在vue中如何實(shí)現(xiàn)屏幕錄制與直播推流功能

    詳解在vue中如何實(shí)現(xiàn)屏幕錄制與直播推流功能

    屏幕錄制和直播推流是現(xiàn)代Web應(yīng)用中常用的功能,Vue作為一種流行的JavaScript框架,提供了一些工具和庫(kù),可以方便地實(shí)現(xiàn)屏幕錄制和直播推流功能,本文將介紹如何在Vue中進(jìn)行屏幕錄制和直播推流,需要的朋友可以參考下
    2024-01-01
  • Vue?項(xiàng)目性能優(yōu)化方案分享

    Vue?項(xiàng)目性能優(yōu)化方案分享

    本文是作者通過(guò)實(shí)際項(xiàng)目的優(yōu)化實(shí)踐進(jìn)行總結(jié)而來(lái),希望讀者讀完本文,有一定的啟發(fā)思考,從而對(duì)自己的項(xiàng)目進(jìn)行優(yōu)化起到幫助
    2022-08-08
  • Vue循環(huán)中多個(gè)input綁定指定v-model實(shí)例

    Vue循環(huán)中多個(gè)input綁定指定v-model實(shí)例

    這篇文章主要介紹了Vue循環(huán)中多個(gè)input綁定指定v-model實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • vue2使用wangeditor實(shí)現(xiàn)手寫輸入功能

    vue2使用wangeditor實(shí)現(xiàn)手寫輸入功能

    這篇文章主要為大家詳細(xì)介紹了vue2如何使用wangeditor實(shí)現(xiàn)手寫輸入功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以了解下
    2023-12-12

最新評(píng)論

明溪县| 邳州市| 大连市| 罗城| 阿拉尔市| 兴化市| 大邑县| 彝良县| 军事| 七台河市| 绥江县| 新巴尔虎左旗| 长岭县| 秦安县| 沙田区| 开鲁县| 敦煌市| 丘北县| 永仁县| 始兴县| 宜昌市| 巴林左旗| 松桃| 武鸣县| 南宫市| 榆林市| 新宾| 花莲市| 保定市| 砀山县| 泗洪县| 怀集县| 山东| 靖江市| 临沭县| 昆山市| 龙门县| 麟游县| 呼玛县| 海门市| 石台县|