很多開發者在跨入移動應用開發領域都會選擇Hybrid App為切入點,因為它介於web-app、native-app這兩者之間,兼具「Native App良好用戶交互體驗的優勢」和「Web App跨平臺開發的優勢」。這樣的模式可以降低開發門檻,用較少的成本達到跨平臺開發移動應用的目的。
在移動應用開發盛行的今天,HTML5的問世讓更多的人寄予厚望,這也就催生了PhoneGap這類移動應用開發Hybrid框架,它完全採用HTML5的界面布局,而本地能力通過Native橋接為JS函數在HTML5頁面中調用,達到Hybrid App的效果。
然而,Hybrid App的精髓在Hybrid,也就是混合上,既然是混合,就要考慮到混合比例,就像鋼筋混凝土,如果混合比例不當就會讓一個建築搖搖欲墜。
一般,Hybrid App的混合主要包含兩部分,一部分是Native,一部分是Web。但不管是Native還是Web,都具有各自的UI和布局能力、數據交互能力和腳本調用能力等。所以,Hybrid App更是一種開發模式,如何有效混合使用是個很大的技巧。筆者經過多種Hybrid開發框架的使用,進行了一些總結,希望與開發者一起探討和了解Hybrid。
根據混合的程度,Hybrid App通常分為三種類型:Web主體型、多View混合型、單View混合型。
Web主體型:
移動應用的主體是Web View,即主要以網頁語言編寫界面,穿插Native功能的Hybrid App開發類型。appMobi、PhoneGap都屬於Web主體型移動應用中間件。
HTML5作為一個HTML 4.0.1和XHTML 1.0的升級版,基於舊版本有更強大的表現功能,並加入了Local Storage等技術,確實為Web頁面提供了更大的想像空間和更多的可能性。但HTML 5處在目前的發展階段,受到瀏覽器兼容性和手機硬體性能水平的影響,它所能提供的功能與Native仍然有很大差距。
這種方式由於太過偏重於HTML5,用戶體驗性相對比較差,甚至會受困於瀏覽器之爭。
多View混合型:
即Native View和Web View獨立展示,交替出現。AppCan和Rexsee都屬於多View混合型,它們可以在HTML5無法勝任的時候採用Native View來進行補充。這種方式雖然對HTML5做了一定性的彌補,但是一個界面中HTML5可能無法勝任的僅僅是其中一部分,卻要把整個界面全部推翻,重新使用Native來實現,對於開發成本是極高的,所以實際使用中,很多開發者可能因為各種因素,特別是成本上的考慮會對HTML5的弊端進行妥協。這造成多View的混合型框架在實際應用中跟Web主體型並無太大的差異。這也是為什麼有的開發者願意選擇其他框架而不選擇多View混合型框架的原因,它的Native View有如雞肋般的存在,讓開發者無能為力。
單View混合型:
即在同一個View內,同時包括Native View和Web View。互相之間是覆蓋(層疊)的關係。這種模式可以很好的讓Native View和Web View和諧共存,充分發揮Native和HTML5的優勢,最小可以達到控制項級的Native界面交互體驗。烽火星空的ExMobi和Titanium就是具有這種特性的框架,它們可以讓開發者更加靈活的做出選擇,而不需要考慮太多的成本因素。
另外,不管是哪種類型的Hybrid框架,以HTML5為開發主體的做法可能導致的各種瀏覽器兼容性問題以及用戶體驗和界面性能問題,都讓開發者需要思考,Native在Hybrid中的作用以及Native 的使用方式。
在Hybrid App中,Native 的使用方式也有講究,主要包括:純原生程序方式調用、JS橋接類調用和標籤庫插件方式調用。
純原生程序方式調用:
即完全編寫純原生程序來實現Native效果,比如AppCan、PhoneGap等,這種方式雖然可以完全調用原生的所有能力,由於結構化不強,需要開發者獨立編寫不同平臺的原生程序,門檻很高,所以對於大部分開發者是不合適的。
JS橋接類調用:
這種方式通過把Native的能力統一封裝為JS橋接類,通過編寫JS即可繪製原生界面,達到Native效果,但是由於其封閉性和語法的特殊性,很多開發者很難適應這種寫法,不僅JS的輕量級特性沒有很好發揮,還無端增添了開發者的開發難度。就像拿籃球來當足球踢一樣,不僅踢不出足球的靈活,反而降低了活動的趣味性。
所以,JS橋接類一般更適合提供非界面的原生能力,對於繪製界面則顯得有些力不從心。
標籤庫插件方式調用:
標籤庫是指跟HTML5標籤類似一種標籤語法,這種標籤通過Native View方式來解析展示,而不是通過Web View方式展示,這就大大降低了開發者的調用難度,通過編寫簡單標籤即可實現複雜的Native效果,並且這種方式的標籤完全可以擴展,通過插件的方式運行在Hybrid App框架中,對於開發者有更多的靈活選擇,而且很容易模塊化,達到標籤庫的復用和擴展。比如烽火星空的ExMobi就是這樣的方式調用Native界面的,它不僅可以不需要寫原生程序,更是採用了比寫JS還簡單的標籤庫方式來讓開發者調用,即可達到Native效果。
筆者認為,真正的Hybrid App框架並不局限於PhoneGap、Appcan這樣的傳統開發框架那麼簡單,它既不是在HTML5的外表下套個殼,也不是HTML5和Native的各自為政。做為一種開發模式,Hybrid App框架技術也在不斷變革,就像烽火星空的ExMobi那樣具備強大的Native布局能力和HTML5的靈活展現能力,能夠讓Native和HTML5可以友好共存,並以標籤化的方式更方便開發者的隨意調用和擴展。選擇具有強大技術實力的Hybrid App框架對開發者提供的不僅僅是便捷,而是一種先進的開發模式和思維方式。
除此之外,ExMobi框架提供開發上的便捷,還包括對OFFICE文檔的轉換能力、推送的統一處理、數據的壓縮和加密、應用的下載和更新、對不同數據的集成能力和統一的轉換能力以及持續更新的本地能力調用。
而且,在不少CIO看來,Hybrid App框架不僅僅是提供開發上的能力,它只是整體的企業移動戰略中的一部分,應用的管理、設備的管理、應用不同層面的安全需要以及靈活的部署模式也都是企業移動戰略中的核心部分,如果開發者全部自己實現將是很大的工作量,所以選擇一個平臺型的Hybrid App框架是很有必要的。烽火星空的ExMobi就是這樣的一個基於Hybrid App的移動應用平臺,它從開發(IDE環境)、集成(IT系統對接、雲服務)、打包(各個作業系統的應用打包)、發布(應用的運行)、管理(日誌管理,更新管理)上提供了一套完整的移動化應用解決方案。所以,建議開發者根據自己的實際情況,選擇合適的Hybrid App框架。