作者 | 徐杰承
審校 | 云昭
提到前端界的三大主流框架,相信每位前端開發者都能夠脫口而出:React、Vue、Angular。在過去的兩年中,React和Vue在圈內的熱度可以說是節節攀升,“究竟誰才是最好的前端框架”這一話題也在國內外的前端圈子中引起了一輪又一輪的熱議。
然而與之不同的是,業界對于Angular的關注度卻在近兩年間卻變得越來越低。在去年由Best of JavaScript官網發布的第六版JavaScript Rising Stars中,Angular的受歡迎程度遠遠落后React和Vue,甚至被后來者Svelte超越,近幾年來首次跌出了前三名的隊列。

圖源:網絡
1、從AngularJS到Angular
提到Angular的興衰,我們始終繞不過的便是其前身AngularJS。AngularJS起初只是Google開發人員Misko Hevery的一個業余項目,Misko Hevery希望能讓web設計師也可以使用html創建出簡單的應用。
隨著AngularJS的落地以及其在Google內部的成功普及,Hevery和他的團隊于2010年將AngularJS作為一個單獨的開源項目進行了發布。
一旦開發人員掌握了AngularJS,便能夠使用其輕松地在移動開發框架Apache Cordova之上構建移動UI工具包Ionic Framework等應用程序。這也使得AngularJS在大量企業中逐漸流行了起來。
然而隨著時間的推移,AngularJS的受歡迎程度卻開始逐漸減弱。尤其是當JavaScript開始引入開發規范要求后,盡管Google大面積采用AngularJS并將其帶到了大型企業應用程序中,但由于AngularJS原始設計上的一些局限性,導致了綁定和模板基礎架構始終存在性能瓶頸。為解決這個問題,Angular的核心團隊希望對AngularJS進行全面的重構,以便將其從此前的設計中解放出來。
整個第二版Angular的重寫,曾在當時的前端圈中引起了一陣不小的轟動。直到2018年,AngularJS框架終于成功重獲新生,全新版本由TypeScript寫成,引入了更好的構建大小、穩定的API和整體更優的性能。自此,AngularJS也正式更名為Angular。
然而,盡管Angular在原有的基礎上實現了頗多改進,但React和Vue在這一時期的進步明顯更加迅速,并在Angular短暫的停滯時期依靠更輕的體量、更好的易用性和更易上手等優勢快速搶占了大量市場,一舉超過了Angular作為頂級JavaScript前端框架的地位。stateofjs曾在一份報告中提到,自2018年起,雖然Angular始終擁有著龐大的用戶群體,且使用率始終保持前列,但從整體的變化趨勢來看,Angular似乎已經在下坡路上愈行愈遠。

圖源:網絡
2、Angular:三大困境
當談到Angular所面臨的困境時,絕大多數人的第一印象都是Angular在企業項目中的采納率較低及其社區活躍度遠不如React與Vue。
造成這一現象的首要原因,也就是Angular最大的問題——框架沉重,使用其構建的應用程序實在太大了。項目文件中不僅會包含JavaScript包,還會存在Angular CLI。無論與React還是Vue對比,Angular應用程序的運行效率都不夠理想。這也導致面向消費者的、追求短平快的互聯網公司通常并不會將Angular作為他們的第一選擇。

圖源:知乎
其次,Angular作為一個以企業級開發為重點的框架,存在更多的內置關系,而且相對而言并不那么重視那些沒有開發基礎的用戶,而是針對有一定開發經驗的開發者。因此Angular的學習曲線會比React和Vue陡峭得多,且由于用戶群體多為企業應用開發者的緣故,也導致了Angular社區的活躍度并沒有React與Vue那么高,這也在無形之間又一次抬高了新手開發者接觸Angular的門檻。
導致Angular逐漸走向沒落的最后一個原因,則一般會被廣大開發者歸結于AngularJS到Angular的那一次斷崖式更新。由于前端技術的飛速發展以及Angular超前的技術選型,使得AngularJS到Angular的升級非常不平滑。并且當Angular團隊還沉浸在對AngularJS的重寫時,React、Vue等競爭對手已悄然開始發力。這也導致了在Angular問世前后的一段時間里,一大批原先AngularJS的使用者轉而投向了React或是Vue的懷抱。
3、Angular 15:新的改進
那么,在這場激烈的零和競爭中,Angular還有機會翻身嗎?
在今年的11月,Angular發布了另一個版本更新 :Angular 15,其承諾為開發人員提供更簡潔易用的功能。從開發者近期對其的評價中不難發現,該更新的確使Angular更加精致、穩定,并擴展了其支持能力,這無疑有望提升開發人員的體驗。
與Angular 14一樣,Angular 15的更新具有獨立的組件API,可提供更高的穩定性。Angular開發人員可以使用這些獨立的組件,并將它們與HttpClient、Angular Elements 等同步。獨立API可用于在一個組件中引導應用程序。
Angular 15還帶有一個路由器獨立API,可以構建多路由應用程序。Angular Bundlers 可以在構建時刪除未使用的功能,從而使代碼文件的大小減少11%。
隨著 Angular v15 的更新,調試 Angular 應用程序得到了極大的簡化,并通過堆棧跟蹤變得更加清晰和直接。Angular 開發人員團隊確保實現一個標準來跟蹤更多的開發代碼,而不是顯示它調用的庫。這一成就使得錯誤消息可以使用一些改進。
此外,Angular的開發團隊還致力于根據Web應用程序的Angular Material Design Components重構其組件。這些組件具有更好的可訪問性,并符合角度材料設計規范。且Angular的開發團隊已棄用多個組件的舊實現,因此開發人員可以選擇舊版導入。
對于大多數開發人員來說,他們最喜歡的框架具有很強的指令可重用性。Angular團隊推出了開發人員經常要求的指令組合API。該API可以提高代碼可用性,并允許開發人員使用指令推送主機元素并優化Angular。如果開發人員使用 Angular 編譯器,這將變得更加容易。
Angular 15還改進了先前版本中引入的穩定的NgOptimisedImage指令,以幫助更有效地加載圖像。如今,這一功能可以在用戶請求時自動上傳正確大小的圖像,從而減少圖像的下載時間。新的版本還消除了用戶輸入圖像尺寸的需要,并將圖像適當地填充到其父容器中。當用戶不知道圖像尺寸時,可以輕松的通過“填充模式”解決這方面的問題。
4、拒絕出局
一位使用過新版本的Angular開發人員表示:以目前的情況來看,Angular15版本可能不會在前端圈內引起大規模的風浪,但它已經足以吸引一批新用戶了。Angular是標準化的,具有內置功能,是一個成熟且完善的框架,已經存在了很長時間。
即使在最近幾年它變得不再像原來那么受歡迎,但我們不得不承認,Angular現在依然擁有非常強大的社區支持和足夠的資源以及堅實的團隊。從Angular 15的更新來看,谷歌開發人員也將在未來繼續致力于它,別忘了Angular正被應用于谷歌內部的數千個應用程序。
一位用戶談到Angular 15新的改進時說:“我喜歡Angular團隊采取的方向——引入一種功能方法并將其轉換為OOP基礎知識之上的功能。對我來說,依賴注入、標記化、抽象事物并以響應式方式構建組件能夠幫助我創建干凈且可擴展的代碼。Angular不斷提供新的東西,它們可以用來提高項目的質量。盡管Angular現在不像React和Vue那樣流行,但我絕對推薦你去嘗試使用它。”
參考鏈接:
??https://www.bbsmax.com/A/Vx5MDLeGJN/??
??https://www.zhihu.com/question/383137600/answer/1252878373??



























