從2022看2023年前端發展趨勢

維李設論發表於2022-12-31

前言

時光荏苒,回望即將過去的2022年,前端領域在這一年中整體還是保持平穩向前,但對整個IT產業鏈路及網際網路行業來說,變化還是很大的,下面我將簡單分享一下個人對整個行業領域的一些觀點與思考。鄙人才疏學淺,難免管窺蠡測,如有相左,僅代表個人觀點,還望各位大佬包涵。

專注

相信大家也都看到了過去一年的情勢,整個形勢也同樣對IT行業有著很大的衝擊。面對如此巨大的影響與環境,作為前端工程師,我們能做的其實很有限,但私以為我們可以審慎時勢,對整個前端領域發展趨勢的走向做到一個前瞻性的視野。

如果說非要給過去一年頂一個基調的話,個人以為用“專注”這個詞比較合適。所謂“專注”,個人理解是“收據力量,以待來者”之義,降本增效、專注核心相信也會是明年的一個主基調。那麼,基於這樣一個前提下,我們應該反問一下:前端的核心專注點應該是什麼呢?

以鄙人愚見,前端應該專注於前端的特點與擅長。如果以使用者為中心點來對整個IT領域工種進行劃分的話,前端無疑是最貼近使用者的。那麼,個人認為前端的關注點應該落腳到“以使用者為中心,堅持前端核心技術為基石,關注服務與形態的結合”這樣一個基本原則下。下面,我將簡單闡述下個人的一些理解與看法。所謂“形態”,正如上圖所示的那樣,是指提供給使用者的展現形式,包括多端、視覺、互動等的不同;而所謂“服務”,則是對應於不同的形態所能提供的產品解決方案,包括:渲染方式、構建方式、組合方式等。將使用者作為整個前端關注的核心,尋找不同的維度,配合形態,提供不同的服務,例如:可以以與使用者的遠近作為基準,對於不同互動體驗,可以配合提供“雲服務”、“邊服務”、“端服務”等。這些提供形態服務的前提應該是以前端技術為基礎的,對於前端不擅長的領域,比如:計算,個人建議還是以輔助為主,畢竟每個領域都有自己的特定的侷限性,將有限的精力投入到更適合、更擅長的領域,不失為一種上善之策。

突破

在探討了前端應該專注的方向與方式後,那麼對於整個前端領域,我們又應該去做哪些突破呢?

相信大家在做了這麼多年的前端開發後,對前端領域的核心技術難點也有一個大致的認知。這裡,我把整個前端領域的一些涉獵按照層次化的方案進行梳理,大致可以分出:交付層、基建層、容器層、系統層四個層次。其中,交付層主要涉及應用程式碼、業務邏輯、使用者體驗、領域模型等相關的開發,這也是前端工程師入門的基礎的基礎,作為前端開發的基本要求,當然這也相對屬於前端領域的淺水區;再往下一層次,則通常為基建層,這主要包括框架/庫、工程效能、安全兜底、效能穩定等相關的建設,這裡也是絕大多數有一定開發經驗的前端開發最喜歡探索和涉獵的層級,其仍然以前端常見的開發為主,但又比業務交付層更加抽象一些,通常來說,大部分前端工程師都會這一層次去遊走,既不脫離業務,又未涉及底層;再往深處,則通常會來到關於容器執行的層次,這通常包括:瀏覽器核心、執行時環境、標準、協議等相關的深入研究,這也是最不為大多數前端所能觸及的部分,但這確實是前端領域需要攻克的難關,雖然下了功夫見效也不大,但是對於前端天花板的突破,個人認為其實是一個比較重要的層次;最後,對於系統層次,這裡目前並不屬於前端的範疇了,一般來說不會用類js語言去書寫作業系統。因而對於前端工程師來說,突破領域主要在於前三個層次,即:交付層、基建層、容器層,保證交付能力,擴充基建能力,涉獵容器能力,這樣在縱深層次上也會能得到一定的突破。

在覆盤了整個22年的關鍵詞後,下面將按照不同的方向,主義看看過去一年的前端領域具體發展,以及對23年能夠得到哪些啟示與發展。

工程化方向

