APP開發(fā)的三種模式
- Native APP
即原生應(yīng)用,相對于Web APP和Hybrid APP來說喉悴,應(yīng)用的全部功能和界面都是用各平臺操作系統(tǒng)(如Android嗤栓,IOS忘闻,Windows Phone)提供的SDK開發(fā)莉擒,不使用Web相關(guān)技術(shù)來展示頁面和實現(xiàn)功能酿炸。
優(yōu)點:體驗最優(yōu),性能最好涨冀。
缺點:開發(fā)成本高梁沧,無法跨平臺,對應(yīng)用商店依賴較高蝇裤。 - Web APP
所有功能和界面都由web實現(xiàn),然后以各平臺SDK中的瀏覽器組件(如Android中的webView频鉴,IOS中的UIWebView栓辜,Windows Phone中的WebBrowser)為載體,加載頁面垛孔,展示界面藕甩,提供功能(類似瀏覽器)。
優(yōu)點:開發(fā)成本低周荐,維護更新簡單狭莱,可跨平臺
缺點:體驗和性能差,功能限制概作,對網(wǎng)絡(luò)環(huán)境要求較高腋妙。 - Hybrid APP
混合應(yīng)用,結(jié)合了上面兩種模式讯榕,綜合了綜合了Web App的開發(fā)速度和Native App的高性能體驗骤素。復(fù)雜和易變的信息展示頁面可由Web實現(xiàn),追求性能和體驗的功能模塊可由原生實現(xiàn)愚屁。
優(yōu)點:開發(fā)成本較低济竹,可跨平臺,維護更新較容易霎槐。
缺點:體驗一般送浊。
Hybrid APP所需的技術(shù)
- Native技術(shù)
各平臺的相關(guān)開發(fā)技能。(借助第三方框架可不用掌握Native技術(shù)) - Web技術(shù)
大部分為前端的開發(fā)技能丘跌,H5標(biāo)簽袭景,CSS樣式,JS腳本等等碍岔,以及其他一些性能優(yōu)化和模塊化編程的技術(shù)浴讯。 - 交互實現(xiàn)
natvie和web交互的方法比較常用的有兩種,一是約定URL Schema然后通過監(jiān)控瀏覽器組件的請求蔼啦。二是通過JavaScriptCore將native方法注入給window對象榆纽。
流行的第三方框架
許多大公司以及組織,像Facebook和Apache都在極力的發(fā)展和推廣這種跨平臺框架,這些跨平臺框架主要是將原生的功能封裝好后通過規(guī)范的JS接口提供給前端奈籽,從而使團隊或者前端開發(fā)人員無需具備各平臺的開發(fā)技能就能開發(fā)出跨平臺的混合應(yīng)用饥侵。其中比較流行的框架有:
- Cordova/PhoneGap
Cordova是Apache的一個開源項目,基于PhoneGap衣屏。
Cordova的體系架構(gòu)從上往下分為躏升,前端(html,js)狼忱,html 渲染引擎(各平臺的瀏覽器組件)膨疏,cordova plugin。
cordova plugin為cordova重最核心的部分钻弄,擴展了js訪問手機硬件和原生API的接口佃却。
開發(fā)者可自定義cordova plugin擴展自己的原生接口,添加到cordova窘俺。
總體來說cordova即可以簡單的部署到多平臺饲帅,也支持單平臺的深層定制。 - ReactNative
Facebook推出的跨平臺框架瘤泪。 使用js和React就可以開發(fā)app灶泵,React是Facebook自己的js庫。用reactnative開發(fā)的界面會完全轉(zhuǎn)化為native界面对途。部署的時候不用重新編譯赦邻,可以熱加載。而且可以植入原生代碼实檀。
reactnative是通過JavaScriptcore將native中的方法映射到j(luò)s中深纲,沒有使用瀏覽器組件(除低版本IOS),嚴(yán)格意義上來說開發(fā)出來的并不是Hybrid app劲妙。所以湃鹊,開發(fā)時比較依賴reactnative暴露出來的接口,除此之外镣奋,初次學(xué)習(xí)成本比較高币呵,需要學(xué)習(xí)react的使用(一套前端不能復(fù)用到pc)。 - WeX5
國內(nèi)開源免費的開發(fā)工具侨颈。
WeX5的IDE基于Eclipse余赢,提供可視化,組件化哈垢,拖拽式開發(fā)環(huán)境妻柒。
前端采用H5+CSS3+JS標(biāo)準(zhǔn),并且提供了大量面向APP開發(fā)的耘分,可定制的前端組件举塔。組件樣式基于支持移動設(shè)備優(yōu)先绑警,響應(yīng)式設(shè)計的Bootstrap。
頁面代碼部分央渣,使用RequireJS管理頁面模塊计盒,模塊間遵守AMD規(guī)范。
APP開發(fā)部分芽丹,使用原生瀏覽器組件展示頁面北启,使用Cordova插件訪問手機硬件和訪問原生API。 - ionic
ionic是一個用來開發(fā)混合手機應(yīng)用的拔第,開源的咕村,免費的代碼庫∥冒常可以優(yōu)化html培廓、css和js的性能,構(gòu)建高效的應(yīng)用程序春叫,而且還可以用于構(gòu)建Sass和AngularJS的優(yōu)化。(待補充..)
這些框架在帶來便利的同時也帶來一些問題和缺點:
- 擴展泣港、維護暂殖、定制成本,框架提供的界面和功能存在一定的局限性当纱,有時候不能滿足產(chǎn)品的定制和需求呛每,導(dǎo)致設(shè)計圍繞框架轉(zhuǎn),不符合產(chǎn)品的需求坡氯。
- 引入一個大而全的框架意味著帶來許多的累贅晨横,增加APP體積以及工程復(fù)雜度。
- 框架本身的缺陷以及潛在的bug箫柳。
交互設(shè)計
前端與native之間的交互大致可以分為以下幾類
- 通用接口(數(shù)據(jù)傳遞手形,手機硬件訪問,原生API訪問)
- 賬號信息
- 開發(fā)調(diào)試
(此模塊待完善...)