一個產品經理眼中的PhoneGap Vs. AppCan
原創而關于原生態的開發,個人覺得HTML5中間件或者混合原生的方式肯定是不用做比較的,畢竟原生的東西還是很強大的,很多效果是HTML5無法比擬的,但是請確認你要做的產品是要炫?還是實用?好吧,入正文啦。
記得***次接觸PhoneGap,是在2011年5、6月份左右的時候,當初尋找這類HTML5中間件或者說HTML5平臺的初衷是為了能快速推出iPhone及Android等智能手機客戶端;至于為什么需要這類HTML5中間件呢?我們是出自這樣的考慮:
- 由于公司資源的分配問題,原生態開發組已經肩負太多的項目,等待原生態組團隊明顯不能滿足我們急切要推出智能端的要求;而現有團隊都是做WEB開發的,顯然對于HTML這個團隊是比較熟悉的,而且這樣的學習成本也是相當的小;
- HTML5跨平臺的特性,一次編譯,run Anywhere.只要一套html5程序代碼,經過中間件的編譯就可以在iPhone、Android及Symbian,還有Windows Phone 上運行,明顯這個是開發成本及時間成本上可以大大的節??;
- 用戶體驗性能如何,能否給用戶提供流暢的用戶體驗;
在滿足了這些條件及經過一周時間的選型之后,公司決定選擇了PhoneGap平臺(中間也分析過其他中間件平臺如:Titanium、Sencha Touch等,但都不是很理想),接下來就是苦逼的開發鳥~
由于前期在HTML5平臺的使用上欠缺經驗,所以在前期做選型的時候沒有用很具體的業務邏輯去做性能測試,結果到了開發的中間過程,發現PhoneGap的整體性能太差了,點擊一個事件都要等半天,啟動頁面也很慢,切換頁面也是相當的慢,最終我們的產品連頁面件的切換動作都不敢用…但是已經在研發進程中了,此時再改方案似乎也沒有好的平臺選擇,也無法保證產品進度鳥,最終我們做出了這樣的技術優化:
- 頁面的js庫,采用自己的JS庫,沒有采用Jquery mobile,以加快加載速度;
- 采用本地HTML界面模版方式做數據緩存,以減少數據請求次數;
- 修改了PhoneGap源代碼,優化啟動界面及部分接口,如地圖定位接口;
最終產品如期推出,可是性能方面上只能說是差強人意啊,至于體驗,我想到了目前流行的一句話我想說“我能講臟話嗎?”“不行”“那我沒什么好說啦!!!”
其實當初也大體知道PhoneGap在性能方面上表現差強人意,可是我們是這么期望的,在我們產品的開發過程中,應該會得到改善,而事實證明這個期望讓我們承擔了太多的風險;
之后,我們也試過了采用Sencha來實現,表現也是一般,所以對于HTML5中間件的性能表現,我們都不抱希望了,雖然說對這個方向一直都是看好的,可是一直都沒有很好的中間件能解決這個性能問題;這個狀態一直持續到今年的3月份的一天,在36Kr網站上得知了AppCan這個產品在做內測,所以很快就申請了內測,進行了試用;
一開始我試用的是采用Web模式,將http://www.8000.cn的網址編譯成APK包做測試,發現好像整體啟動速度及性能表現還可以;出于上次的經驗,我再測試了AppCan所謂的Easy模式,隨便搞了新聞類的編譯了一下,感覺這東西好像還不錯哦,效率應該可以挺高的,可是Symbian版本就實在難以接受鳥,下載后一大段時間白屏,然后還要再下載一個AppCan核心插件,最終直接關閉程序,無視Symbian版本;然后便安排了技術人員做深入的了解及實驗,包括從API接口,性能及支持方面進行詳細的研究;
研發團隊經過了2周的時間的代碼實現,出了一個公司產品的Demo版,在經過大多數相關人員的使用過后,感覺性能比PhoneGap實現的確實改進了不少,比如說頁面的切換特效還挺順暢的,一些公共插件及接口都比較全面,如Jabber通訊、二維碼掃描、支付寶等;可是致命的一個問題是:點擊觸發某個事件的時候,還是可以感覺‘頓’一下的等待,讓人有點不爽,最終這個問題也順利得到了解決,原因是onclick事件的響應沒有ontouchstart事件來得快,兩者相差了0.5s這個數量級,實在無語AppCan這樣的重要體驗,都沒有文檔說明。
下面表格是PhoneGap與AppCan綜合對比表:
備注 | PhoneGap | AppCan | 備注 |
整體表現性能 |
|
|
|
多窗口支持與動畫 | 不支持 | 支持多窗口及native平臺自身的窗口間動畫 |
在整體UI上,PhoneGap自始至終只存在一個窗口,也就是所有的網頁都運行在這個窗口當中的,這也就使得用PhoneGap寫出來的應用失去了很多native應用的原生特性。 AppCan采用Window的理念來劃分窗口。每個window獨立存在,可以相互跳轉,并且可以指定一個跳轉時的過渡動畫效果,如此一來,用戶體驗效果就非常接近native應用了,并且不存在影響效率的問題 |
Native UI支持 | 支持,開發者自己打補丁 | 支持并且有系統的NativeUI擴展 |
PhoneGap沒有一套完整的native UI架構,所有UI完全依靠HTML和CSS完成。手機上的webkit存在IFrame不支持height屬性,css樣式不支持z- index,position,overflow等屬性的硬傷,也就是頁面的區域滾動在正常網頁布局下是無法做到的,只能依賴JS或者native UI。 不幸的是PhoneGap把這個問題留給了開發者,開發者只能選擇JS。在頁面滾動上用JS效率是相當低的,尤其在android的中低端手機上表現更為 明顯。 而AppCan則采用html + native的布局方式(開發者同樣寫JS即可做到),很好的解決了這個問題,在頁面滾動的表現上,與native應用沒有任何差別。 |
API接口 |
|
|
|
開發環境 | 無標準的IDE及模擬器,不同平臺的開發要求安裝不同的開發環境 | 一套完整的開發環境,IDE為標準的Eclipe插件,支持智能提醒,自動補齊,代碼自動生成,模擬器為標準的Chrome擴展插件,支持單步調試,Log輸出等 | |
文檔說明 |
|
|
|
開源及是否收費 |
|
|
開源及是否收費問題,一直是很多開發者擔心的問題,怕有一天AppCan就收費了,其實AppCan官方已經承諾會***免費,另外一般國內優秀的產品是不會開源的,而選擇開源可能就證明其在走下坡路鳥; |
技術支持 | 基本上很難得到技術支持的相應,每次郵件都是苦逼的等待 |
|
|
開源及是否收費 | 可以正常上線 | 可以正常上線 |
綜合來看最終還是感謝AppCan這個產品,雖然有些地方還需要完善,但的確做得挺棒的,基本滿足了我們產品研發的需求。PhoneGap作為較早進入國內的HTML5中間件知名度較高,但毛病也不少。希望兩者都能越來越好!