H5混合開發手機Web App入門:概念篇

如果你開始學習手機 App 開發,就一定會聽到 H5 這個詞。它是目前的主流開發技術之一,容易上手,開發周期短、成本低、兼容傳統 Web 開發。但是,很少有文章詳細介紹,H5 到底是什麼技術,有什麼原理,跟其他技術的差異在哪裡。

一、H5 的含義

表面上看,手機 App 都是同樣的東西,就是手機上的應用程序,點擊圖標就能運行,但是它們的底層技術不一樣。按照開發技術,App 可以分成三大類。

  • 原生應用(native application,簡稱 native App)
  • Web 應用(web application,簡稱 Web App)
  • 混合應用(hybrid application,簡稱 hybrid App)

這三類 App 的技術模型都不一樣,各有優缺點。企業一般會選擇其中一種作為主要技術棧,構建自己的手機 App。

H5 這個詞,可以理解成就是混合 App 模型,隻不過它特指混合 App 的前端部分。 因為混合 App 的前端就是 HTML5 網頁,所以簡稱 H5。這個詞是國內獨有的,基本上都是前端程序員在用,國外不用這個詞,就直接叫混合 App。

真正理解 H5 開發,需要先搞清楚什麼是原生 App、什麼是 Web App,因為混合 App 是在它們的基礎上誕生的。

二、原生應用

2.1 概念

原生 App 是專門為特定手機平臺開發的應用程序 ,無法在其他平臺運行。一個手機軟件如果要同時支持蘋果手機和安卓手機,就需要為它們各寫一個原生 App。

歷史上,原生 App 最早出現,跟智能手機系統一起誕生。2007年6月 iPhone 誕生,2008年9月安卓誕生,就同時發佈瞭自傢平臺的原生 App 開發方法。

原生 App 使用與手機操作系統相同的語言。iOS 的原生 App 使用 Objective-C 語言或 Swift 語言,安卓使用 Java 語言或 Kotlin 語言。由於跟底層系統的語言和技術模型一致,所以原生 App 的性能和用戶體驗都很好。

2.2 優點

原生 App 的優點主要是兩個:(1)較好的性能和體驗;(2)可以使用系統的所有硬件和軟件 API,比如 GPS、攝像頭、麥克風、加速計、通知推送等等,能充分發揮系統的潛力。

2.3 缺點

原生 App 的缺點主要是成本,每個手機平臺都要建立一個獨立的開發團隊,大公司一般都有 iOS 和安卓兩個開發團隊。如果出現第三個平臺(以前的 Windows Phone,也許將來的華為鴻蒙 OS),就要組建第三個團隊,成本就更高。

第二個缺點是,原生 App 使用底層操作系統的語言,都是很重的編譯型語言,開發和調試成本相對較高,時間周期長。

第三個缺點是,原生 App 必須下載安裝才能使用,隻要升級版本,就必須重新下載安裝。用戶往往不願意更新版本,廠商被迫不得不長期支持很久以前的舊版本。

三、Web 應用

3.1 概念

Web App 是使用網頁做的應用程序,必須在瀏覽器中使用。 比如,你在瀏覽器中收發郵件,就是在使用 Web App。

Web App 主要使用網頁技術,即 HTML、JavaScript 和 CSS。2008年,w3c 組織發佈瞭 HTML 第5版,簡稱 HTML 5,該版本大大增強瞭網頁的功能,使得網頁可以當作應用程序使用,而不僅僅是展示文字和圖片,這就是 Web App 的由來。

3.2 優點和缺點

Web App 的優點是:(1)不需要下載安裝,打開瀏覽器就能使用,而且總是使用最新版本;(2)對於開發者來說,Web App 寫起來比較快,調試容易,不需要應用商店的批準就能發佈。

Web App 的主要缺點有兩個。首先,瀏覽器提供的 API(即 Web API)很有限(目前隻有相機、GPS、電池等少數幾個),大部分系統硬件都不能通過網頁訪問,也無法直接讀取硬盤文件,所以 Web App 無法充分利用平臺的硬件。

第二個缺點是,網頁通過瀏覽器渲染,性能不如原生 App,不適合做性能要求較高的頁面。

3.3 Web App 的劣勢

Web App 需要打開瀏覽器才能使用,這意味著,用戶必須記住如何導航到它,要麼直接輸入網址,要麼翻找書簽。這使得進入 Web App,遠不如原生 App 方便。這點很致命,事實表明,用戶偏好原生 App。

