[TOC]
# Native App、Web App 還是Hybrid App?
## 一、什么是Native App?
Native App即原生應用,即我們一般所稱的客戶端,是針對不同手機系統單獨開發的本地應用,如需使用需要先下載到手機并安裝,下載Native App的最常見方法是訪問應用程序商店,如蘋果的App Store、安卓市場、Google Play等。在技術實現上一般采用針對操作系統的特定語言進行編寫,如:使用Objective-c開發IOS應用,使用Java+Android開發android應用。
Native App的優點:
* 可以在應用商店輕易地找到并且能在手機主屏幕上生成相應的圖標
* 可以利用系統API及平臺特性,訪問手機的提供的功能(GPS,相機等)
* 可訪問本地資源,支持離線工作,節省用戶的流量成本
* 可針對不同平臺提供不同的體驗,針對平臺特性去做用戶體驗優化
* 與系統高度切合,可獲得更快的運行速度和性能,并支持豐富的圖形和動畫。
Native App的缺點:
* 開發成本高,需要針對不同平臺需要不同的技術背景進行開發
* 維護成本高,用戶必須手動下載更新,歷史版本又不能不維護
* 未知的上線時間,需要通過應用商店的審核
Native App最大的優勢就是可以使用操作系統開發商提供的API。這些API可以分為兩大類:低級API和高級API。
低級API:應用程序能直接與觸摸屏或鍵盤進行聯系、渲染圖形、連接至網絡、處理從麥克風收到的音頻、通過揚聲器或麥克風播放聲音,或者接收來自攝像頭的圖像或視頻。應用程序能訪問全球定位系統(GPS)、接收方位信息,當然還可以讀寫固態硬盤上的文件,或者訪問現有和將來會有的其他任何硬件元件。
高級API:提供對個人移動體驗來說很重要的較高級服務,這類服務包括瀏覽Web,管理日歷、聯系人資料和相冊等,當然還包括打電話或收發文本消息的功能。
操作系統提供的另一組重要的API是GUI工具包。每一種移動操作系統都隨帶各自的一組用戶界面組件,比如按鈕、輸入區、滑塊、菜單、菜單欄、對話框及其他。可以使用這些組件的應用程序繼承了該特定移動操作系統的外觀和感覺,通常會帶來非常流暢的用戶體驗。
## 二、什么是Web App?
Web App又叫Web應用,簡單的說就是一個觸屏版的網站。Web應用完全用HTML、JavaScript和CSS等Web技術開發,通過移動設備的瀏覽器來訪問,缺點是這些基于瀏覽器的應用無法調用系統API來實現一些高級功能,也不適合高性能要求的場合。
Web App的優點:
* 開發成本低,使用現有的Web開發技術即可
* 適用范圍廣,覆蓋所有智能手機,跨平臺和終端
* 方便、快捷地部署,無需用戶安裝
* 用戶總能訪問到最新版本,迭代更新容易
* 可被搜索引擎收錄并帶來流量
Web App的缺點:
* 瀏覽體驗短期內還無法超越原生應用
* 不支持離線模式(HTML5將會解決這個問題)
* 消息推送不夠及時
* 調用本地文件系統的能力弱
* 較差的和較慢的性能體驗(大部分需要鏈接互聯網)
* 支持圖形和動畫效果較差
* 不適用于應用商店及沒有靠下載應用盈利機會
* 限制用戶使用功能(比如,相機、GPS等)
移動Web App是一種很有希望的趨勢。為了緊緊抓住這個趨勢,幫助開發者構建客戶端用戶界面,已開發出越來越多的JavaScript工具包,比如Sencha Touch和jQuery Mobile,它們創建的用戶界面在外觀和感覺上與Native App大同小異。兩者都完全在移動設備的瀏覽器里面執行,充分利用了現代移動瀏覽器所提供的最新JavaScript、CSS和HTML5特性。
## 三、什么是Hybrid App?
Hybrid App又叫混合應用,是一種介于Native App、Web App之間的App,**它雖然看上去是一個Native App,但只是一個UI WebView,里面訪問的是一個Web App**。Hybrid App實質是偽造一個瀏覽器的apk/ipa原生程序,并運行了一個Web APP。Hybrid App兼具“Native App良好用戶交互體驗的優勢”和“Web App跨平臺開發的優勢”。它可以使web開發人員可以幾乎零成本的轉型成移動應用開發者,并且相同的代碼只需針對不同平臺進行編譯就能實現在多平臺的分發,而相較于Web App,開發者可以通過包裝好的接口,調用大部分常用的系統API。
Hybrid App的優點:
* 支持多平臺訪問
* 手機功能都可訪問
* 適用于應用商店
* 部分支持離線功能
* Hybrid App的缺點:
* 未知的部署時間
* 用戶體驗不如本地應用
* 性能速度較慢(需鏈接網絡)
* 該技術尚未發展成熟,依然是一門新技術
Hybrid開發方法結合了Native開發和Web技術。借助這種方法,開發者就能使用跨平臺Web技術,開發應用程序的大部分代碼,又可以在需要時直接訪問Native API。App的Native代碼部分使用操作系統的API來創建嵌入式HTML渲染引擎,該引擎在瀏覽器和設備的API之間充當了橋梁。這座橋梁讓Hybrid App得以充分利用現代設備所提供的全部特性。App的Web部分可能是駐留在服務器上的網頁,也可能是一組HTML、JavaScript、CSS和媒體文件,封裝到App代碼中,存儲在設備本地。放置在服務器上的HTML代碼讓開發者不必經歷提交和批準過程,把Web代碼封裝到App里面可以提高性能和可訪問性。
如果企業使用Hybrid開發方法,就能集兩者之所長。一方面,Native讓開發者可以充分利用現代移動設備所提供的全部不同的特性和功能。另一方面,使用Web語言編寫的所有代碼都可以在不同的移動平臺之間共享,使得開發和日常維護過程變得集中式、更簡短、更經濟高效。
Hybrid App(混合模式移動應用)兼具“Native App良好用戶交互體驗的優勢”和“Web App跨平臺開發的優勢”。很多人不知道市場上一些主流移動應用都是基于Hybrid App的方式開發,比如工商銀行、百度搜索、街旁、東方航空等。
Hybrid App通常是基于第三方跨平臺移動應用引擎框架進行開發,在國內開發者中比較知名的有PhoneGap、Titanium和AppCan這些引擎框架一般使用HTML5和Javascript作為編程語言,調用引擎封裝的底層功能如照相機、傳感器、通訊錄、二維碼等。HTML5和Javascript只是作為一種解析語言,真正調用的都是Native App一樣封裝的底層功能,這是和Web App的最大區別和不同。因為使用了瀏覽器技術,所以Hybrid App通常具有跨平臺的特性,并且開發成本和Web App接近,開發效率也遠高于Native App。
很多企業采用Hybrid App技術開發移動應用,一方面是開發簡單,另外一方面可以形成一種開發的標準。企業封裝大量的Native Plugin(原生插件如支付功能插件)供Javascript調用,并且可以在今后的項目中盡可能的復用,從而大幅降低開發時間和成本。Hybrid App的標準化給企業移動應用開發、維護、更新都帶來了極高的便捷性。
## 四、Native App、Web App和Hybrid App的比較

