日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

深入了解React新引擎:React Fiber

發(fā)布時(shí)間:2024/2/28 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深入了解React新引擎:React Fiber 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Facebook正在以流行的JavaScript框架React為基礎(chǔ)開發(fā)一個(gè)全新的架構(gòu)。這個(gè)名為React Fiber的全新設(shè)計(jì)改變了檢測(cè)變更的方法和時(shí)機(jī),借此可改進(jìn)瀏覽器端和其他渲染設(shè)備的響應(yīng)速度。

這一全新架構(gòu)最初已于2016年7月公開發(fā)布,其中蘊(yùn)含著過(guò)去多年來(lái)Facebook不斷改進(jìn)的工作成果。該架構(gòu)可向后兼容,徹底重寫了React的協(xié)調(diào)(Reconciliation)算法。該過(guò)程可用于確定出現(xiàn)變更的具體時(shí)間,并將變更傳遞給渲染器。

實(shí)際上該團(tuán)隊(duì)在單線程JavaScript引擎的基礎(chǔ)上構(gòu)建了一種可劃分優(yōu)先級(jí)的協(xié)作式任務(wù)調(diào)度器。在最初的協(xié)調(diào)算法(現(xiàn)已更名為Stack Reconciler)中,Virtual DOM diff會(huì)一次性處理整個(gè)組件樹:

重點(diǎn)在于,Stack Reconciler始終會(huì)一次性地同步處理整個(gè)組件樹。Stack Reconciler無(wú)法暫停,因此如果更新較為深入并且可用CPU時(shí)間有限,這種做法并非最優(yōu)化的。

與之相對(duì)的Fiber Reconciler則有著截然不同的目標(biāo):

  • 能夠?qū)⒖芍袛嗟娜蝿?wù)拆分成塊。
  • 能夠?qū)M(jìn)程中的工作劃分優(yōu)先級(jí)、重新設(shè)定基址(Rebase)、恢復(fù)。
  • 能夠在父子之間來(lái)回反復(fù),借此為React的Layout提供支持。
  • 能夠通過(guò)render()返回多個(gè)元素。
  • 為錯(cuò)誤邊界提供了更好的支持。

簡(jiǎn)單來(lái)說(shuō),此時(shí)不在需要等待變更傳播到整個(gè)組件樹,React Fiber可以知道如何時(shí)不時(shí)暫停一下,檢查是否有其他更重要的更新。這種調(diào)度能力主要基于requestIdleCallback的使用,而這是一種W3C候選推薦標(biāo)準(zhǔn)。

在React Conf 2017大會(huì)上,Lin Clark通過(guò)名為React Fiber簡(jiǎn)介的演講循序漸進(jìn)介紹了新協(xié)調(diào)器的獨(dú)到之處。

大部分情況下,開發(fā)者無(wú)需擔(dān)心代碼的適配問(wèn)題,但也有少量應(yīng)用依賴以特定順序進(jìn)行的生命周期鉤子(Lifecycle hook)。由于順序已經(jīng)無(wú)法保證,因此可能會(huì)遇到一些問(wèn)題。

“為確保這一特性不會(huì)影響應(yīng)用”,Clark稱:“Fiber團(tuán)隊(duì)正在制定更為平緩的升級(jí)路徑”。

Dan Abramov寫到,React團(tuán)隊(duì)認(rèn)為大部分React應(yīng)用不會(huì)因?yàn)榈?6版而遇到問(wèn)題:

React 16(正在開發(fā)中)是一次革新,但也使用了相同的公開API。對(duì)于Facebook所使用的超過(guò)30,000個(gè)(!)組件,其中只有少量需要改動(dòng),并且這少數(shù)組件主要被一些已經(jīng)不再支持或沒(méi)有正式記錄在案的行為所使用。因此可以說(shuō)完全可以保證99.9%的兼容性。這也讓我們確信React 16基本上也可以直接適用于你的代碼。

Fiber將在React 16中首次登場(chǎng),第16版不僅包含新的協(xié)調(diào)引擎,而且提供了可串聯(lián)使用的全新渲染器(例如ReactDOM、React Native)。同時(shí)isfiberreadyyet.com提供了測(cè)試套件的最新結(jié)果。截至撰寫本文時(shí),已順利通過(guò)了92.2%的測(cè)試。

閱讀英文原文:React Fiber: A Closer Look at the New Engine of React

超強(qiáng)干貨來(lái)襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生

總結(jié)

以上是生活随笔為你收集整理的深入了解React新引擎:React Fiber的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。