谷歌曾經調查瞭原生 App 和 Web App 各一千個,發現 Web App 可以覆蓋更多的用戶(1100萬 vs 400萬),但是原生 App 的用戶使用時間(188分鐘)遠超 Web App(9分鐘)。

另一項調查發現,用戶87%的時間用在原生 App,13%的時間用在 Web App。由於這個原因,企業很少開發 Web App,都把原生 App 當作首選。

但是,Web App 也不是毫無競爭力。根據調查,普通用戶每月平均使用27個原生 App,但訪問瞭100多個手機網站。這意味著,用戶的 App 使用時間都被頭部 App 占據瞭,小公司的 App 使用頻率非常低,獲客成本極高,最終變成僵屍 App。因此,小公司開發 Web App 更劃算,不僅成本低,而且可以服務更多的用戶,以及更好地宣傳自己(可以被搜索引擎收入)。

3.4 PWA

為瞭推廣 Web App,谷歌公司的 Chrome 瀏覽器團隊做瞭很多努力。他們認為,Web App 足以滿足大多數 App 的需求,但是三大缺陷阻礙它的推廣。

不能從手機的首屏直接進入。

缺乏手機狀態欄和鎖屏時的通知推送能力。

不支持脫機訪問(即斷網也能使用)。

為瞭解決這些問題,Chrome 團隊開發瞭新技術"漸進式 Web App"(Progressive Web App,縮寫 PWA)。它可以把網站緩存在手機裡面,供離線時使用,還能在手機首屏生成圖標,直接點擊進入,並且有通知推送能力,也不帶有瀏覽器的地址欄和狀態欄,跟原生 App 的使用體驗非常接近。

但是,PWA 需要瀏覽器訪問一次網站,才能在首屏生成圖標,並且目前 iOS 系統的支持還不夠理想,所以還隻是一項探索性質的技術,迄今為止缺乏足夠的成功案例。

四、混合應用

4.1 概念

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

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

4.2 API Bridge

混合 App 裡面的網頁不同於普通網頁,可以調用底層系統所有的 API。奧秘就在於外層容器提供瞭 API Bridge,充當底層 API 的中介,允許內部的網頁調用底層。

所謂 API Bridge 就是容器在底層接口和網頁之間,建立一座橋梁,讓雙方通信。容器一旦接到網頁的請求,就根據請求去調用底層系統的 API,然後再返回結果給網頁。API Bridge 往往以 JavaScript 語言提供,方便網頁調用,這時又稱為 JSbridge。

不同容器的 API Bridge 是不一樣的。為某個容器寫的網頁,不能放在另一個容器使用,也無法在瀏覽器使用,除非網頁腳本做瞭兼容處理。

容器提供的 API Bridge 必須跟著平臺更新。比如,iOS 發瞭新版本,有瞭新的硬件 API,容器也必須跟著推出新版的 API Bridge。如果容器沒有跟上,開發者為瞭使用新的硬件,就隻能想辦法自己來寫缺失的 API Bridge。

4.3 優點

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

(1)跨平臺

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

(2)靈活性

混合 App 的靈活性大,很容易集成多種功能。一方面,混合 App 很容易加載外部的 H5 頁面,實現 App 的插件結構;另一方面,Web 頁面可以方便地調用外部的 Web 服務。

(3)開發方便

Web 頁面的調試和構建,遠比原生控件簡單省時。頁面的更新也容易,隻要在服務器上發佈新版本,觸發容器內更新就可以瞭。另外,Web 開發人員也比較容易招聘,傳統的前端程序員可以承擔開發任務。

4.4 缺點

混合 App 的主要缺點是,由於存在網頁引擎的中間層,所以性能比較欠缺,不僅不如原生 App,而且由於 WebView 不是全功能瀏覽器,可能比 Web App 都要慢一些。

另一個缺點是,由於頁面跨平臺,就無法使用隻有特定平臺提供的功能,導致體驗不如純的原生 App。舉例來說,早期的時候,安卓有物理的後退按鈕,iPhone 沒有,頁面設計不得不考慮這一點。

4.5 小程序

最後,再來談談微信小程序。

所謂小程序,可以看作是針對特定容器的 H5 開發。微信本身是一個容器,開放自己的接口(JSbridge),外部開發者使用規定的語法,編寫頁面,容器可以動態加載這些頁面。

小程序對於微信官方的好處是,擴展瞭功能和應用場景,吸引外部開發者加入,繁榮瞭生態。對於外部開發者的好處是,有瞭流量入口,可以直接調用微信的各種功能(比如支付)。

到此這篇關於H5混合開發手機Web App入門:概念篇的文章就介紹到這瞭,更多相關H5開發app入門內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: