編輯按:本文作者Matt Raible是一個網(wǎng)絡架構咨詢師,,在開源架構上很有研究,。
一天下午,我參加了PhoneGap開發(fā)者Brian LeRoux在Devoxx的演講,,演講內容是混搭Web應用開發(fā)中的PhoneGap技術,。我曾嘗試過PhoneGap,并且有著非常愉快的體驗,。下面是我對Brian LeRoux的演講所作的筆記,。
PhoneGap是一個使用HTML、CSS和JavaScript來創(chuàng)建本地應用的框架,,源于2008年的一個Hack項目,,后在當年秋天,被 Nitobi引入其概念開發(fā)Android和BlackBerry上的實現(xiàn),。人們真正開始關注PhoneGap是因為蘋果公司對PhonePag的封殺,, 原因是所有使用PhoneGap開發(fā)的應用都被命名為PhoneGap。
其后,,開發(fā)者為PhoneGap增加了對Symbian和WebOS上的支持,,Sony Ericsson也成為這個項目的貢獻者。這讓PhoneGap獲得了一個好的印象,,隨后,,Apple就讓他們重新加入進來了。
在2010年,,IBM開始與Nitobi(即創(chuàng)建了HTML5移動應用框架PhoneGap 和PhoneGap Build的新創(chuàng)公司Nitobi Software)進行合作,,在OSCON與他們見面后,又向這個項目增加了5個開發(fā)者,。在2011年,,RIM和微軟也開始加入進來。隨后,,Adobe收 購了這個公司,,所以Adobe也成為這個項目的貢獻者。
PhoneGap的目標:Web是第一級平臺,應該讓人們創(chuàng)建可以安裝的Web應用,。他們的第二個目標是擴大他們的影響力讓瀏覽器去適應其模型,。
PhoneGap不是一個runtime或者編譯器,它也不是一個IDE或者預先定義的框架或者專有l(wèi)ockin,。它獲得了Apache,、MIT和BSD的認證,并且可以和軟件一樣自由獲取,。你可以讓它做任何你想做的事情,。最近,PhoneGap加入到了Apache Software基金,。
對于大家關注的Adobe vs. PhoneGap的問題,,Nitobi小組仍然在為PhoneGap開發(fā)。Adobe是一個軟件工具公司,,并且對Apache和WebKit有所貢獻,。PhoneGap/Build的結合將會被加入到Adobe Creative Cloud中。
將PhoneGap應用到Apache中最大的問題是將這個框架需要重新命名和代碼管理,。我不是特別確定它是否需要被重命名,,但Apache的 Callback似乎是已經(jīng)出來了。而且Apache用的是SVN來管理代碼而PhoneGap社區(qū)現(xiàn)在使用的是Git,,他們試圖尋找一種折衷的道路,,我 個人更偏向Git。
PhoneGap技術,,俗稱“橋”,。它包括3個步驟:實例化一個WebView,然后從本地代碼調用JavaScript,,再從JavaScript中調用本地代碼,。顯然,在WebView中,,所有的設備API都是可用的,。
(PhoneGap)主要支持的平臺的包括iOS> = 3,Android> = 1.5和BlackBerry> =5.x,。他們也支持webOS,、Symbian、Samsung Bada和Windows Phone,。沒有任何一個移動開發(fā)平臺可以像PhoneGap這樣支持如此多的部署平臺,。(PhoneGap的)主要貢獻者是Adobe、IBM,、RIM 和微軟。
PhoneGap的文檔可在PhoneGap文檔上 獲得。用以支持PhoneGap1.0的設備API包括傳感器,、數(shù)據(jù)和輸出,,這是所有設備都有的。傳感器的例子是地理位置和攝像頭,。數(shù)據(jù)的例子是文件系 統(tǒng),、通訊錄和存儲卡。輸出包括屏幕,、揚聲器和揚聲器插孔,。所有PhoneGap API都是插件,但也允許任何原生API,。
Phonegap的安全性如何,?Brian建議大家看看HTML5的安全清單。Phonegap在本地API之上增加了很多安全措施,。
PhoneGap沒有與任何一個UI框架捆綁,,但他們支持在瀏覽器中的任何JavaScript框架。PhoneGap是一個很炫的瀏覽器,,所以你 的代碼少也可以在沒那么炫的瀏覽器中運行,。這意味著你可以在你的桌面瀏覽器的開發(fā)和測試你的應用程序,只不過是使用PhoneGap打包和分發(fā)你的應用程 序,。
PhoneGap的競爭者,?PhoneGap沒有競爭。
PhoneGap/Build可以讓你的應用程序在云端編譯,,并對開源項目是免費的,。他們這樣做的最大的原因是因為他們不能重新發(fā)布所有的SDK,對開發(fā)者來說,,下載并安裝training classes中的SDK是非常痛苦的,。
對于移動應用程序開發(fā),你應該有一個單純的目標,。如果你想獲得成功,,那就把一件事件做的很好。偉大的UX就是在不斷迭代中改進的,。Web已經(jīng)在各種 平臺上獲得了廣泛的,、成功。這很可能你已經(jīng)對Web進行了投資,。那么,,從構建移動Web客戶端開始吧,并且使用PhoneGap作為一種增強技術,。
Shipping和unit測試應該每天都做,。自動化任何事情,,這樣你就可以一鍵做很多事情(測試/開發(fā)/發(fā)布)。對于Web客戶端設計來說,,限制 是有好處的,,尤其在當你面對復雜性和挑剔的客戶的時候。手機會消耗很多東西:CPU,,內存,,帶寬,電池,,網(wǎng)絡……任何事情,!從為應用程序的性能標準化開 始,并檢測這個標準,。如果你有大量的特性,,要考慮分裂成多個應用。
移動網(wǎng)絡不是WebKit,!Opera規(guī)模很大,,F(xiàn)ireFox發(fā)展迅猛,IE也有它的地盤,。對于布局來說,,要使用flex-box規(guī)則、CSS媒 體查詢和meta標簽來做viewport,。你應該試著不用框架去開發(fā)你的應用,,因為這意味著大量的代碼并且會影響你的應用的規(guī)模。
外觀有可能是致命的的:美觀會對性能有影響,。border-radius, box-shadow和gradients都會降低你的應用的速度,。很有可能你并不需要這些性能。為你自己的品牌設計應用,,而不是為設備生產(chǎn)商,。一個看起 來像是Android上的iPhone應用的的應用是不會給人很好的印象的。
對于JavaScript庫,,從你自己的問題開始,,而不是像Sencha或者jQuery Mobile那樣試圖構建一個通用的解決方案。Zepto及XUI是你開始時所需要的一切,。Jo是一個不錯的選擇,。Backbone和Spine都值得關注。
對與測試,,deployment,、concat、minify和obfuscate你的JavaScript和CSS代碼,,QUnit和 Jasmine都是非常流行的工具,?;蛘吣阋部梢詫⒁磺袃惹兜綐擞浿校员闶笻TTP會話最小,。Gmail內聯(lián)并注釋他們所有的Javascript,,然 后eval這些代碼,。
從那里,,Brian建議,對于優(yōu)雅的系統(tǒng),,要利用HTML5的AppCache和RESTful JSON endpoints,。接下來,他試圖向我們展示一個照片共享應用程序的演示版本,。不幸的是,,人品比較差,他的計算機當時無法識別Android手機,。但是,,他向我們展示了客戶端代碼,只使用1行代碼就能獲取在手機上的圖片,,這令人印象深刻,。
我們最后看到的是debug.。這是一個由weinre驅動的的應用程序,。它可以讓你在客戶端輸入一行JavaScript,,然后在一個工具中遠程調試,這個工具看起來像Chrome的Web Inspector,。我得說這非??帷?/p>
總結:
我真的很喜歡學習有關PhoneGap的更多東西,,特別是因為Brian強調,,我所有的Web開發(fā)技能都可以使用到。我不必去學習 Objective – C或Android來開發(fā)本地應用程序,,我甚至可以不安裝SDK,,如果我使用PhoneGap/Build。當然,,我做手機開發(fā)的朋友可能不同意這種做 法,。同時,我期待使用PhoneGap將我的手機Web客戶端轉化為本地應用,,并看看是否真地如他們說的一樣好,。
原文出處:Raible Designs
譯文出處:WebAppTrend(注:WebAppTrend是一個獨立技術博客,主要關注Web App發(fā)展前沿與實踐,,以及智能瀏覽器發(fā)展,。)