React不再是JavaScript框架的無(wú)可爭(zhēng)議冠軍
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
過(guò)去幾年里,前端開發(fā)已悄然進(jìn)入新階段。React 曾是 JavaScript 框架的無(wú)可爭(zhēng)議的冠軍,如今正面臨挑戰(zhàn)。現(xiàn)代瀏覽器功能更強(qiáng)大,開發(fā)者更加挑剔,形勢(shì)即將明朗。 與此同時(shí),各種工具表明,構(gòu)建快速、可維護(hù)、交互式應(yīng)用的方法不止一種。 那么,React 是否正被取代?并非如此。但我們確實(shí)看到了轉(zhuǎn)變——一個(gè)“后 React 時(shí)代”——這并非由 React 的消失定義,而是由其壟斷地位的喪失定義。本文探討了這究竟意味著什么。 React 不再是唯一答案十多年來(lái),React 塑造了我們編寫前端代碼的方式。它以組件化模型、虛擬 DOM 和強(qiáng)大的狀態(tài)生態(tài)系統(tǒng)重新定義了 UI 架構(gòu)。但 React 建立的基礎(chǔ)假設(shè)現(xiàn)在正受到審視。當(dāng)原生 DOM 變得更快、更一致時(shí),我們是否還需要虛擬 DOM?每個(gè)交互都必須依賴hydration和 JavaScript 密集型抽象嗎? 隨著開發(fā)者尋求更輕量、更快的替代方案,這些問(wèn)題正被認(rèn)真提出。React 的“一刀切”主導(dǎo)地位正在讓位于更符合 Web 原生的方法,這些方法擁抱簡(jiǎn)單性。并非 React 不好——而是前端格局已經(jīng)演變。
我們?cè)?jīng)需要用來(lái)修復(fù)瀏覽器不一致性的工具,現(xiàn)在正在解決它們可能造成的問(wèn)題。隨著框架和開發(fā)者重新思考舊模式,前端不再是“默認(rèn) React”。 Remix 的轉(zhuǎn)向預(yù)示著更廣泛的轉(zhuǎn)變當(dāng) Remix v3 在其架構(gòu)的某些部分宣布轉(zhuǎn)向脫離 React時(shí),引發(fā)了新一輪討論。該公告并非對(duì) React 的譴責(zé),而是一種務(wù)實(shí)的步驟,旨在重新思考假設(shè)。Remix 很久以來(lái)一直被視為基于 React 的全??蚣堋@個(gè)標(biāo)簽一直有些誤導(dǎo)性。Remix 團(tuán)隊(duì)首先圍繞 Web 平臺(tái)構(gòu)建,React 更多是作為實(shí)現(xiàn)細(xì)節(jié)而非金科玉律。 他們最近的轉(zhuǎn)變反映了一種更深刻的認(rèn)識(shí):我們并非處處都需要 React。服務(wù)器端渲染、原生 DOM 操作、漸進(jìn)增強(qiáng)——這些都是 Web 平臺(tái)現(xiàn)在相當(dāng)能自行處理的。 Remix 決定依靠這種優(yōu)勢(shì),而不是用抽象密集型模式與之對(duì)抗,這是一個(gè)警鐘。開發(fā)者已厭倦 hydration 開銷、狀態(tài)管理復(fù)雜性和為簡(jiǎn)單任務(wù)過(guò)度工程化。 相反,像 Remix 這樣的框架正回歸基礎(chǔ):HTML 優(yōu)先渲染、通過(guò)標(biāo)準(zhǔn)瀏覽器 API 的聲明式數(shù)據(jù)獲取,以及服務(wù)器優(yōu)先的路由邏輯。這并不意味著 React 被拋棄,而是意味著 React 現(xiàn)在是可選的。這為更模塊化、可組合的方法敞開了大門,其中 React 只是眾多工具之一,而不是所有事物的基石。 HTML 優(yōu)先和原生 DOM 框架的興起React 誕生于瀏覽器不一致、JavaScript 是提供交互式體驗(yàn)的唯一可靠方式的時(shí)期。但現(xiàn)代瀏覽器已成熟。form.submit()、fetch、Web Components 和 View Transitions API 等API意味著,我們無(wú)需每次都依賴組件框架即可構(gòu)建引人入勝的體驗(yàn)。 這就是為什么 HTML 優(yōu)先的框架正在興起。像 Astro、HTMX 和 Enhance 這樣的工具正在顛覆現(xiàn)狀。它們優(yōu)先考慮最小化 JavaScript、服務(wù)器渲染的 HTML 和漸進(jìn)增強(qiáng)。它們沒(méi)有將 DOM 視為需要抽象處理的“骯臟伎倆”,而是將其視為一等公民。交互性僅在需要時(shí)才疊加其上。 例如,Astro 讓你默認(rèn)無(wú)需傳輸任何 JavaScript。HTMX 可以在沒(méi)有客戶端框架的情況下,將你的現(xiàn)有 HTML 轉(zhuǎn)換為響應(yīng)式界面。這些工具更符合當(dāng)今 Web 的性能和可訪問(wèn)性需求。它們并非試圖完全取代 React,而是更高效地解決不同的問(wèn)題?!耙?React,要么什么都沒(méi)有”的時(shí)代已經(jīng)結(jié)束。 React 服務(wù)器組件的賭注React 并未袖手旁觀。它的創(chuàng)造者也看到了這種轉(zhuǎn)變,并推出了自己的反敘事:React 服務(wù)器組件(RSC)。其理念是更智能地在服務(wù)器和客戶端之間拆分應(yīng)用,僅向?yàn)g覽器發(fā)送絕對(duì)必要的內(nèi)容。這承諾了更好的性能、更小的捆綁包、改進(jìn)的開發(fā)者體驗(yàn),以及通過(guò)減少負(fù)載和服務(wù)器壓力可能有助于優(yōu)化云成本。 但 RSC 引發(fā)了自身的分裂。它極大地改變了 React 應(yīng)用的構(gòu)建方式。它破壞了與現(xiàn)有模式、工具甚至心智模型的兼容性。在現(xiàn)有應(yīng)用中采用 RSC 的復(fù)雜性不容小覷。它還使開發(fā)者更緊密地鎖定在 Next.js 等元框架中,這些框架已經(jīng)為 React 添加了抽象層。 一些開發(fā)者覺得 RSC 是一種重新發(fā)明,解決了 React 一開始創(chuàng)造的問(wèn)題。hydration 問(wèn)題?虛擬 DOM 效率低下?這些都是 React 最初推廣的客戶端密集型模式的產(chǎn)物。RSC 旨在糾正這一點(diǎn),但代價(jià)是失去了簡(jiǎn)單性。這種賭注是否會(huì)成功還有待觀察——尤其是當(dāng)其他框架用更少的儀式達(dá)到類似結(jié)果時(shí)。 框架跳出 JSX 的思維定式JSX 曾經(jīng)感覺很神奇。它讓開發(fā)者在 JavaScript 中編寫類似 HTML 的語(yǔ)法,模糊了邏輯和標(biāo)記之間的界限。但這種模糊在某些情況下現(xiàn)在感覺像是一種負(fù)擔(dān)。開發(fā)者正在重新考慮,是否真的有必要將渲染邏輯與有狀態(tài)組件緊密耦合在每個(gè)項(xiàng)目中。 以 SolidJS、Qwik 或 Svelte 為例——每個(gè)都在重新定義組件的編譯、渲染或恢復(fù)方式。Svelte 在構(gòu)建時(shí)進(jìn)行編譯。Qwik 引入了可恢復(fù)性,以實(shí)現(xiàn)近乎即時(shí)的交互性。Solid 完全繞過(guò)虛擬 DOM,實(shí)現(xiàn)細(xì)粒度的響應(yīng)性。 即使是 Lit 和Web Components也迎來(lái)了第二春,由 React 抽象出的平臺(tái)所倡導(dǎo)。而且,讓我們不要忽視原生 DOM API 本身——它們遠(yuǎn)未死亡,正在沒(méi)有 JavaScript 密集型棧的情況下驅(qū)動(dòng)更精簡(jiǎn)、更快的應(yīng)用。 JSX 仍然有擁躉,但工具的單一種族文化正在瓦解。 React 仍是王者嗎?在職位列表、npm 下載和 GitHub 星標(biāo)方面,React 仍然占據(jù)主導(dǎo)地位。其生態(tài)系統(tǒng)成熟;對(duì)于具有復(fù)雜狀態(tài)的大型應(yīng)用,它仍然是一個(gè)穩(wěn)妥的選擇。但它的主導(dǎo)地位不再是絕對(duì)的。我們看到工具、理念和權(quán)衡取舍正在多樣化。 我們見證的并非王權(quán)的更迭,而是去中心化。React 不再是默認(rèn)答案。前端領(lǐng)域正在再次變得多語(yǔ)言——選擇技術(shù)?,F(xiàn)在意味著要問(wèn)你需要什么樣的交互性、哪些約束很重要,以及你喜歡什么樣的開發(fā)者體驗(yàn)。 對(duì)于許多團(tuán)隊(duì)來(lái)說(shuō),React 仍然是合適的工具。但對(duì)于其他人來(lái)說(shuō),回歸更簡(jiǎn)單、更原生的 Web 方法正在帶來(lái)更好的性能、更快的開發(fā)和更低的認(rèn)知開銷。 結(jié)語(yǔ)“后 React”并不意味著 React 已過(guò)時(shí)——它只是意味著我們現(xiàn)在正在超越 React 進(jìn)行思考。這意味著我們承認(rèn) React 的解決方案并不總是理想的,并且替代方案已經(jīng)成熟到足以真正地挑戰(zhàn)它。這是一種思維方式的轉(zhuǎn)變:從框架優(yōu)先轉(zhuǎn)向 Web 優(yōu)先。 這并非 React 的終結(jié),而是更廣泛、更豐富的前端生態(tài)系統(tǒng)的開始。在這個(gè)生態(tài)系統(tǒng)中,開發(fā)者有權(quán)使用適合工作的正確工具——即使那個(gè)工具只是一個(gè)
閱讀原文:原文鏈接 該文章在 2025/7/14 18:50:47 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |