Angular 重磅回歸,能否重回巔峰?
曾經(jīng) React、Vue、Angular 在前端框架領(lǐng)域三足鼎立,然而時過境遷,如今的排名已經(jīng)發(fā)生了翻天覆地的變化。Angular 被擠出前三,Next.js 異軍突起,成功上位成為前端第二框架,與 React 和 Vue 共同領(lǐng)跑。面對這一局面,Angular 終于“坐不住了”,宣布正在與谷歌內(nèi)部的另一個前端框架 Wiz (暫未開源)進行合并,旨在打造一個更加強大的前端框架。
在谷歌內(nèi)部,Angular 和 Wiz 都擁有龐大的用戶群體,被數(shù)千名工程師和數(shù)千個應用所青睞。Wiz 作為谷歌的內(nèi)部框架,在一些最受歡迎的產(chǎn)品中發(fā)揮著重要作用,如搜索、照片、支付等。在過去的一年里,谷歌一直在積極探索如何將 Angular 與 Wiz 的優(yōu)勢相互融合,以期在性能與開發(fā)體驗上取得雙重突破。
從歷史上看,Angular 和 Wiz 一直服務于不同領(lǐng)域的應用:
- Wiz 專注于性能關(guān)鍵型應用,以谷歌搜索為例,它追求的是快速渲染結(jié)果和較低的交互性。
- Angular 則致力于為高度交互性的應用提供強大支持,它強調(diào)開發(fā)者體驗和復雜用戶界面的快速交付。諸如 Gemini 和 Google Analytics 等應用,便是 Angular 在這一領(lǐng)域所取得的成就的例證。
Wiz 是什么?
數(shù)百萬用戶通過慢速網(wǎng)絡或低端設(shè)備訪問谷歌的大型應用,因此初始加載延遲和 JavaScript 的數(shù)量顯得尤為重要。為了滿足這些要求,Wiz 框架巧妙地采取了幾種優(yōu)化手段。首先,Wiz 以服務端渲染為基礎(chǔ),采用高度優(yōu)化的流式解決方案,確保頁面上的所有內(nèi)容,包括交互式組件,都能迅速且流暢地呈現(xiàn),從而大幅減少了關(guān)鍵初始渲染路徑上的 JavaScript 數(shù)量。
此外,Wiz 還采取了按需加載的策略,只加載實際在頁面上渲染的交互式組件所需的 JavaScript 代碼,有效避免了不必要的 JavaScript 加載,進一步提升了性能。同時,為了確保用戶事件不會因客戶端的加載延遲而丟失,Wiz 在根目錄下引入了一個輕量級的內(nèi)聯(lián)庫,用于監(jiān)聽并回放用戶事件。
這種以服務器端渲染為主導的優(yōu)化方法,不僅為用戶帶來了出色的性能體驗,同時也兼顧了應用的交互性。然而,這種方法確實增加了一定程度的開發(fā)復雜性,尤其是在構(gòu)建高度交互式的應用時。因此,在利用Wiz框架進行開發(fā)時,開發(fā)者需要仔細權(quán)衡性能與復雜性的關(guān)系,以實現(xiàn)最佳的優(yōu)化效果。
融合的需求
近期,這兩大領(lǐng)域正逐漸融合。高性能應用為了向用戶提供更多價值并保持其活躍度,必須加快功能發(fā)布的速度。而與此同時,高度交互式的應用也在不斷增加 JavaScript 的使用量。根據(jù) HTTPArchive 的數(shù)據(jù),過去六年間,桌面端的 JavaScript 使用量增長了超過37%,移動端則增長了超過 36%,這無疑對應用的性能造成了顯著影響。
前 100 萬個網(wǎng)站中 JavaScript 的增加
在融合的需求背景下,開發(fā)者們面臨著一個難題:如何選擇一個既能滿足性能要求又能提供良好開發(fā)體驗的框架? 隨著用例重疊的不斷增加,這一挑戰(zhàn)愈發(fā)突出。為了回應市場對高性能框架和卓越開發(fā)者體驗的雙重需求,Angular 與 Wiz 強強聯(lián)手,將二者的優(yōu)勢完美融合。展望未來,Angular 開發(fā)者將無需再為在開發(fā)體驗與性能之間做取舍而犯難,因為他們將得到兩者的最佳組合。
融合兩大領(lǐng)域
Angular 與 Wiz 的合作關(guān)系,正是他們致力于幫助開發(fā)者自信構(gòu)建 Web 應用的使命的體現(xiàn)。他們根據(jù)開發(fā)者的反饋,積極尋求機會,將他們在 Google 發(fā)現(xiàn)的最佳 Web 開發(fā)實踐進行開源分享。同時,也希望將 Angular 社區(qū)卓越的開發(fā)體驗推廣到整個 Google。
在實踐中,這表現(xiàn)為對每個框架的逐步改進。。大家可能已經(jīng)見證了他們與 Angular 最新變更合作的成果,如可延遲視圖和對部分水化的探索。這些成果深受 Wiz 精細化代碼加載和事件委托庫的啟發(fā)。
此外,Wiz也采納了 Angular 的 Signals 庫,該庫現(xiàn)已成為運行在數(shù)十億設(shè)備上的YouTube用戶界面的強大支撐。通過 Angular Signals,Wiz 實現(xiàn)了更為精細化的 UI 更新,摒棄了那種依賴開發(fā)者逐一記錄UI更新中運行的代碼路徑的繁瑣方式,取得了顯著的性能提升。
展望未來
Angular 團隊已經(jīng)設(shè)定了明確的長期目標:在未來幾年中,他們將逐步、負責任地將Angular與Wiz進行合并。通過 Angular 平臺,他們將穩(wěn)步將 Wiz 的先進功能進行開源,并堅守開放開發(fā)的理念,確保社區(qū)能夠深度參與并影響產(chǎn)品的發(fā)展路線圖,同時根據(jù)此制定自己的計劃。為了廣泛收集社區(qū)對提議功能的真實反饋,他們將采用公開的RFC流程。這一切努力的核心目標,是不斷優(yōu)化和提升 Angular 框架的性能與體驗。
Angular 團隊堅信服務端渲染(SSR)在 Web 平臺上的重要性。他們在打造諸如 Google 搜索和 YouTube 等全球熱門 Web 產(chǎn)品的過程中,已經(jīng)深刻體驗到當SSR正確實施時,它能為最終用戶帶來極為積極的體驗。因此,邀請社區(qū)成員利用這些支持關(guān)鍵應用的核心庫進行創(chuàng)新實踐,與社區(qū)共同探索、共同創(chuàng)新,帶來更加卓越的 Web 性能體驗!
Angular 和 Wiz 的合并能否讓 Angular 重回巔峰?你用過 Angular 嗎?