前言
自上次釋出了《移動APP開發框架盤點》後,時間已經過去了三年, 為什麼突然又寫一篇續集呢?是因為有一個非常有意思的發現。
開源專案其實有一個成熟週期,這個週期大概是三年左右,自React框架在2013年釋出並引爆了前端框架的大潮,這個屬於前端的週期就此開始了。
之後在2015年5月開源的React Native又開啟了屬於Web移動前端的週期,15-16年,18-19年,21-22年正好就是屬於移動前端的三個爆發點。
三年前,在第一個成熟收穫期,我盤點了移動開發框架。在這第二個成熟收穫期,理所當然要來盤點一波。
不過,當我點開github專案的code-frequency時,還是被這個準到嚇人的週期猜想驚呆了,先給你們看一波,剩下的自行驗證。
1、https://github.com/youzan/vant/graphs/code-frequency
2、https://github.com/quasarframework/quasar/graphs/code-frequency
Web移動前端框架列表
專案盤點
再來說第二個比較有意思的發現,停止維護的專案絕大多數是Vue框架專案。
盤點開始的時候我還覺得React框架處於絕對劣勢,到完成時我發現React無論在選擇面還是成熟度上都超過了Vue。
原因我這裡就不分析了,反正大家都有自己的看法。
網頁類框架
網頁類框架就是前端元件框架,這一次雖然有大量專案停止維護,但是也有很多專案堅持了下來,而且還湧現出了一批新專案。
大廠佔了主導,因為這些年大廠在移動開發上的需求,遠高於其它方面。個人專案要堅持確實不易。
本來是想要做一個驗證專案,把所有框架都試用一遍並給出推薦度的。由於進度太慢,還是下一次再發吧。
漸進類框架
這次的重點是漸進類框架,就是所謂多端同構框架(小程式框架)。這幾年國內的重點的各種小程式平臺,所以多端框架的需求很是旺盛。
不過大多數先行者都沒挺過來還是讓我很意外,只有Taro成功了,想想還是有很多讓人唏噓的東西。
在這裡還是先預測一波吧,因為這一類框架最變化最大,最終還是有很多框架要出局的。
漸進類框架是一個過渡性的產品,最終會變成橋接類框架的一部分,所以,與橋接類框架協同才是框架的出路。
橋接類框架
這個賽道基本全是大廠了。
Hippy
騰訊新一代跨端開發框架Hippy
Hippy一看就是淘寶Weex的對標專案,Kpi功能全面壓制。所以官方支援 React 和 Vue 兩種主流前端框架。在Weex2019年實質停更後釋出,要不要這麼卷?
Hippy 2.x 架構主要分成三層,UI(JS) 層 Hippy-React 和 Hippy-Vue 負責驅動 UI 指令生成;中間層 C++ HippyCore 負責抹平平臺差異性和提供高效能模組;渲染層 Android 和 iOS 負責提供終端底層模組、元件,並與佈局引擎通訊。
對Weex慘遭遺棄,我上次就說過:「ReactNative提供工具,Weex提供框架,將平臺差異化遮蔽(Write Once, Run Everywhere)。所以Weex則註定功能相對弱小,並且坑比較多。」Weex最終下馬也是必然的,淘寶又釋出升級版北海,為了實現(Write Once, Run Everywhere),它採用自繪,而且是基於Flutter自繪。
所以Hippy3.x就一如既往的Kpi功能層層加碼,很有騰訊風格。在未來的 3.x 中業務與渲染層中的具體實現可根據使用者實際場景進行切換:業務層上不再侷限於 JS 驅動,還可選擇(如:DSL/Dart/WASM 等)其它語言進行驅動;在渲染層中,渲染引擎除了支援現有原生(Native)渲染之外,還可以選擇其他渲染 Renderer,如 Flutter(Voltron) 渲染。
Kraken 北海
「Kraken 北海」是一款高效能Web渲染引擎。底層基於 Flutter 進行渲染。
Kraken 不限制上層開發者使用的框架,無論你是使用 Vue 、Rax 還是 React 都可以開發 Kraken 應用。
Kraken 的 runtime 通過 JS Engine Binding 的方式提供了一系列 Web 標準的 API 介面,呼叫相應 API 會執行相關邏輯並建立一系列需要傳送給 Dart 層處理的指令。
Kraken 其實就是一個小程式平臺,而且追求全平臺完全一致。我雖然認為各平臺不一致是很自然的事情,但是也表示理解,畢竟別人吹牛有當真的傳統(KFC表示認同)。
Kraken 現在也是一個小號瀏覽器,所以它的主要工作就是摳標準,畢竟它是一款基於 W3C 標準的高效能渲染引擎。
最後,我勸淘寶領導定Kpi要理智些,畢竟Hippy4我還蠻期待的。
Hummer
滴滴出品的超輕量級動態化跨端開發框架,主打輕量和實用。
Hummer 以 JS 引擎為基石,目前已支援 JavaScriptCore、Hermers、QuickJS 等業內知名 JS 引擎(這裡本來還有個V8的,我刪除了,原始碼裡面沒有,Kpi需要)。再配合經過調優的 Yoga 佈局引擎,抹平了兩端檢視佈局差異(效能更佳的自研佈局引擎開發中)。順便提一下,Hippy採用V8(功能更強)自研佈局引擎(效能更佳)。
Hummer 的特點是拋棄了業界其他動態化跨端框架普遍使用的DSL層和VDOM層,因此原生 Hummer 不具備前端開發常用的響應式程式設計的能力,但同時換來的是接近原生開發的體驗和效能。再以原生 Hummer 為基礎,在此之上開發了一套基於MVVM架構的開發框架 —— Tenon,通過 Tenon,可以把使用 Vue/React 編寫的程式碼,轉換成原生 Hummer 的程式碼。
Hummer也是一個小程式平臺,而且超輕量。如果想要無限提升自己APP的能力,可以考慮嵌入Hummer。
總結
Web移動前端框架正在迎來第三個高速發展期,各類框架得到極大繁榮。
個人在具體專案的貢獻已經微乎其微了,創新、架構創新是唯一制勝的手段,這也是我看好React的根本原因。
最後,還是想做點微不足道的探索,現在前端元件庫層出不窮,更換元件庫帶來的代價有點大。想建立一個框架,來實現上次說的元件公約數和公倍數,無縫切換元件庫。理論上支援所有元件庫 ,也能為後來者提供彎道超車的機會。我想大廠可能沒有需求,也不會願意釋出這種框架,畢竟都是平臺部門說了算。
這個庫就是useMobile,當然分為useMobileReact和useMobileVue。下次先發布useMobileReact。等我釋出後,再來填上面表中缺的推薦度。
<全文完>