自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

為什么React一年不發(fā)新版了?

開發(fā) 前端
那么,React最近一年為什么不發(fā)版了呢?是因為前端框架領(lǐng)域已經(jīng)沒有新活兒可整了么?React v19是不是遙遙無期了?React之所以一年沒發(fā)版,并不是因為無活可整,而是在完成框架從UI庫到元框架的轉(zhuǎn)型。

大家好,我卡頌。

遙想前幾年,不管是React還是Vue,都在快速迭代版本,以至于很多同學(xué)抱怨「學(xué)不動了」。

而現(xiàn)在,React已經(jīng)一年沒更新穩(wěn)定release了。

上一次發(fā)版還是22年6月

甚至有人認為,這就是「前端已死」最直接的證據(jù):

那么,React最近一年為什么不發(fā)版了呢?是因為前端框架領(lǐng)域已經(jīng)沒有新活兒可整了么?React v19是不是遙遙無期了?

最近一年React活躍嗎?

不想看長文章的同學(xué),這里一句話總結(jié)本文觀點:

React之所以一年沒發(fā)版,并不是因為無活可整,而是在完成框架從UI庫到元框架的轉(zhuǎn)型

首先,我們來看看,最近這一年React的更新活躍度是否降低?

從代碼push量來看,最近一年甚至比release產(chǎn)出較多的前幾年更活躍:

既然更活躍,那React這段時間到底在做什么呢?從「代碼增刪行數(shù)」可以一窺端倪,其中:

  • 「綠色柱狀」代表代碼增加行數(shù)
  • 「紅色柱狀」代表代碼減少行數(shù)
  • 「紅色折線」代表代碼行數(shù)總體趨勢

從代碼量變化[1]來看,React歷史上大體分為四個時期:

  • 13年開源,到17年之前的功能迭代期
  • 持續(xù)到18年的重構(gòu)期(重構(gòu)React Fiber架構(gòu))
  • 18~22年基于Fiber架構(gòu)的新功能迭代期
  • 22年至今的重構(gòu)期

「功能迭代期」與「重構(gòu)期」的區(qū)別在于:

  • 前者主要是在穩(wěn)定的架構(gòu)上迭代新特性
  • 后者一般重構(gòu)底層架構(gòu)的同時,重構(gòu)老特性

「劇烈的代碼量波動」通常發(fā)生在「重構(gòu)期」。比如,在最近的重構(gòu)期內(nèi),PR #25774[2]刪除了3w行代碼。

這個PR主要改變React對于同一個子包,同時擁有.new、.old兩個文件的開發(fā)模式

最近一年React都在干啥?

明確了React最近一年處于重構(gòu)期。那么,究竟是重構(gòu)什么呢?

答案是 —— 將RSC(React Server Component,服務(wù)端組件)接入當前React體系內(nèi)。

有同學(xué)會問:RSC只是個類似SSR的特性,為什么要實現(xiàn)他還涉及重構(gòu)?

這是因為RSC不僅是一個特性,更是React未來主要的發(fā)展方向,其意義不亞于Hooks。所以,圍繞RSC的迭代涉及大量代碼的重構(gòu)。比如:

  • SSR相關(guān)代碼需要修改
  • SSR代碼修改導(dǎo)致Suspense組件代碼修改
  • Suspense的修改又牽扯到useEffect回調(diào)觸發(fā)時機的變化

可以說是牽一發(fā)而動全身了。

RSC為什么重要

為什么RSC對React這么重要?要回答這個問題,得從開源項目的發(fā)展聊起。

開源項目要想獲得成功,一定需要滿足目標用戶(開發(fā)者)的需求。

早期,React作為前端框架,滿足了UI開發(fā)的需求。在此期間,React團隊的迭代方向主要是:

  • 摸索更清晰的開發(fā)范式(發(fā)布了Error Boundray、Suspense、Hooks)
  • 修補代碼(發(fā)布新的Context實現(xiàn))
  • 優(yōu)化開發(fā)體驗(發(fā)布CRA)
  • 底層優(yōu)化(重構(gòu)Fiber架構(gòu))