Native開發方法在性能和設備訪問方面很出色,但成本和更新方面有缺點。Web方法更新起來簡單得多,成本較低,也更容易,但是目前功能有限,也無法獲得使用Native API調用所能獲得的那種出色的用戶體驗。Hybrid開發方法提供了折中方案:在許多情況下,它集兩者之所長,如果開發者面向多種操作系統更是如此。


從上面的表格中可以看出,沒有哪一種開發方法總是提供所有的優點。每一種開發方法有天生的局限性,沒有哪一種方法能夠滿足現代移動企業的所有要求、應對復雜情況。選擇一種合適的方法取決于企業的具體要求,可能取決于諸多因素,比如預算、時間表、內部資源、目標市場、所需的應用程序功能、IT基礎設施及其他許多方面。但是有一點很清楚:如今的大多數公司顯然在兩個方面之間作取舍:一是用戶體驗和應用程序功能,另一是開發成本和產品上市時間。問題就變成了選擇一種合適的開發方法,能兼顧企業的要求和其在預算和產品上市時間方面的限制。
>碼字很辛苦,轉載請注明來自標點符的《Native App、Web App 還是Hybrid App?》
- 前言
- 中文字體
- 移動Web適配方案
- !移動Web基礎!
- 詳解適配相關概念
- 移動開發之設計稿
- 移動適配方案(一)
- 移動適配方案(二)
- vw+rem 實現移動端布局
- 移動端適配之雪碧圖(sprite)背景圖片定位
- 適配 iPhoneX
- 前端開發實戰
- 打造自己的前端開發流程(Gulp)
- flexible.js案例講解
- viewport 與 flexible.js解讀
- 圖片與字體
- 踩過的坑
- 瀏覽器默認樣式
- 300ms點擊延遲和點擊穿透
- ios css
- CSS 常見問題
- Ionic v1混合開發
- Native App、Web App 、Hybrid App?
- ionic項目結構
- 混淆加密
- 解決問題
- cordova
- 環境配置
- 打包發布
- 問題
- 移動前端開發優化
- Web開發之抓包
- ===web移動開發資源===
- H5組件框架
- 調試集合
- 簡單h5調試
- whistle
- devtools-pro