三種開發模式指的是:原生APP,WEBAPP,和混合APP
先簡單的對他們做個簡紹,知道他們分別代表的是什么?
1. 原生APP:
基於本地(操作系統)運行的APP —-Native App;他是專門為特定的手機平台開發程序,他使用與手機系統相同的語言和技術模型,所以在性能和用戶體驗方面能夠更好、更貼切。
拿實際開發來說,就是IOS和Android,對於同一APP他需要兩個開發團隊,分別針對兩種手機系統進行開發,這就是原生APP。
原生APP開發的主要優點:
1)較好的性能和更好的交互體驗
2)能夠更好的調用手機底層,使用手機系統的所有硬件和軟件 API,比如 攝像頭、麥克風、通知推送等等,能充分發揮系統的潛力。
原生APP開發的主要缺點:
1)針對不同的手機平台需要不同的技術開發團隊,這就造成了開發成本較高
2)原生APP開發使用底層操作系統語言,開發周期教長
3)版本更新,沒次需要下載APP進行版本更新
2.Web App
基於瀏覽器運行的App —-WebApp;使用網頁做的應用程序,必選在瀏覽器中使用。
Web App 主要使用網頁技術,即 HTML、JavaScript 和 CSS。
Web App的主要優點:
1)不需要下載安裝app,不需要更新app,每次打開都是最新的版本
2)開發較容易,主要使用網頁技術
3)比較原生App不需要應用商店的審批
Web App的主要缺點:
1)瀏覽器提供的api有限,很多系統硬件api不能使用
2)瀏覽器渲染,性能比不上原生的APP,不適合要求較高的項目開發
3.混合 APP
基於上兩種app發展出來的產物 —-Hybrid App;核心就是原生的殼,里面放了一層網頁。
可以理解成,混合 App 里面隱藏了一個瀏覽器,用戶看到的實際上是這個隱藏瀏覽器渲染出來的網頁。
混合 App 的原生外殼稱為"容器",內部隱藏的瀏覽器,通常使用系統提供的網頁渲染控件(即 WebView 控件),也可以自己內置一個瀏覽器內核。結構上,混合 App 從上到下分成三層:HTML5 網頁層、網頁引擎層(本質上是一個隔離的瀏覽器實例)、容器層。
混合 App 里面的網頁不同於普通網頁,可以調用底層系統所有的 API。奧秘就在於外層容器提供了 API Bridge,充當底層 API 的中介,允許內部的網頁調用底層。
所謂 API Bridge 就是容器在底層接口和網頁之間,建立一座橋梁,讓雙方通信。容器一旦接到網頁的請求,就根據請求去調用底層系統的 API,然后再返回結果給網頁。API Bridge 往往以 JavaScript 語言提供,方便網頁調用,這時又稱為 JSbridge。
不同容器的 API Bridge 是不一樣的。為某個容器寫的網頁,不能放在另一個容器使用,也無法在瀏覽器使用,除非網頁腳本做了兼容處理。
混合 App開發的主要優點:
1)一套代碼可跨平台使用,跨平台開發
2)可以集成網頁和手機系統功能,靈活性高
混合開發的主要缺點:
1)由於存在網頁引擎的中間層,所以性能比較欠缺,不僅不如原生 App,而且由於 WebView 不是全功能瀏覽器,可能比 Web App 都要慢一些
2)由於頁面跨平台,就無法使用只有特定平台提供的功能,導致體驗不如純的原生 App
以上就是三種app開發模式的大致簡紹
說道這里也簡單的簡紹一下最近在印度等地比較流行的PWA
PWA
"漸進式 Web App"(Progressive Web App,縮寫 PWA)
PWA技術是谷歌團隊為大力推廣Web App而做出努力的結果。
Web App 需要打開瀏覽器才能使用,這意味着,用戶必須記住如何導航到它,要么直接輸入網址,要么翻找書簽。這使得進入 Web App,遠不如原生 App 方便,在谷歌看來一下的三點缺陷是制約Web App發展的重要原因:
1)手機首屏無法直接打開WebApp,需要打開瀏覽器才行
2)脫網狀態,Web App不支持斷網鏈接
3)缺乏手機狀態欄和鎖屏時的通知推送能力
從上面需要面對的問題,不難看出PWA的特點:
1)它可以把網站緩存在手機里面,供離線時使用
2)能在手機首屏生成圖標,直接點擊進入
3)有通知推送能力,也不帶有瀏覽器的地址欄和狀態欄
但任存在缺點:
1)PWA 需要瀏覽器訪問一次網站,才能在首屏生成圖標
2)目前 iOS 系統的支持還不夠理想
所以還只是一項探索性質的技術,迄今為止缺乏足夠的成功案例