開發者印象:用PhoneGap開發混搭Web應用

本文摘自 http://www.webapptrend.com/2011/11/71.html

--------------------------------------------------------------------------------------

注:本文作者Matt Raible是一個網絡架構諮詢師,在開源架構上很有研究。

一天下午,我參加了PhoneGap開發者Brian LeRoux在Devoxx的演講,演講內容是混搭Web應用開發中的PhoneGap技術。我曾嘗試過PhoneGap,並且有着非常愉快的體驗。下面是我對Brian LeRoux的演講所作的筆記。

PhoneGap是一個使用HTML、CSS和JavaScript來創建本地應用的框架,源於2008年的一個Hack項目,後在當年秋天,被Nitobi引入其概念開發Android和BlackBerry上的實現。人們真正開始關注PhoneGap是因爲蘋果公司對PhonePag的封殺,原因是所有使用PhoneGap開發的應用都被命名爲PhoneGap。

其後,開發者爲PhoneGap增加了對Symbian和WebOS上的支持,Sony Ericsson也成爲這個項目的貢獻者。這讓PhoneGap獲得了一個好的印象,隨後,Apple就讓他們重新加入進來了。

在2010年,IBM開始與Nitobi (即創建了HTML5 移動應用框架PhoneGap 和PhoneGap Build的新創公司Nitobi Software)進行合作,在OSCON與他們見面後,又向這個項目增加了5個開發者。在2011年,RIM和微軟也開始加入進來。隨後,Adobe收購了這個公司,所以Adobe也成爲這個項目的貢獻者。

PhoneGap的目標:Web是第一級平臺,應該讓人們創建可以安裝的Web應用。他們的第二個目標是擴大他們的影響力讓瀏覽器去適應其模型。

PhoneGap不是一個runtime或者編譯器,它也不是一個IDE或者預先定義的框架或者專有lockin。它獲得了Apache、MIT和BSD的認證,並且可以和軟件一樣自由獲取。你可以讓它做任何你想做的事情。最近,PhoneGap加入到了Apache Software基金

對於大家關注的Adobe vs. PhoneGap的問題,Nitobi小組仍然在爲PhoneGap開發。Adobe是一個軟件工具公司,並且對Apache和WebKit有所貢獻。PhoneGap/Build的結合將會被加入到Adobe Creative Cloud中。

將PhoneGap應用到Apache中最大的問題是將這個框架需要重新命名和代碼管理。我不是特別確定它是否需要被重命名,但Apache的Callback似乎是已經出來了。而且Apache用的是SVN來管理代碼而PhoneGap社區現在使用的是Git,他們試圖尋找一種折衷的道路,我個人更偏向Git。

PhoneGap技術,俗稱“橋”。它包括3個步驟:實例化一個WebView,然後從本地代碼調用JavaScript,再從JavaScript中調用本地代碼。顯然,在WebView中,所有的設備API都是可用的。

(PhoneGap)主要支持的平臺的包括iOS> = 3,Android> = 1.5和BlackBerry> =5.x。他們也支持webOS、Symbian、Samsung Bada和Windows Phone。沒有任何一個移動開發平臺可以像PhoneGap這樣支持如此多的部署平臺。(PhoneGap的)主要貢獻者是Adobe、IBM、RIM和微軟。

PhoneGap的文檔可在PhoneGap文檔上獲得。用以支持PhoneGap1.0的設備API包括傳感器、數據和輸出,這是所有設備都有的。傳感器的例子是地理位置和攝像頭。數據的例子是文件系統、通訊錄和存儲卡。輸出包括屏幕、揚聲器和揚聲器插孔。所有PhoneGap API都是插件,但也允許任何原生API。

Phonegap的安全性如何?Brian建議大家看看HTML5的安全清單。Phonegap在本地API之上增加了很多安全措施。

PhoneGap沒有與任何一個UI框架捆綁,但他們支持在瀏覽器中的任何JavaScript框架。 PhoneGap是一個很炫的瀏覽器,所以你的代碼少也可以在沒那麼炫的瀏覽器中運行。這意味着你可以在你的桌面瀏覽器的開發和測試你的應用程序,只不過是使用PhoneGap打包和分發你的應用程序。

PhoneGap的競爭者? PhoneGap沒有競爭。

PhoneGap/Build可以讓你的應用程序在雲端編譯,並對開源項目是免費的。他們這樣做的最大的原因是因爲他們不能重新發布所有的SDK,對開發者來說,下載並安裝training classes中的SDK是非常痛苦的。

對於移動應用程序開發,你應該有一個單純的目標。如果你想獲得成功,那就把一件事件做的很好。偉大的UX就是在不斷迭代中改進的。Web已經在各種平臺上獲得了廣泛的、成功。這很可能你已經對Web進行了投資。那麼,從構建移動Web客戶端開始吧,並且使用PhoneGap作爲一種增強技術。

Shipping和unit測試應該每天都做。自動化任何事情,這樣你就可以一鍵做很多事情(測試/開發/發佈)。 對於Web客戶端設計來說,限制是有好處的,尤其在當你面對複雜性和挑剔的客戶的時候。手機會消耗很多東西:CPU,內存,帶寬,電池,網絡……任何事情!從爲應用程序的性能標準化開始,並檢測這個標準。如果你有大量的特性,要考慮分裂成多個應用。

移動網絡不是WebKit!Opera規模很大,FireFox發展迅猛,IE也有它的地盤。對於佈局來說,要使用flex-box規則、CSS媒體查詢 和meta標籤來做viewport。你應該試着不用框架去開發你的應用,因爲這意味着大量的代碼並且會影響你的應用的規模。

外觀有可能是致命的的:美觀會對性能有影響。border-radius, box-shadow 和 gradients都會降低你的應用的速度。很有可能你並不需要這些性能。爲你自己的品牌設計應用,而不是爲設備生產商。一個看起來像是Android上的iPhone應用的的應用是不會給人很好的印象的。

對於JavaScript庫,從你自己的問題開始,而不是像Sencha或者jQuery Mobile那樣試圖構建一個通用的解決方案。 ZeptoXUI是你開始時所需要的一切。Jo是一個不錯的選擇。Backbone 和 Spine都值得關注。

對與測試, deployment、concat、minify和obfuscate你的JavaScript和CSS代碼,QUnit 和 Jasmine都是非常流行的工具。或者你也可以將一切內嵌到標記中,以便使HTTP會話最小。Gmail內聯並註釋他們所有的Javascript,然後eval這些代碼。

從那裏,Brian建議,對於優雅的系統,要利用HTML5的AppCache和RESTful JSON endpoints。接下來,他試圖向我們展示一個照片共享應用程序的演示版本。不幸的是,人品比較差,他的計算機當時無法識別Android手機。但是,他向我們展示了客戶端代碼,只使用1行代碼就能獲取在手機上的圖片,這令人印象深刻。

我們最後看到的是debug.phonegap.com。這是一個由weinre驅動的的應用程序。它可以讓你在客戶端輸入一行JavaScript,然後在一個工具中遠程調試,這個工具看起來像Chrome的Web Inspector。我得說這非常酷。

總結:

我真的很喜歡學習有關PhoneGap的更多東西,特別是因爲Brian強調,我所有的Web開發技能都可以使用到。我不必去學習Objective – C或Android來開發本地應用程序,我甚至可以不安裝SDK,如果我使用PhoneGap/Build。當然,我做手機開發的朋友可能不同意這種做法。同時,我期待使用PhoneGap將我的手機Web客戶端轉化爲本地應用,並看看是否真地如他們說的一樣好。

原文鏈接:PhoneGap for Hybrid App Development

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章