React團隊是技術領域的旋轉門么?
大家好,我卡頌。
繼??Hooks?
??的發(fā)明者「Sebastian Markb?ge」后,又一名??React?
??核心成員「Andrew Clark」加入??Vercel?
??,從事??Next.js?
?相關工作。
?「Andrew」在React?團隊時,主導了React?新的優(yōu)先級算法Lane模型的實現(xiàn)。
加盟Next.js?后,他將以外部參與者的身份繼續(xù)參與React?新特性(比如Server Component)的開發(fā)。
實際上,從React?的發(fā)展策略看,React?成員加盟Vercel?是很自然的結果,這是Next.js?用戶(普通開發(fā)者)、React?成員、Vercel三贏的局面。
整個過程,有點類似政界的旋轉門。
什么是旋轉門
所謂旋轉門,一般指政府人員退休后加入企業(yè),從事政府關系相關的工作。比如,F(xiàn)DA(美國食品藥品管理局)負責藥品審核的專家,可能會在退休后加入藥企工作。
這條隱藏的職業(yè)發(fā)展路徑會對在職的藥品審核專家的審核結果產生影響。畢竟,自己從政府退休后可能想加入這家藥企。
在公共領域,旋轉門會造成公眾利益的受損。但在開源領域,類似的行為是個多贏的策略。
當我們想通過狀態(tài)渲染UI?時,可以使用React?。此時,React的定位是「渲染UI的庫」。
但是,當我們想構建一個完備的應用,單純使用React就不夠了,還缺少:
- 狀態(tài)管理方案
- 數(shù)據(jù)請求方案
- 路由方案
- ......
此時,React的定位變?yōu)椤笜嫿ㄍ陚鋺盟璧脑蚣堋?,開發(fā)者還需在元框架的基礎上填補上述解決方案。
隨著上述解決方案的不斷整合,逐漸出現(xiàn)「以React為元框架,囊括上述解決方案最佳實踐的框架」(比如Gatsby?、Next.js?、Remix)。
當React?與Vue?、Angular競爭時,如何提高自身的裝機量呢?
在最初,個大框架都是憑借自身特點(語法、性能、上手難度...)吸引目標用戶。
隨著前端發(fā)展,大而全的解決方案逐漸成為主流。此時,提高React?裝機量并不是因為開發(fā)者使用了React?,而是因為開發(fā)者使用了Next.js?(或其他類似方案),而Next.js?依賴了React。
所以,React團隊的發(fā)展方向逐漸變?yōu)椋壕劢乖凇镐秩綰I的庫」本身,并為「上層框架面向開發(fā)者的特性」提供底層支持。
在這樣的策略驅動下,我們會發(fā)現(xiàn)一個很奇怪的現(xiàn)象:React18?聲勢浩大的推出了并發(fā)更新,但相關的API?(比如useTransition?、useSyncExternalStore)開發(fā)者卻很少使用。
這是因為這些新出的API并不是面向開發(fā)者的,而是面向上層框架。
正因如此,React?團隊不推薦大家直接用React,而是推薦用各種上層框架。
旋轉門之于React
2020年React圣誕特輯,走進React核心團隊[1]一文中,React?核心成員「Rachel Nabors」談到了讓她失意的地方 —— 可能你忙碌了一年,但你的嘗試并沒有為項目帶來實際的進步(比如在15年,團隊嘗試使用worker提升性能,但以失敗告終)。
雖然小姐姐在文末強調 —— 要有信念,不能因為你沒有新的特性產出,就意味著你沒有提供價值。
但是,如果有更保險的方式能夠獲得穩(wěn)定的產出,為什么不做呢?
這個更保險的方式就是 —— 與業(yè)界緊密合作。
與Vercel?這樣的開源大廠合作,能夠確保React?的新特性能夠通過Next.js?這一平臺快速普及,相比React自己下場教育開發(fā)者接受新特性,前一種方式顯然更高效、成功率更高。
隨著合作的加深,再加上自身努力,Next.js?逐漸成為React領域事實上的第一大框架。
React團隊幾位成員也完成了從「業(yè)界大廠細分領域團隊」,到「獨角獸企業(yè)核心業(yè)務」的轉變。
在這一轉變中:
- Vercel收獲了核心業(yè)務的大佬加盟
- React成員完成了職業(yè)生涯的進步
- Next.js開發(fā)者得到更好的特性
屬實是三贏局面。
后記
在這三贏的過程中,受損的是誰呢?
答案是:包括Nuxt?(或者背后的Vue)在內的競品。
近日,油管10w粉絲的前端網(wǎng)紅「Theo」就在React?文檔倉庫發(fā)起了一個PR[2],號召React?文檔不要再默認推薦CRA?,而是應該將Vite作為構建應用的首選。
這個號召得到眾多網(wǎng)友響應。如果從開發(fā)者角度看,這個提議是中肯的,「Dan」也對此作出回應。
但是,如果從生意的角度看,如果React和Vercel?關系已經如此之深,而Vercel?擁有Vite?的競品Turbopack?,那么CRA?不啟用Vite?的本質原因是不是因為他姓的這個V?,不是Vercel的V呢?
參考資料
[1]走進React核心團隊:https://www.bekk.christmas/post/2020/24/inside-the-react-core-team。
[2]PR:https://github.com/reactjs/reactjs.org/pull/5487。