小程式會讓Hybrid App崛起嗎

pakey發表於2022-09-22

隨著 Web 技術和移動裝置的快速發展,Hybrid 技術已經成為一種最主流最常見的方案。一套好的 Hybrid架構方案 能讓 App 既能擁有極致的體驗和效能,同時也能擁有靈活的開發模式、跨平臺能力以及熱更新機制。

首先我們先看看目前市面上常見的一些APP開發技術架構

Native App 開發模式

Native App,原生APP,使用原生(即Android或iOS)開發的APP。應用的效能好是無容置疑的,可以使用系統的所有硬體和軟體 API,比如 GPS、攝像頭、麥克風、加速計、通知推送等等,能充分發揮系統的潛力。

但是也存在些許弊端:

1、原生 App 必須下載安裝才能使用,只要升級版本,就必須重新下載安裝。使用者往往不願意更新版本,廠商被迫不得不長期支援很久以前的舊版本。

2、需要建立不同的開發團隊,大公司一般都有 iOS 和安卓兩個開發團隊。如果出現第三個平臺(例如Windows Phone或者華為鴻蒙 OS),可能就要組建第三個團隊,成本就更高。

3、原生 App 使用底層作業系統的語言,都是很重的編譯型語言,開發和除錯成本相對較高,時間週期長。

4、無法跨平臺:Android和iOS都需要開發各自平臺的版本——開發成本高,還需要經過應用商店稽核,常常會導致兩端發版不一致

相信以上問題對於移動開發者都有共鳴

Web App 開發模式

相信HTML5技術的興起給Web App注入了新的生機。

Web App,一般指的是基於 Web 的應用,基於 瀏覽器執行無需下載安裝,基本上可以說是觸屏版的網頁應用。這類應用基本上是一個網頁或一系列網頁,旨在在移動螢幕上工作。

Web 網站一般分為兩種:

MPA(Multi-page Application)

SPA(Single-page Application)

一般的 Web App 是指 SPA 形式開發的網站。

優點:

開發和維護成本低,可以跨平臺,除錯方便;

前端人員開發的程式碼,可應用於各大主流瀏覽器(特殊情況可以程式碼進行下相容),沒有新的學習成本,而且可以直接在瀏覽器中除錯。

更新最為快速;

由於web app資源是直接部署在伺服器端的,所以只需替換伺服器端檔案,使用者訪問是就已經更新了(當然需要解決一些快取問題)。

缺點:

效能低,使用者體驗差;

由於是直接透過的瀏覽器訪問,所以無法使用原生的API,操作體驗不好。

只能使用 HTML5 的一些特殊 API ,無法呼叫原生 API ,所以很多功能存在無法實現情況。

依賴於網路,頁面訪問速度慢,耗費流量;

功能受限,大量功能無法實現;

Web App每次訪問都必須依賴網路,從服務端載入資源,當網速慢時訪問速度很不理想,特別是在移動端,對網站效能最佳化要求比較高。

臨時性入口,使用者留存率低;

這既是它的優點,也是缺點,優點是無需安裝,確定是用完後有時候很難再找到,或者說很難專門為某個web app留存一個入口,導致使用者很難再次使用。

Hybrid App 開發模式

混合 App 的原生外殼稱為"容器",內部隱藏的瀏覽器,通常使用系統提供的網頁渲染控制元件(即 WebView 控制元件),也可以自己內建一個瀏覽器核心。結構上,混合 App 從上到下分成三層:HTML5 網頁層、網頁引擎層(本質上是一個隔離的瀏覽器例項)、容器層。

Hhybrid App顧名思義就是原生 App 與 Web App 的結合。它的殼是原生 App,但是裡面放的是網頁。 可以理解成,混合 App 裡面隱藏了一個瀏覽器,使用者看到的實際上是這個隱藏瀏覽器渲染出來的網頁。

混合 App 同時具有原生 App 和 Web App的優點,又可以避免它們的一些缺點。具體來說,可以總結為三點。

(1)靈活性

混合 App 的靈活性大,很容易整合多種功能。一方面,混合 App 很容易載入外部的 H5 頁面,實現 App 的外掛結構;另一方面,Web 頁面可以方便地呼叫外部的 Web 服務。

(2)跨平臺

Web 技術是跨平臺的,開發者只寫一次頁面,就能支援多個平臺。也就是說,混合 App 只需要一個團隊就夠了,開發成本較低。

(3)開發方便

