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

jobbole發表於2012-11-20

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

  JQuery Mobile & HTML5

  使用HTML5和JavaSript構建一個手機應用,你需要寫很多JavaScript程式碼。然而,帶有觸控式螢幕的裝置的UI控制和處理與標準的Web應用程式非常不同。因此,你會想要使用現成的手機HTML5/JavaScrip框架(除非你有很多的時間並且打算將所有東西重新構建)。現在有很多現成的框架可供選擇:jQTouchSencha 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-logo

 

  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,編譯:伯樂線上——唐尤華

相關文章