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