一、概念
App混合開發(fā),顧名思義,是一個(gè)開發(fā)模式,指的是開發(fā)一個(gè)App一部分功能用native構(gòu)建一部分功能用html5構(gòu)建,英文名叫:Hybrid App。
在幾年前就已經(jīng)出現(xiàn)了App混合開發(fā)模式,但是真正開始流行始于2014年末,到了2016年已經(jīng)很流行了,2017年將是鼎盛的一年,因?yàn)楝F(xiàn)在連銀行app都開始用混合開發(fā)了,比如招行、建行等。
二、優(yōu)缺點(diǎn)
混合開發(fā)最大的優(yōu)點(diǎn)是:節(jié)約成本和時(shí)間,縮短App開發(fā)周期。
最大的缺點(diǎn)我個(gè)人認(rèn)為有兩個(gè):一是性能不是很好,二是兼容性比較差。
但隨著Android 5.0+的普及以及iOS 9.0+的普及,性能缺陷和兼容性問題都在下降,也就是說(shuō)如果哪一天Android最低支持版本從5.0開始,iOS最低支持版本從9.0開始了,那么混合開發(fā)App的缺點(diǎn)就明顯會(huì)下降了,而這一天將在2017年末至2018年初到來(lái)。
三、工具和框架
混合開發(fā)一些開發(fā)工具和框架其實(shí)很早就有了,比如AppCan、PhoneGap(Cordova)等,他們都主張一站式開發(fā),簡(jiǎn)單的說(shuō),一個(gè)純html5的開發(fā)人員就可以開發(fā)和發(fā)布Android和iOS的App了,不需要專門的Android和iOS開發(fā)人員。雖然感覺這樣開發(fā)起來(lái)很快很簡(jiǎn)單,但是遇到問題和特殊需求的時(shí)候,就開始頭疼了,再加上框架本身也存在一定的性能消耗,在Android 5.0和iOS 9.0以下,開發(fā)出來(lái)的App就顯得很雞肋。所以依我的經(jīng)驗(yàn)來(lái)看,并不推薦找?guī)讉€(gè)純html5的開發(fā)人員就開始“干大事”。
四、怎么去做好混合開發(fā)
上面說(shuō)了,找?guī)讉€(gè)純html5的開發(fā)人員就開始做混合開發(fā),這個(gè)是不實(shí)際的。主要是因?yàn)椋?、不是所有的App就用html5來(lái)做就可以滿足需求,有些特殊場(chǎng)景和特殊的頁(yè)面以及高性能頁(yè)面需要用到原生的支持,2、一些復(fù)雜算法/重要信息用html5來(lái)實(shí)現(xiàn)和管理。
綜上,我認(rèn)為以后大部分混合App以后都會(huì)朝著以下方向去努力:
1、努力做到原生部分占20%,html5部分占80%。
2、原生將實(shí)現(xiàn):App主界面框架(可能含啟動(dòng)頁(yè)面)、要求高性能的頁(yè)面(如聊天/視頻通話頁(yè)面)、復(fù)雜算法/重要信息的存儲(chǔ)或通信。
而目前這兩年來(lái)說(shuō)(2017~2018年),大部分App只能做到35%左右的原生以及65%左右的html5。
一個(gè)混合App項(xiàng)目的前端開發(fā)人員的分布大概會(huì)是1:1:2.5,即:
小型項(xiàng)目:1個(gè)Android,1個(gè)iOS,2~3個(gè)html5
中大型項(xiàng)目:2個(gè)Android,2個(gè)iOS,4~6個(gè)html5
五、混合開發(fā)產(chǎn)生影響
1、以后幾年Android和iOS開發(fā)人員需求量將逐漸減小,而html5開發(fā)人員需求量將越來(lái)越大,而從Android或iOS轉(zhuǎn)html5的開發(fā)人員將慢慢越來(lái)越吃香。
2、html發(fā)展進(jìn)程將加快,將越來(lái)越多的html框架和工具出現(xiàn)。
推薦以下常用混合開發(fā)框架
WeX5遵循Apache開源協(xié)議,完全開源免費(fèi),上百個(gè)組件框架,全部開放,可視化的組件框架,開發(fā)者可自定義組件,集成第三方組件,采用MVC設(shè)計(jì)模式,數(shù)據(jù)和視圖分離,頁(yè)面描述和代碼邏輯分離,支持瀏覽器調(diào)試、真機(jī)調(diào)試、原生調(diào)試,等多種調(diào)試模式,開發(fā)者可掌握每一行代碼。
WeX5一直堅(jiān)持采用H5+CSS3+JS標(biāo)準(zhǔn)技術(shù),一次開發(fā),多端任意部署,確保開發(fā)者成果始終通用、不受限制。WeX5的混合應(yīng)用開發(fā)模式能輕松調(diào)用手機(jī)設(shè)備,如相機(jī)、地圖、通訊錄等,讓開發(fā)者輕松應(yīng)對(duì)各類復(fù)雜數(shù)據(jù)應(yīng)用,代碼量減少80%。同時(shí)開發(fā)出的應(yīng)用能夠媲美原生的運(yùn)行體驗(yàn)。
WeX5的可視化開發(fā),堅(jiān)持為開發(fā)者提供良好開發(fā)體驗(yàn),拖拽式頁(yè)面設(shè)計(jì),易學(xué)易用,拖拽組件、設(shè)置屬性即可完成復(fù)雜技術(shù)能力。
[2]APICloud
APICloud是中國(guó)領(lǐng)先的“云端一體”的移動(dòng)應(yīng)用云服務(wù)提供商。 APICloud為開發(fā)者從“云”和“端”兩個(gè)方向提供API,簡(jiǎn)化移動(dòng)應(yīng)用開發(fā)技術(shù),讓移動(dòng)應(yīng)用的開發(fā)周期從一個(gè)月縮短到7天?;贏PICloud提供的“云API”和“端API”,開發(fā)者甚至可以忘記繁雜的服務(wù)端編碼,也可以忘記復(fù)雜的Objective-C和Java,更可以忘記那數(shù)不清的屏幕適配。
APICloud推行“云端一體”的理念,重新定義了移動(dòng)應(yīng)用開發(fā),幫開發(fā)者搞定一切。
[3]MUI ??
MUI是一套前端框架,由DCLOUD公司研發(fā)而成,提供大量H5和js語(yǔ)言組成的組件,大大提高了開發(fā)效率,可以用于開發(fā)web端應(yīng)用、web app等應(yīng)用。
[4]微信小程序開發(fā) ??
微信小程序是一種全新的連接用戶與服務(wù)的方式,它可以在微信內(nèi)被便捷地獲取和傳播,同時(shí)具有出色的使用體驗(yàn)。
[5]phonegap
Phonegap是一款開源的開發(fā)框架,旨在讓開發(fā)者使用[HTML]、[Javascript]、CSS等Web APIs開發(fā)跨平臺(tái)的移動(dòng)應(yīng)用程序。原本由Nitobi公司開發(fā),現(xiàn)在由Adobe擁有。
它需要特定平臺(tái)提供的附加軟件,例如iPhone的IOS [SDK],Android的Android SDK等,也可以和DW5.5及以上版本配套開發(fā)。使用PhoneGap只比為每個(gè)平臺(tái)分別建立應(yīng)用程序好一點(diǎn)點(diǎn),因?yàn)殡m然基本代碼是一樣的,但是你仍然需要為每個(gè)平臺(tái)分別編譯應(yīng)用程序。
[6]AppCan
AppCan是國(guó)內(nèi)Hybrid App混合模式開發(fā)的倡導(dǎo)者,AppCan應(yīng)用引擎支持Hybrid App的開發(fā)和運(yùn)行。并且著重解決了基于HTML5的移動(dòng)應(yīng)用"不流暢"和"體驗(yàn)差"的問題。使用AppCan應(yīng)用引擎提供的Native交互能力,可以讓HTML5開發(fā)的移動(dòng)應(yīng)用基本接近Native App的體驗(yàn)。
與Phonegap支持單一webview使用div為單位開發(fā)移動(dòng)應(yīng)用不同。AppCan支持多窗口機(jī)制,讓開發(fā)者可以像最傳統(tǒng)的網(wǎng)頁(yè)開發(fā)一樣,通過頁(yè)面鏈接的方式靈活的開發(fā)移動(dòng)應(yīng)用?;谶@種機(jī)制,開發(fā)者可以開發(fā)出大型的移動(dòng)應(yīng)用,而不是只能開發(fā)簡(jiǎn)易類型的移動(dòng)應(yīng)用。
AppCan提供強(qiáng)大的設(shè)備調(diào)用能力,電話、短信、相機(jī)、LBS、傳感器、數(shù)據(jù)庫(kù)等常用的手機(jī)功能,開發(fā)者可以通過JS接口調(diào)用,輕松構(gòu)建移動(dòng)應(yīng)用。
[7]CrossApp
CrossApp是一款完全開源、免費(fèi)、跨平臺(tái)的移動(dòng)應(yīng)用開發(fā)引擎,基于最寬松的MIT開源協(xié)議,開發(fā)者根據(jù)自身情況使用CrossApp開發(fā)任何商業(yè)項(xiàng)目,官方會(huì)提供每天8小時(shí)的在線頁(yè)面問答式服務(wù),每個(gè)問題的反饋速度大概在30分鐘左右,回復(fù)率90%。
[8]Cordova
Cordova提供了一組設(shè)備相關(guān)的API,通過這組API,移動(dòng)應(yīng)用能夠以JavaScript訪問原生的設(shè)備功能,如攝像頭、麥克風(fēng)等。
Cordova還提供了一組統(tǒng)一的JavaScript類庫(kù),以及為這些類庫(kù)所用的設(shè)備相關(guān)的原生后臺(tái)代碼。
Cordova支持如下移動(dòng)操作系統(tǒng):iOS, Android,ubuntu phone os, Blackberry, Windows Phone, Palm WebOS, Bada 和 Symbian。
[9]React Native ??
React Native (簡(jiǎn)稱RN)是Facebook于2015年4月開源的跨平臺(tái)移動(dòng)應(yīng)用開發(fā)框架,是Facebook早先開源的UI框架 React 在原生移動(dòng)應(yīng)用平臺(tái)的衍生產(chǎn)物,目前支持iOS和安卓?jī)纱笃脚_(tái)。RN使用Javascript語(yǔ)言,類似于HTML的JSX,以及CSS來(lái)開發(fā)移動(dòng)應(yīng)用,因此熟悉Web前端開發(fā)的技術(shù)人員只需很少的學(xué)習(xí)就可以進(jìn)入移動(dòng)應(yīng)用開發(fā)領(lǐng)域。
React Native使你能夠在Javascript和React的基礎(chǔ)上獲得完全一致的開發(fā)體驗(yàn),構(gòu)建世界一流的原生APP。
(Learn once, write anywhere)
React Native著力于提高多平臺(tái)開發(fā)的開發(fā)效率 —— 僅需學(xué)習(xí)一次,編寫任何平臺(tái)。
[10]ionic
ionic是一個(gè)用來(lái)開發(fā)混合手機(jī)應(yīng)用的,開源的,免費(fèi)的代碼庫(kù)??梢詢?yōu)化html、css和js的性能,構(gòu)建高效的應(yīng)用程序,而且還可以用于構(gòu)建Sass和AngularJS的優(yōu)化。ionic會(huì)是一個(gè)可以信賴的框架。
其它連接資料
微信小程序開發(fā)文檔
AppCan教程
React Native教程
CrossApp教程
Cordova教程
jQuery Mobile教程
注如有新的框架將持續(xù)更新