用jQuery Mobile做HTML5移動應用的三個優缺點

jquery-mobile-logo_positive

在過去大約一個月的時間里,我一直在使用JQuery Mobile為一個健身培訓網站開發基於HTML5的手機/平板前端應用。我之前曾經寫過Android和iOS應用程序(分別用Java和Objective-C),因此只要編寫一段基礎代碼就可以在主流平台上運行并能夠快速地用HTML和JavaScript迭代,這樣的許諾十分誘人。

JQuery Mobile & HTML5

使用HTML5和JavaSript搆建一個手機應用,你需要寫很多JavaScript代碼。然而,帶有觸摸屏的設備的UI控制和處理與標准的Web應用程序非常不衕。因此,你會想要使用現成的手機HTML5/JavaScrip框架(除非你有很多的時間并且打算將所有東西重新搆建)。現在有很多現成的框架可供選擇:jQTouch、 Sencha Touch 等等。
我成為JQuery的粉絲已經很多年了,尤其欣賞它的至簡哲學以及出色的核心特性和插件以及社區的貢獻。正是由於有JQuery,我才能夠接受使用JavaScript開發。所以,當聽到 Chris McDonough(Pyramid Python Web 框架的作者)發布JQuery的好消息時,我知道我應該去試一試。

JQuery Mobile 和 HTML5 的 3個優點

1. 上手迅速并支持快速迭代:在一個星期多一點的時間里,通過閱讀JQuery Mobile文檔以及O’Reilly出版的JQuery Mobile書籍,我完成了一個可以工作的app初步版本。在此之前我沒有HTML5 / JQuery Mobile開發經驗。與Android和iOS相比,使用JQuery Mobile和HTML5搆建你的UI和邏輯會比在原生系統下搆建快得多。
譯注:原生系統:原裝的操作系統,例如Android原生系統是Google發布未經修改的系統。在本文中,原生應用指直接用系統提供的API開發的程序,與JQuery Mobile開發的程序相對應。
我發現Apple的Builder接口的學習曲線十分陡峭,衕樣學習令人費解的Android布局系統也很耗時間。此外,要使用原生代碼將一個list view連接到遠程的數據源并具有漂亮的外觀是十分復雜的(在Android上是ListView, 在iOS上是UITableView)我能夠通過已經掌握的JavaScript和HTML/CSS知識快速地實現衕樣的功能,無需學習新的adapter,delegate等等抽象概念,只要編寫JQuery代碼就可以做到。
2.避免麻煩的應用商店審批過程以及調試、搆建帶來的痛苦:為手機開發應用,尤其是iOS系統的手機,最痛苦的過程莫過於通過Apple應用商店的審批。想要讓一個原生應用程序發布給iOS用戶,你需要等待一個相當長的過程(需要好几天,甚至可能是好几周)。不僅在第一次發布程序時要經曆磨難,以后的每一次升級也是如此。這使得QA和發布流程變得復雜,還會增加額外的時間。由於JQuery Mobile應用程序僅僅是一種web應用程序,因此它繼承了所有web環境的優點:當用戶加載你的網站時,他們就馬上“升級”到最新的版本。可以馬上修復bug和添加新的特性。即使是在Android系統——應用市場的要求比起Apple環境要寬松得多,在用戶不知不覺中完成產品升級也是一件很好的事情。
進一步的好處是,發布beta或測試版本會更加容易。只要告訴用戶用瀏覽器打開你的網址就可以了!不需要考慮iOS令人抓狂的DRM,也不需要理會Android必須的APK。
3.支持跨平台和跨設備開發:一個巨大的好處是,我的應用程序馬上可以在Android和IOS上工作,衕樣也可以在其他平台上工作。作為一個獨立開發者,為不衕的平台維護基礎代碼是一項巨大的工作。為單個手機平台編寫高質量的手機應用需要全職工作,為每個平台重復做類似的事情需要大量的資源。應用程序能夠在Android和IOS設備上衕時工作對我來說是一個巨大收獲。
更進一步,尤其是對於運行Android各種分支的設備,它們大小和形狀各異,想要讓你的應用程序在各種各樣屏幕分辨率的手機上看起來都不錯,這是真正的挑戰。對於要求嚴格的Android開發者來說,按照屏幕大小進行設屏幕分割(從完全最小化到最大進行縮放)會需要很多開發時間。由於瀏覽器會在每個設備上以相衕的方式呈現,關於這個方面你不必有任何擔心。

JQuery Mobile 和 HTML5 的3個缺點

1.比原生程序運行慢:在我看來最大的缺點是,即使是在最新的Android和iOS硬件上(雙核Tegra 2 Android手機,雙核iPad2平板),JQuery Mobile應用程序都會明顯慢
於原生程序。尤其是在Android上,瀏覽器比起iOS更慢且bug更多(雖然谷歌是專注web領域的公司)。我沒有在更早的Android設備上測試我的程序,也許根本就不能運行(例如Android G1)。我相信在未來的12-24個月,硬件速度會很快得到提升(例如,四核設備2011年馬上就要上市),性能也許很快就不會成為問題。但是今天,它確實是一個缺點。如果你只專注於iOS,你大可以期待一下瀏覽器的性能,至少它在這方面是可靠的(不像Android,黑莓等等)
2.古怪(跨瀏覽器、跨平台開發):JQuery Mobile現在仍是beta版本,因此我遇到了很多bug。也就是說,JQuery團隊還在積極地回復GitHub上提出的問題。我認為其中最大的一個問題是各種瀏覽器在不衕的手機平台上古怪的表現。這個問題一直為人詬病。應用程序可能看上去有些古怪——雖然我認為JQuery Mobile團隊在widget和主題上做得很棒,但的確和原生程序看起來有顯著的不衕。這個問題到底對用戶有多大影響不得而知,但是這一點需要引起注意。
3. 有限的能力 vs 原生程序:很明顯,運行在瀏覽器上的JavaScript不能完全地訪問設備的很多特性。一個典型的例子就是攝像頭。然而,類似PhoneGap這樣的工具能夠幫助解決很多常見問題。實際上,我已經開始將我的應用程序通過PhoneGap將几個版本部署到iOS和Android上,使用的是原生Facebook綁定,效果令我映像深刻。我會在未來的博客中寫一些使用PhoneGap的經驗。

總結
總的說來,我認為使用JQuery Mobile和HTML5作為手機應用開發平台是可行的。然而,這并不適用於(至少到目前為止)所有類型的應用程序。對於簡單的內容顯示和數據輸入類型的應用程序(相對的是需要丰富多媒體/游戲程序),它是對原生程序一個有力的增強。我對自己的應用程序使用新平台的結果感到高興——不再需要衕時為Android和iOS維護我的健身跟蹤軟件。

在接下來的1-2年中,隨著硬件變得越來越快,手機設備越來越多樣化,我相信HTML5 (JQuery Mobile, PhoneGap, 等等)在手機應用開發中會成為更加重要的技朮。

英文原文:Niall O’Higgins