隨着公司業務不斷髮展,移動開發項目愈來愈多,項目任務時間緊,咱們內部開發流程是以項目爲導向,有別於通常公司對產品不斷迭代的作法,但移動端開發人員資源有限,須要在不一樣項目之間作業務場景切換開發,就會常常出現項目完成時間 Delay。面對這樣的問題,咱們該如何去解決呢?如今瞭解到的現狀是每一個業務組都有配備 Web 前端開發人員,那麼是否能把涉及到業務模塊分發給具體業務組 Web 前端開發人員去開發,剝離業務模塊,咱們移動端開發人員則專一於框架的開發或者手機端設備能力開發,好比可支持調用攝像頭,監聽網絡狀態變化,提供地理位置信息等等,有沒有這樣一套適合的解決方案呢,答案固然是有的。咱們引入了可利用 Web 前端能力和移動端操做系統原生能力相結合開發模式,叫作 Hybrid 混合開發。前端
1,目前工做中碰到的問題數據庫
隨着公司業務飛速發展,移動端定製的項目愈來愈多,同時每一個項目的業務邏輯呈現出複雜化和差別化特色,每一個項目都須要提供 Android 版本和 IOS 版本,增長開發成本,開發週期每每又會被拖長。同時近年來前端技術蓬勃發展,HTML5 大行其道,不少主流 APP 廠商都利用 HTML5 前端能力來編寫業務模塊並結合原生設備能力進行混合開發,常見的好比淘寶、京東、微信、攜程等等。雖然目前業務項目多,可是用戶交互體驗要求不高,常見頁面也是列表,表單居多,適合充分利用HTML 5能力,所以引入Hybrid 混合開發模式,這樣只須要 Web 前端開發人員寫一遍前端業務代碼,卻能同時在Android 系統和 IOS 系統中執行。瀏覽器
2,Web APP、Hybrid APP、Native APP 對比前端框架
目前主流應用程序大致分爲三類:Web App、Hybrid App、 Native App,如圖:微信
Web APP網絡
Web App 指採用Html5 語言寫出的 App,不須要下載安裝。相似於如今所說的輕應用。生存在瀏覽器中的應用,基本上能夠說是觸屏版的網頁應用。app
優勢框架
(1)開發成本低,更新快
(2)更新無需通知用戶,不須要手動升級
(3)可以跨多個平臺和終端工具
缺點:性能
(1)臨時性的入口
(2)沒法獲取系統級別的通知,提醒,動效等等
(3)用戶留存率低
(4)設計受限制諸多
(5)體驗較差
Hybrid App
Hybrid App 從外觀上來看是一個Native App ,實則只有一個UIWebView,裏面訪問的是一個Web App ,如新聞類和視頻類的應用廣泛採起該策略:Native 的框架加上Web 的內容。不一樣於Native App 須要針對不一樣的平臺使用不一樣的開發語言(如使用Objective-C、Swift開發iOS應用,使用Java等開發Android應用),Hybrid App 容許開發者僅使用一套網頁語言代碼(HTML5+CSS+JavaScript),便可開發可以在不一樣平臺上部署的類原生應用 。因爲Hybrid App 結合了Native app良好用戶交互體驗和Web App 跨平臺開發的優點,可以顯著節省移動應用開發的時間和成本,Hybrid App 獲得愈來愈多公司的青睞。
按照網頁語言和程序語言的混合,Hybrid App 一般能夠分爲三種類型:
Hybrid App 也並不是是完美的解決方案。因爲其使用 HTML5,某些依賴於複雜的原生功能或者繁重的過渡動畫的應用會出現卡頓。同時,爲了模擬Native App 的UI和感官,須要投入額外的時間和精力;儘管能夠跨平臺,可是並不能徹底支持全部的設備和操做系統。最後,若是應用的體驗不夠原生化,如一個簡單的網站,則還有被Apple App Store拒絕的風險。
Native App
Native APP 指的是原生程序,通常依託於操做系統,有很強的交互,是一個完整的 App,可拓展性強。須要用戶下載安裝使用。
優勢:
(1)打造完美的用戶體驗,性能穩定
(2)操做速度快,上手流暢
(3)訪問本地資源(通信錄,相冊)
(4)設計出色的動效,轉場,
(5)擁有系統級別的貼心通知或提醒,用戶留存率高
缺點:
(1)分發成本高(不一樣平臺有不一樣的開發語言和界面適配)
(2)維護成本高(例如一款App已更新至V5版本,但仍有用戶在使用V2, V3, V4版本,須要更多的開發人員維護以前的版本)
(3)更新緩慢,根據不一樣平臺,提交–審覈–上線 等等不一樣的流程,須要通過的流程較複雜
三者技術特性
以下圖表中對比了Native App、 Hybrid App、Web App在不一樣方面的表現,能夠根據實際狀況選擇最佳的解決方案。
3,主流 APP Hybrid 應用比例
那麼在實際應用場景中,有哪些選擇了Hybrid app呢?實際上,咱們極可能使用過不少Hybrid app,卻並無意識到它們是借了Native臺子唱戲的Web app。根據Appcelerator的官網,目前單是運行基於它的平臺搭建的Hybrid app的設備就有近2.86億臺。國外常見的有LinkedIn、Yelp、Netflix、Wunderlist ,國內主流的大廠基本也是採用了Hybrid 模式,應該是應用很普遍,同時技術上也是成熟穩定。
4,選擇 Hybrid 混合開發的緣由
Hybrid 開發模式在開發頁面 UI 上有天生的便利,而原生的則若是須要一個比較華麗的界面,就須要花很長的時間去開發。
在業務上,看具體狀況,有些簡單業務在 Web上就能夠處理,而若是涉及到複雜的業務,則能夠用原生來寫。
在基本能力上,原生的強,能夠提供手機端獨有的特性,但 Hybrid 則須要依賴 Javascript 中間層進行轉化獲取設備能力。
對於少界面,重業務的能夠用原生,對於多界面,重效果的,能夠用 Web 方式開發
項目背景介紹
目前在一個項目實行的開發模式就是 Hybrid 混合開發,Web 技術與 Android 原生能力結合開發,Web 技術負責界面開發和相關業務, Android 原生能力則提供手機端特有設備能力,好比調用攝像頭,網絡狀態監聽,數據庫操做等等。但這個項目的特殊性相關業務與咱們提供的 Android 原生插件能力高度耦合,好比爲這個項目提供數據庫插件就是專門定製開發的,對於 Excel 插件的能力也是高度依賴一機一檔相關字段,這跟咱們選型用Hybrid 混合開發模式 的初心是相背離。咱們初心是但願 Web 開發人員只須要專一於業務開發和界面繪製,原生部分則是提供相應的Android 設備能力集便可,每一個插件跟業務是徹底無關,這樣就能夠作到原生開發和Web開發互相解耦,二者之間經過接口隔離便可。
實踐過程當中碰到的問題
不管如何,一機一檔項目是第一個應用 Hybrid 混合開發進行實戰的項目,遇到的問題或者坑都是很正常,積極面對解決,而且不斷進行總結和反思。把以前碰到的問題,簡單羅列總結下:
如何解決
總體來講,爲什麼會選擇 Hybrid 混合開發模式是基於當前業務場景須要,技術是服務於業務發展,業務場景變化致使技術解決方案的選型也須要相應變化。面對以項目導向的開發現狀,不能一昧追求最新最酷的技術,也不能對過期的技術方案過度保守,應該須要對當前業務場景進行判斷,選擇合適的解決方案才最佳的策略,沒有一勞永逸的技術手段,只有時刻變化的業務需求和不斷更新迭代技術方案。經過在具體項目中實戰,面對問題,積極解決問題,也正是在解決問題過程當中,產生新的想法和嘗試,不斷地完善框架能力,使得框架功能愈來愈全,進而更好的服務於業務開發問題,提升業務響應能力,下降開發成本,提高工做效率。