用JQuery Mobile做HTML5移動應(yīng)用的三個優(yōu)缺點(diǎn)
在過去大約一個月的時間里,我一直在使用JQuery Mobile為一個健身培訓(xùn)網(wǎng)站開發(fā)基于HTML5的手機(jī)/平板前端應(yīng)用。我之前曾經(jīng)寫過Android和iOS應(yīng)用程序(分別用Java和 Objective-C),因此只要編寫一段基礎(chǔ)代碼就可以在主流平臺上運(yùn)行并能夠快速地用HTML和JavaScript迭代,這樣的許諾十分誘人。
JQuery Mobile & HTML5
使用HTML5和JavaSript構(gòu)建一個手機(jī)應(yīng)用,你需要寫很多JavaScript代碼。然而,帶有觸摸屏的設(shè)備的UI控制和處理與標(biāo)準(zhǔn)的 Web應(yīng)用程序非常不同。因此,你會想要使用現(xiàn)成的手機(jī)HTML5/JavaScrip框架(除非你有很多的時間并且打算將所有東西重新構(gòu)建)。現(xiàn)在有很多現(xiàn)成的框架可供選擇:jQTouch、 Sencha Touch 等等。
我成為JQuery的粉絲已經(jīng)很多年了,尤其欣賞它的至簡哲學(xué)以及出色的核心特性和插件以及社區(qū)的貢獻(xiàn)。正是由于有JQuery,我才能夠接受使用JavaScript開發(fā)。所以,當(dāng)聽到 Chris McDonough(Pyramid Python Web 框架的作者)發(fā)布JQuery的好消息時,我知道我應(yīng)該去試一試。
JQuery Mobile 和 HTML5 的 3個優(yōu)點(diǎn)
1. 上手迅速并支持快速迭代:在一個星期多一點(diǎn)的時間里,通過閱讀JQuery Mobile文檔以及O’Reilly出版的JQuery Mobile書籍,我完成了一個可以工作的app初步版本。在此之前我沒有HTML5 / JQuery Mobile開發(fā)經(jīng)驗(yàn)。與Android和iOS相比,使用JQuery Mobile和HTML5構(gòu)建你的UI和邏輯會比在原生系統(tǒng)下構(gòu)建快得多。
譯注:原生系統(tǒng):原裝的操作系統(tǒng),例如Android原生系統(tǒng)是Google發(fā)布未經(jīng)修改的系統(tǒng)。在本文中,原生應(yīng)用指直接用系統(tǒng)提供的API開發(fā)的程序,與JQuery Mobile開發(fā)的程序相對應(yīng)。
我發(fā)現(xiàn)Apple的Builder接口的學(xué)習(xí)曲線十分陡峭,同樣學(xué)習(xí)令人費(fèi)解的Android布局系統(tǒng)也很耗時間。此外,要使用原生代碼將一個 list view連接到遠(yuǎn)程的數(shù)據(jù)源并具有漂亮的外觀是十分復(fù)雜的(在Android上是ListView, 在iOS上是UITableView)我能夠通過已經(jīng)掌握的JavaScript和HTML/CSS知識快速地實(shí)現(xiàn)同樣的功能,無需學(xué)習(xí)新的 adapter,delegate等等抽象概念,只要編寫JQuery代碼就可以做到。
2.避免麻煩的應(yīng)用商店審批過程以及調(diào)試、構(gòu)建帶來的痛苦:為手機(jī)開發(fā)應(yīng)用,尤其是iOS系統(tǒng)的手機(jī),最痛苦的過程莫過于通過Apple應(yīng)用商店的審批。想要讓一個原生應(yīng)用程序發(fā)布給iOS用戶,你需要等待一個相當(dāng)長的過程(需要好幾天,甚至可能是好幾周)。不僅在第一次發(fā)布程序時要經(jīng)歷磨難,以后的每一次升級也是如此。這使得QA和發(fā)布流程變得復(fù)雜,還會增加額外的時間。由于JQuery Mobile應(yīng)用程序僅僅是一種web應(yīng)用程序,因此它繼承了所有web環(huán)境的優(yōu)點(diǎn):當(dāng)用戶加載你的網(wǎng)站時,他們就馬上“升級”到最新的版本??梢择R上修復(fù)bug和添加新的特性。即使是在Android系統(tǒng)——應(yīng)用市場的要求比起Apple環(huán)境要寬松得多,在用戶不知不覺中完成產(chǎn)品升級也是一件很好的事情。
進(jìn)一步的好處是,發(fā)布beta或測試版本會更加容易。只要告訴用戶用瀏覽器打開你的網(wǎng)址就可以了!不需要考慮iOS令人抓狂的DRM,也不需要理會Android必須的APK。
3.支持跨平臺和跨設(shè)備開發(fā):一個巨大的好處是,我的應(yīng)用程序馬上可以在Android和IOS上工作,同樣也可以在其他平臺上工作。作為一個獨(dú)立開發(fā)者,為不同的平臺維護(hù)基礎(chǔ)代碼是一項(xiàng)巨大的工作。為單個手機(jī)平臺編寫高質(zhì)量的手機(jī)應(yīng)用需要全職工作,為每個平臺重復(fù)做類似的事情需要大量的資源。應(yīng)用程序能夠在Android和IOS設(shè)備上同時工作對我來說是一個巨大收獲。
更進(jìn)一步,尤其是對于運(yùn)行Android各種分支的設(shè)備,它們大小和形狀各異,想要讓你的應(yīng)用程序在各種各樣屏幕分辨率的手機(jī)上看起來都不錯,這是真正的挑戰(zhàn)。對于要求嚴(yán)格的Android開發(fā)者來說,按照屏幕大小進(jìn)行設(shè)屏幕分割(從完全最小化到最大進(jìn)行縮放)會需要很多開發(fā)時間。由于瀏覽器會在每個設(shè)備上以相同的方式呈現(xiàn),關(guān)于這個方面你不必有任何擔(dān)心。
JQuery Mobile 和 HTML5 的3個缺點(diǎn)
1.比原生程序運(yùn)行慢:在我看來最大的缺點(diǎn)是,即使是在最新的Android和iOS硬件上(雙核Tegra 2 Android手機(jī),雙核iPad2平板),JQuery Mobile應(yīng)用程序都會明顯慢
于原生程序。尤其是在Android上,瀏覽器比起iOS更慢且bug更多(雖然谷歌是專注web領(lǐng)域的公司)。我沒有在更早的Android設(shè)備上測試我的程序,也許根本就不能運(yùn)行(例如Android G1)。我相信在未來的12-24個月,硬件速度會很快得到提升(例如,四核設(shè)備2011年馬上就要上市),性能也許很快就不會成為問題。但是今天,它確實(shí)是一個缺點(diǎn)。如果你只專注于iOS,你大可以期待一下瀏覽器的性能,至少它在這方面是可靠的(不像Android,黑莓等等)
2.古怪(跨瀏覽器、跨平臺開發(fā)):JQuery Mobile現(xiàn)在仍是beta版本,因此我遇到了很多bug。也就是說,JQuery團(tuán)隊還在積極地回復(fù)GitHub上提出的問題。我認(rèn)為其中最大的一個問題是各種瀏覽器在不同的手機(jī)平臺上古怪的表現(xiàn)。這個問題一直為人詬病。應(yīng)用程序可能看上去有些古怪——雖然我認(rèn)為 JQuery Mobile團(tuán)隊在widget和主題上做得很棒,但的確和原生程序看起來有顯著的不同。這個問題到底對用戶有多大影響不得而知,但是這一點(diǎn)需要引起注意。
3. 有限的能力 vs 原生程序:很明顯,運(yùn)行在瀏覽器上的JavaScript不能完全地訪問設(shè)備的很多特性。一個典型的例子就是攝像頭。然而,類似PhoneGap這樣的工具能夠幫助解決很多常見問題。實(shí)際上,我已經(jīng)開始將我的應(yīng)用程序通過PhoneGap將幾個版本部署到iOS和Android上,使用的是原生 Facebook綁定,效果令我映像深刻。我會在未來的博客中寫一些使用PhoneGap的經(jīng)驗(yàn)。
總結(jié)
總的說來,我認(rèn)為使用JQuery Mobile和HTML5作為手機(jī)應(yīng)用開發(fā)平臺是可行的。然而,這并不適用于(至少到目前為止)所有類型的應(yīng)用程序。對于簡單的內(nèi)容顯示和數(shù)據(jù)輸入類型的應(yīng)用程序(相對的是需要豐富多媒體/游戲程序),它是對原生程序一個有力的增強(qiáng)。我對自己的應(yīng)用程序使用新平臺的結(jié)果感到高興——不再需要同時為 Android和iOS維護(hù)我的健身跟蹤軟件。
在接下來的1-2年中,隨著硬件變得越來越快,手機(jī)設(shè)備越來越多樣化,我相信HTML5 (JQuery Mobile, PhoneGap, 等等)在手機(jī)應(yīng)用開發(fā)中會成為更加重要的技術(shù)。
英文原文:Niall O’Higgins