大家好,我是若川。持續組織了8個月源碼共讀活動,感興趣的可以點此加我微信 ruochuan12?參與,每周大家一起學習200行左右的源碼,共同進步。同時極力推薦訂閱我寫的《學習源碼整體架構系列》?包含20余篇源碼文章。歷史面試系列
2022年3月29號,React18
正式版發布。
從v16
開始,React
團隊就在普及并發
的概念。在v18
的迭代過程中(alpha、Beta、RC),也一直在科普并發特性
,所以正式版發布時,已經沒有什么新鮮特性。
本文主要講解v18
發布日志中透露的一些未來發展趨勢。
開發者可能并不會接觸到并發特性
React
對增加API
是很慎重的。從13年誕生至今,觸發更新的方式都是this.setState
。
而引入并發
概念后,光是與并發
相關的API
就有好幾個,比如:
useTransition
useDeferredValue
甚至出現了為并發
兜底的API
(即并發情況下,不使用這些API可能會出bug),比如:
useSyncExternalStore
useInsertionEffect
一下多出這么多API
,還不是像useState
這種不使用不行的API
,況且,并發
這一特性對于多數前端開發者都有些陌生。
你可以代入自己的業務想想,讓開發者上手使用并發特性
有多難。
所以,在未來用v18
開發的應用,「開發者可能并不會接觸到并發特性」。這些特性更可能是由各種庫封裝好的。
比如:startTransition
可以讓用戶在不同視圖間切換的同時,不阻塞用戶輸入。
這一API
很可能會由各種Router
實現,再作為一個配置項開放給開發者。
萬物皆可Suspense
對于React
來說,有兩類瓶頸需要解決:
CPU的瓶頸,如大計算量的操作導致頁面卡頓
IO的瓶頸,如請求服務端數據時的等待時間
其中CPU的瓶頸
通過并發特性
的優先級中斷機制解決。
IO的瓶頸
則交給Suspense
解決。
所以,未來一切與IO
相關的操作,都會收斂到Suspense
這一解決方案內。
從最初的React.lazy
到如今仍在開發中的Server Components
,最終萬物皆可Suspense
。
這其中有些邏輯是很復雜的,比如:
Server Components
新的服務端渲染方案
所以,這些操作不大可能是直接面向開發者的。
這又回到了上一條,這些操作會交由各種庫實現。如果復雜度更高,則會交由基于React
封裝的框架實現,比如Next.js
、Remix
。
這也是為什么React團隊
核心人物Sebastian
會加入Next.js
。
可以說,React
未來的定位是:一個前端底層操作系統,足夠復雜,一般開發者慎用。
而開發者使用的是「基于該操作系統實現的各種上層應用」。
總結
如果說v16
之前各種React Like
庫還能靠體積、性能優勢分走React
部分蛋糕,那未來兩者走的完全是兩條賽道,因為兩者的生態不再兼容。
未來不再會有React全家桶
的概念,桶里的各個部件最終會淪為更大的框架中的一個小模塊。
當前你們業務里是直接使用React
呢,還是使用各種框架(比如Next.js
)?
·················?若川簡介?·················
你好,我是若川,畢業于江西高校。現在是一名前端開發“工程師”。寫有《學習源碼整體架構系列》20余篇,在知乎、掘金收獲超百萬閱讀。
從2014年起,每年都會寫一篇年度總結,已經堅持寫了8年,點擊查看年度總結。
同時,最近組織了源碼共讀活動,幫助3000+前端人學會看源碼。公眾號愿景:幫助5年內前端人走向前列。
掃碼加我微信 ruochuan02、拉你進源碼共讀群
今日話題
略。分享、收藏、點贊、在看我的文章就是對我最大的支持~