可以發(fā)現(xiàn),這些迭代內(nèi)容中大部分(除了底層優(yōu)化)都是直接面向普通開發(fā)者的,所以React文檔(文檔也是面向開發(fā)者的)中都有體現(xiàn),開發(fā)者通過文檔能直觀的感受到React不斷迭代。

隨著前端領(lǐng)域的發(fā)展,逐漸涌現(xiàn)出各種業(yè)務(wù)開發(fā)的最佳實踐,比如:

  • 狀態(tài)管理的最佳實踐
  • 路由的最佳實踐
  • SSR的最佳實踐

一些框架開始整合這些最佳實踐(比如Next.js、Remix,或者國內(nèi)的Umijs...)

到了這一時期,開發(fā)者更多是通過使用這些框架間接使用React。

感受到這一變化后,React團隊的發(fā)展方向逐漸變化 —— 從「面向開發(fā)者」的前端框架變?yōu)椤该嫦蛏蠈涌蚣堋沟脑蚣堋?/p>

發(fā)展方向變化最明顯的表現(xiàn)是 —— 文檔中新出的特性普通開發(fā)者很少會用到,比如:

  • useTransition
  • useId
  • useMutableSource

這些特性都是作為元框架,給上層框架(或庫)使用的。

上述特性雖然普通開發(fā)者很少用到,但至少文檔中提及了。但隨著React不斷向元框架方向發(fā)展,即使出了新特性,文檔中已經(jīng)不再提及了。比如:

  • useOptimistic
  • useFormStatus

上述兩個Hook想必大部分同學(xué)都沒聽過。他們是React源碼中切實存在的Hook。但由于是元框架理念下的產(chǎn)物,所以React文檔并未提及。相反,Next.js文檔[3]中可以看到使用介紹。

總結(jié)

React之所以已經(jīng)一年沒有發(fā)布穩(wěn)定release,是因為發(fā)展方向已經(jīng)從「面向開發(fā)者」轉(zhuǎn)型為「面向上層框架」。

在此期間的更新都是面向上層框架,所以開發(fā)者很難感知到React的變化。

但這并不能說明React停止迭代了,也不能據(jù)此認為前端發(fā)展的停滯。

如果一定要定量觀察React最近一年的發(fā)展,距離React v19里程碑,已經(jīng)大體過半了:

參考資料

[1]代碼量變化:https://ossinsight.io/analyze/facebook/react/#commits。

[2]PR #25774:https://github.com/facebook/react/commit/420f0b7fa1fcc609fc7b438c4599d0f76fab4bc0。

[3]Next.js文檔:https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions#experimental-useoptimistic。

責任編輯:姜華 來源: 魔術(shù)師卡頌
相關(guān)推薦

2015-03-09 17:49:40

SDN

2018-01-18 08:53:46

私有云數(shù)據(jù)中心公共云

2018-01-19 10:10:47

私有云

2024-02-05 21:48:25

VueReactHooks

2009-03-13 19:27:08

2015-07-02 11:12:19

2015-10-26 15:45:33

CIBN

2021-01-14 11:39:05

云計算

2020-01-02 14:01:15

互聯(lián)網(wǎng)數(shù)據(jù)5G

2015-12-29 15:17:58

SaaS2B企業(yè)級應(yīng)用軟件互聯(lián)網(wǎng)2B企業(yè)級產(chǎn)品

2020-07-21 09:50:05

Windows操作系統(tǒng)功能

2023-05-09 07:16:06

2015-01-14 12:12:38

小米

2020-09-22 08:06:45

代碼事故

2023-10-11 06:41:25

Intel顯卡雙風扇

2019-11-20 10:39:35

iPhone緩存清理

2012-05-02 14:22:47

微軟諾基亞

2013-05-15 10:29:58

創(chuàng)業(yè)創(chuàng)業(yè)案例創(chuàng)業(yè)故事

2014-09-05 10:02:55

微軟

2018-12-24 09:47:06

點贊
收藏

51CTO技術(shù)棧公眾號