工程化方向是去年整體更新最多的一個領域,除了前端本身發展過程的歷史背景外,個人認為工程化作為IT領域的一個重要方向,同時也作為與整個技術管理等相互關聯的重要領域,各位巨佬絕對不會放過這麼一個熱門方向的。下面,我將選幾個個人認為比較重要的更新簡要回顧及探討下工程化的過去與23年的展望。

  1. 構建:作為工程化領域最為重要的一個節點,肯定是群雄逐鹿的主戰場。對前端構建而言,目前市場佔有量仍然以Webpack為主,但是隨著對“bundle”和“bundless”方案的探討;以Vite等為主的構建方案,對構建方式也提出了自己的一套理論方案,但bundless的方案需要有一定的前提支撐。目前,Vite等構建方案也在構建方案中佔據了一席之地,同時諸多跨語言構建方案也一直衝擊著工程化的市場。因而,個人認為23年工程化構建領域的混戰仍會持續,但真要替代Webpack作為生產環境的主流方案,目前來看明年還不太容易達到,畢竟整體的生態而言,Webpack還是有很強的體系支撐的。
  2. 模組化:自從誕生了ESM,前端模組化方案逐步從IIFE、UMD、AMD、CommonJS、ESM等諸多模組化方案,逐步收斂到了ESM和CJS之爭,並且這個爭鬥也延伸到了打包器的站隊問題中。模組化,作為前端界的阿基里斯之踵,一直以來困擾著諸多前端開發者,但官方原生支援了之後,前端工程鏈路也都同步進行了轉向。個人認為,短期內還是會存在多模組化共存的現象,但長期看好ESM一統江湖的可能,這也給以天生支援ESM的打包器,諸如:Rollup、Vite等一些底氣和支撐。
  3. Monorepo:作為工程管理方案的一種技術理念,monorepo並不是一種技術方案,而其實是一種技術理念。在前端工程化中的monorepo,則以lerna、pnpm、nx等解決方案為主,同時配合著turbopack推出的turborepo也是monorepo整個倉庫管理方案的大閉環解決思路。相較於multirepo及monolith的方案,雖然monorepo有著共享組合的方便,但是對於許可權體系管理卻有著一定的弊端。個人認為,前端領域的monorepo還需要去尋找一個能夠平衡共享與隔離問題的解決方案,最終才能真正的解決工程鏈路中的體驗問題。
  4. 包管理:前端的包管理,不同於後端的包體系,除了之前明顯的npm地域問題外,還涉及到對應的更新變化問題。雖然前端繁榮發展離不開開源package的層出不窮,但對於整個包體系的管理確實可以借鑑下其他語言的設計思路,既能靈活使用,又能規範可依。

綜上,整個工程化領域在22年發展還是很迅猛的,但還是希望能夠各位巨佬針對核心問題進行突破創新。可以預見,23年仍會是工程化的一年,畢竟拉來其他領域的開發者共建共享,前端才能更有話語權[手動狗頭]。

Node.js方向

Node.js方向相對來說還是主要落腳於前端自己的後端化之路,也是其最適合的地方,這裡最主要的方向仍然是Serverless的前端貢獻。

  1. NoSlate:NoSlate是阿里開源的一款Serverless的解決方案,從排程、儲存、執行時等多個方面進行最佳化自研,提出了一套更加簡潔輕量高效的方案。
  2. Winter:全稱是Web-interoperable Runtime,其本質也是一個V8 Worker,經過標準化後,其基本可以作為FaaS函式執行時標準

綜上,整個Node.js領域的發展相對來說還是在Serverless細分領域的建樹,這其實也是Node.js一個比較好的應用方向,畢竟真正使用Node.js來作為傳統後端開發還是有一定的侷限性的,相信23年仍然會有和雲原生領域更深入的結合。

跨端方向

整個跨端方向大體來說,去年幾乎都不約而同的選擇了基於容器的方案,借鑑雲原生領域相關的理念,也是通解跨端的一種不錯的思路。

  1. Lath:Lath是阿里的一款純前端容器,提供從事件處理等多跨平臺的方案,對於多場景進行容器最佳化。
  2. Tauri:作為Electron的競品,其本身是基於Rust和Webview2進行相關的構建的,雖然不算是一種容器方案,但是對於記憶體+渲染的組合,其還是對Electron的痛點進行了一定程度的改進。

