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