Web 頁面的除錯和構建,遠比原生控制元件簡單省時。頁面的更新也容易,只要在伺服器上釋出新版本,觸發容器內更新就可以了。另外,Web 開發人員也比較容易招聘,傳統的前端程式設計師可以承擔開發任務。

現在比較流行的混合方案主要有三種,主要是在UI渲染機制上的不同:

  1. 基於  Native UI 的方案,例如 React-Native、Weex。在賦予 H5 原生API能力的基礎上,進一步透過 JSBridge 將js解析成的虛擬節點樹(Virtual DOM)傳遞到 Native 並使用原生渲染。
  2. 基於  WebView UI 的基礎方案,市面上大部分主流 App 都有采用,例如微信JS-SDK、Cordova,透過 JSBridge 完成 H5 與 Native 的雙向通訊,從而賦予H5一定程度的原生能力。

在此特別強調一下第三種方案——基於 小程式方案,也是透過更加定製化的 JSBridge,並使用雙 WebView 雙執行緒的模式隔離了JS邏輯與UI渲染,形成了特殊的開發模式,加強了 H5 與 Native 混合程度,提高了頁面效能及開發體驗。

小程式在JS-SDK的基礎上,一方面進一步開放和擴充原生的能力給到Web前端呼叫,另一方面,頁面渲染(Webview Render)的UI層和邏輯層,使用了兩個獨立的執行緒。如下圖所示:

小程式執行時本質上是一個處理Web頁面渲染、資料邏輯互動的虛擬機器,這個虛擬機器提供了豐富的原生能力供小程式呼叫(API、元件、AI能力等),極大的擴充了Web應用的能力邊界,尤其是在諸如滾動檢視(scrool-view)、導航(navigator)、圖片預覽(cover-image)等元件的提供,使得前端開發人員在使用現有的web前端技術,就可以開發出接近原生體驗的應用。

技術選型

任何技術方案的選型,其實都應該基於使用場景和現有條件。基於公司現有情況的幾點考慮,在方案一上進一步最佳化,更加適合我們的需求。

  1. 業務功能可以快速迭代、靈活開發並且支援線上熱更新的機制。
  2. 產品的核心能力是需要呼叫系統許可權,因此單純的 H5技術能做的事非常有限,不能滿足需求, 需要透過 Hybrid 技術來強化,例如「Native+小程式」技術框架
  3. 公司業務上,並沒有非常複雜的UI渲染需求,而且公司已經有一套完善的前端框架並且已經非常成熟,因此我們並不強需類似 RN 這樣的方案。

那當你獲得這麼一個「小程式執行時引擎」,你會如何改造你的App?

以往業務部門要釋出一些新的功能的時候,使用者必須要主動更新App,而且任何一個區域性功能的變化升級需要去重新去應用市場再操作一次,成本很高。由於並不是所有的使用者都去更新,造成IT團隊需要花費大力氣去維護多個不同的版本。這種方式造成用巨大的資源浪費和使用者體驗的不便利。

如果用小程式,這個問題會迎刃而解。首先, 小程式可以獨立的去更新,App作為了一個載體,很長的一段時間內,不需要被頻繁更新。 其次,每個小程式可以按照業務具體需要去獨立釋出各自的版本,不同的小程式之間的更新升級彼此獨立、互不干擾。 最後,由於小程式執行的沙箱機制,保證了不論是哪個小程式出現Bug、崩潰等情況,不會拖累應用本身,即便出現嚴重問題,也不過就是把它下線即可。


目前市面上也提供了小程式的通用解決方案, 今天為大家介紹一下——FinClip。它的最大特點,就是能夠讓任何 App 執行小程式。

只需要在你的 App 裡面,引入它的 SDK,就能載入執行外部小程式了。除了 SDK,它還提供一個後臺管理系統,統一管理小程式的上架和下架,以及收集和分析小程式資料。

而且FinClip完全遵循微信小程式的開發標準與規範。也就是說,現有的微信小程式可以不改一行程式碼,直接放進你的 App 裡面,執行效果保持不變,不必額外二次開發和改造,大大節省了人力成本。

不僅如此,FinClip 還支援手機以外的多種終端,包括 Linux、Windows、MacOS、麒麟等作業系統。這意味著,PC 端、車載裝置、智慧電視都能使用小程式了,實現了小程式的“一次開發,到處執行”,同時觸達眾多流量平臺,而不僅僅侷限於微信生態。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70018936/viewspace-2915869/,如需轉載,請註明出處,否則將追究法律責任。

相關文章