JavaScript框架--邁向2023年

前端小智發表於2023-03-16
本文首發於微信公眾號:大遷世界, 我的微信:qq449245884,我會第一時間和你分享前端行業趨勢,學習途徑等等。
更多開源作品請看 GitHub https://github.com/qq449245884/xiaozhi ,包含一線大廠面試完整考點、資料以及我的系列文章。

窺視未來的奇妙之處在於,道路永遠不會完全清晰。我們可以看看趨勢,看看創新,並嘗試制定一個路線。更好的是,我們可以成為這些創新的一部分,引導方向。但沒有什麼是確定的。

2022 年釋出了很多大型版本,推動了 Web 開發的發展。我們看到了 AstroSveltekit1.0 版本。SolidStartQwik 進入了 Beta 版本。React 18的釋出增加了對流媒體的支援,並在NextRemix中得到應用,同時也為React伺服器元件和Next 13應用目錄提供了動力。我們不能忽略 TypeScript 對我們設計框架解決方案的影響。從 tRPC 和 Tanstack Router 到有意見的 Next.js 元框架 create-t3-app

我們如何走到今天

image.png

他們說,"專注於伺服器"。他們說:"解決單頁應用程式的權衡問題"。這並不是什麼新鮮事,但是人們常常不理解的是,這並不是萬靈藥。

伺服器端渲染允許我們更快地透過更早地獲取資料來呈現頁面(通常更靠近我們的資料來源),但也有折衷。它會減慢響應時間,並且不會幫助減小 JavaScript 包大小。由於現在需要在客戶端渲染之外的程式碼來啟用頁面,因此它通常會增加我們的包大小。

為什麼JavaScript框架中的高效水合是如此具有挑戰性

地址:https://dev.to/this-is-learning/why-efficient-hydration-in-javascript-frameworks-is-so-challenging-1ca3

有一些部分的解決方案。我們可以更積極地進行快取,流式處理我們的HTML響應,並且我們可以投資於更小/更快的框架。有一些假解決方案:我們可以認為漸進式增強可以替代水合作用,或者認為放棄客戶端快取可以有意義地改變計算結果。劇透一下:它沒有。

我並不確信每個人都在同一頁面上,但是該領域的許多領先思想實際上對某件事情有共識。這不是一件可以輕視的事情。

我們所處的位置

image.png

單頁應用程式並不是最適合一切的架構。

我的意思是,這不應該令人驚訝,但是在過去的十年中,這需要一些說服力。也許我需要對我所說的單頁應用做一些解釋。我指的是任何典型的 JavaScript 客戶端路由和渲染架構。甚至是那些宣稱支援伺服器渲染的架構。從 React、Next 和 Remix 到 Vue 和 Nuxt,再到 Sveltekit 和 SolidStart。

這是一種自然的演變。建立一個擁有優秀使用者體驗和優秀開發體驗的解決方案,人們希望將它帶到任何地方。即使是它不屬於的地方。那裡是哪裡?好吧,任何關心頁面載入效能以提高底線的地方,任何關心低端裝置和網路的地方,並且可以說任何複雜度不合理的地方。

如果我能總結出 2022 年框架思想領袖之間最大的一致性,那就是路由屬於伺服器。

伺服器端路由的迴歸

地址:https://dev.to/this-is-learning/the-return-of-server-side-routing-b05

我們並不是建議放棄客戶端路由(儘管這是一個選擇)。只是客戶端路由和渲染架構再次面臨著能夠有效使用的範圍的限制。

無論你是在考慮 Marko、Astro 或 Fresh 及其互動性島嶼,還是 Next 和 SolidStart 的伺服器元件,你都會看到伺服器在路由職責上承擔起了重任。在初始載入之後,根據導航渲染下一頁。即使是 Qwik,它本來可以作為最佳化的部分載入應用程式啟動,並且可以擴充套件到完整的 SPA,但它在所有示例和演示中都更喜歡伺服器路由(MPA)。

對2022年的反思

征服水化作用

隨著伺服器渲染成為焦點,水化成為一個重要的話題也就不足為奇了。這是我們為每一個用宣告式JavaScript框架編寫的伺服器渲染的應用程式所付出的代價。或者我們是這樣認為的。

征服JavaScript的水化作用

地址:https://dev.to/this-is-learning/conquering-javascript-hydration-a9f

Qwik和早期Marko 6的可恢復演示都表明,水化很快可能成為過去。

混合巢狀式路由

在 2022 年底之前,我們看到了兩種似乎提供雙方優勢的實驗技術。我們得到了客戶端導航與after-the-fact伺服器渲染相結合的應用程式。Next 13 應用程式目錄看到伺服器元件與巢狀路由相結合。

不使用JavaScript的客戶端路由

地址:https://dev.to/this-is-learning/client-side-routing-without-the-javascript-3k1i

雖然並不是所有人都支援伺服器元件,但很難否認,它們可以在保留 SPA 使用者體驗的同時,比即使是最小的 SPA 框架也能夠實現的所有 JavaScript 都少得多。這是一個證明,另一種大幅減少Hydration的方法是簡單地不傳送程式碼。

到處都是 Signal

image.png

在 2022 年,細粒度的響應性再次流行起來。Vue 社群(正確地)會告訴你,對於他們來說,它從來沒有過時。但直到過去一年,我們才看到它在更廣泛的範圍內並以新的Signal旗幟出現。從 Solid 獨特的細粒度渲染器到 Preact 和 Qwik 使用它來增強他們的虛擬 DOM 解決方案。Marko 6 的編譯器展示瞭如何以 Svelte 類似的方式編譯細粒度的響應性,甚至 Angular 團隊也正在積極考慮新增這些原語。

TypeScript驅動的開發

2022年,TypeScript從一個選項變成了許多元框架CLI的預設選項。

tRPC改變了遊戲規則,但在這一年裡,我們看到JavaScript元框架也在考慮這個問題。從SolidStart的編譯型別安全的RPC到Remix和Next的資料載入機制的改進。

Tanstack Router向我們展示了型別安全路由的模樣,現在已經沒有回頭路了。我們仍然看到這些技術在向外傳播,但收益是如此之大,當這些技術存在時,人們將不會接受以前的開發方式。

轉向 2023 年

複雜性中的爭論

這將在新的一年繼續成為一個主題。你不能在短時間內在一個領域傾注大量創新,而不希望出現什麼問題。Astro 和 Remix 分別迴歸到“這只是 PHP/Rails”的 MPA 和 SPA,雖然它們都缺少更復雜解決方案的重要優勢,但都取得了很大成功。

在Qwik和Marko中花了很多時間用於MPA,在React和Solid的混合路由解決方案中花了很多時間用於Server Components的味道,這裡仍有一些東西需要學習。當自定義語言伺服器外掛是保持伺服器元件的唯一方法,或者你需要成為程式碼中發生序列化邊界的專家時,你就需要開始質疑了。

這些技術是未來的趨勢。但我們需要記住,我們並不是第一個嘗試這樣做的人。後臺技術在2000年代中期就已經嘗試過了,相反,我們基本上都轉向了SPA。我們需要回答 "這次有什麼不同?"

這可能仍然要歸結為回答這個問題:我們是否相信最終可以傳送到瀏覽器的內容應該被髮送,還是伺服器是一個我們應該獨特利用的地方?隨著 MPA 和 SPA 之間的障礙消失,這種劃分很可能會以新的形式出現。

Edge :未曾探索的邊界

在過去的 12 個月中,幾乎所有元框架都支援了邊緣函式。在這一點上,絕大多數元框架都可以部署到各種伺服器less 和邊緣產品中。但是,這並沒有改變我們的開發方式。

我們很快就會指出,資料並不在邊緣上。而我們應該假定,即使在解決邊緣問題的時候,也不是所有的資料都會在邊緣上。

邊緣需要超越單體部署。我們需要弄清楚如何將計算分配到合理的位置。我不是在談論微前端或微服務。而是單體軟體的分散式部署。我不知道這是什麼樣子,但我相信我們會在接下來的 12 個月內找到答案。

其他技術

2023年將最終成為 Web 元件的一年嗎?

就像今年將成為Linux桌面年一樣。隨你怎麼想。

2023年將是WASM的一年嗎?

可能還沒有。但悄悄地,WASM已經發現自己比以前適用於更多的空間。這包括DOM渲染。我們認為我們所理解的開銷並不是我們所想的那樣,最快的WASM Rust庫已經在客戶端渲染上與JavaScript拉開了差距。

image.png

對於很多事情來說,頁面負載仍然是一個令人望而卻步的指標,但你仍然可以用WASM做漸進式增強。因此,如果它對Remix來說足夠好,對你來說可能也足夠好。

2023年,人工智慧/低程式碼會搶走我的工作嗎?

不。但它可能幫助你將程式碼從一個框架遷移到另一個框架。

總結

過去大約 5 年相對沉寂之後,在過去一年左右出現了新的框架。這不是我們停止製作它們的原因,而是時機已經成熟了。

即使大公司也在與系統重置技術(如 Server Components)、新的 Virtual DOM-less 編譯器(如 Vue Vapor)和新的變更機制(如 Signals)調情。

但目前還沒有明確的方向。現有的方法已經到了極限。激進的新方法是不完整的,無論採取什麼形式,都會將複雜性轉嫁給開發者。試圖將其埋藏在元框架中的做法只取得了一定的成功。

開發者對體驗的期望從未如此之高,而對使用者體驗的要求卻沒有減少。因此,無論你是在等待下一次革命,還是生活在流血的邊緣,都要繫好安全帶,因為無論你是否報名,你都會有一個機會。

原文:https://dev.to/this-is-learning/javascript-frameworks-heading-into-2023-nln

程式碼部署後可能存在的BUG沒法實時知道,事後為了解決這些BUG,花了大量的時間進行log 除錯,這邊順便給大家推薦一個好用的BUG監控工具 Fundebug

交流

有夢想,有乾貨,微信搜尋 【大遷世界】 關注這個在凌晨還在刷碗的刷碗智。

本文 GitHub https://github.com/qq449245884/xiaozhi 已收錄,有一線大廠面試完整考點、資料以及我的系列文章。

相關文章