綜上,整個跨端領域相對來說還是專注於“Write Once, Run EveryWhere”的理念,但確實很難真正的做到。個人認為,跨端方向可以專注於某幾種場景的通用,真正的全部通用是沒有意義的,因為相容越多,意味著polyfill也就越多,有時候卻是得不償失的。

智慧化方向

智慧化方向最突出的進展莫過於低程式碼領域的相關發展,本身將低程式碼劃入到智慧化領域確實稍微有些牽強,但低程式碼的自動化實現確實是可以藉助於AI的相關能力的,因而也將其劃入到智慧化方向;除了本身的D2C發展外,最近新出的ChatGPT在前端領域也有一定的發展前景。

  1. D2C:作為前端領域傳統的智慧化細分領域,利用機器視覺自動生成程式碼,關鍵在於對不同模型的最佳化。
  2. 低程式碼:低程式碼領域的規範與約定形成更為重要,阿里開源的LowCodeEngine可以作為低程式碼構建的一個參考,另外與智慧化方向的自動生成其實可能更有研究價值。
  3. ChatGPT:作為22年年底最火的AI場景,對於回答等的薅羊毛行為,想必會很快出臺禁止方案。但是在前端領域,對於程式碼方案等進行相關指導還是有一定的借鑑意義的。

綜上,整個智慧化領域除了傳統的D2C方案外,可以考慮NLP相關發展在前端領域的落地與創新。

互動方向

互動方向應該是目前前端最為神秘的一個方向,充滿了很多未知,個人認為,最主要的在於對新互動方式的探索與場景運用。

  1. 元宇宙:前端作為一種靠近使用者的工種,其本身技術也會提供諸如:XR的形態,在虛擬人物生成等方面,確實還是會有一些研究可能存在。
  2. Web3:前端作為Web領域的重要一環,在第三世代中,肯定也會有重要的運用場景。個人認為,對於區塊鏈相關的上層應用,如DApp等,可能還是有一些發展方向的。

綜上,互動方向應該是23年變化最快的一個領域,應該也是最有可能產生新突破的方向,目前還充滿很多機會與挑戰,有想法的同學可以提前佈局。

中後臺方向

隨著單頁的瓶頸出現,中後臺方向又出現了“分久必合,合久必分”的態勢,不論是微前端還是Islands架構,其都有一種新瓶裝舊酒的感覺。

  1. 微前端:目前通用的微前端方案大都以“類SPA”形式進行建立,其本身在接入其他SPA時有著天然的弊端。因而,個人認為真正意義上的“微前端”還尚未出現,私以為或許考慮借鑑下微服務的容器化思維,來真正的實現“微”的效果。
  2. Islands:Islands架構的本質其實是多種渲染方式的選擇,從MPA到SPA,又從SPA迴歸到MPA。其實,個人認為可以基於場景的不同進行不同的選擇,資源的合理使用來提供最佳的使用者體驗。

綜上,中後臺方向基本還是基於模板的選擇構建,技術的選擇並不一味的向前突進,有時走下復古風格,也是另一種思考和體驗。

視覺化方向

最後,對於視覺化方向,個人認為可以對於不同的特定場景進行底層構建,從而產生更適合特定領域的圖形可視庫。

  1. 領域圖形庫:對於視覺化領域而言,最重要的其實是圖形庫的選擇和開發,但是對於不同層次的視覺化方案,也是構建出基於特定領域的專有圖形庫,解決一類問題,從而有一定的突破和創新。
  2. 3D圖形庫:大部分的圖形庫往往注重與二維圖形庫的建立,對於三維可視/編輯領域,也是有著十分廣闊的場景的。

綜上,視覺化方向可以關注特定領域的底層建設,以及對應於三維圖形庫的突破與開發。

總結

最後,回顧下整個前端領域的發展,可以大致總結如下:

工程體系蓬勃發展,容器跨端各相競逐;

智慧領域多維演化,互動體驗機會叢生;

架構方案和而不同,可檢視形專精特新;

前端聚焦擇善而從,深入突破玉汝於成。

好了,2023年到了,祝大家在新的一年裡,都能夠奮激勃發,在各自領域中都能有所建樹和進步,共勉!

相關文章