Cordova是開源免費的用Html 5構建跨平臺移動應用的框架,用來構建Hybrid應用。它實現了一套API,使應用有使用移動設備的能力。Cordova框架有如下組成部分:css
構建一個Cordova應用就是建立Web應用,把Web應用打包到原生容器中,測試並調試,發佈給用戶。打包過程以下圖:html
web應用不加改動地運行在原生殼中,不會生成任何原生代碼html5
Cordova程序啓動時加載web應用起始頁(通常是index.html,能夠自定義),轉換成web視圖後把控制權交給web視圖。用戶與web應用交互,連接和js代碼能加載打包資源中的其餘內容、訪問網絡並從服務器下載內容。程序員
web視圖是渲染web頁面的原生組件web
運行在Cordova容器中的web應用就像移動瀏覽器中的web應用。js負責實現應用邏輯,css負責實現外觀界面。apache
Cordova的API由兩部分實現:js庫負責把API暴露給用戶使用;容器中運行的原生代碼實現原生的API。每一個項目都有一個Cordova js庫,但在每一個平臺上都有各自的原生代碼實現。瀏覽器
Cordova應用包括了全部Cordova API的原生和js代碼,在3.0中,每一個API都分紅單獨的插件,這樣就能夠用Cordova插件管理器添加或刪除項目中的插件。以下圖,應用使用分離的插件而且只打包用到的插件。服務器
Cordova提供如下API:
加速器、相機、抓屏、指南針、鏈接、聯繫人、設備、事件、文件、地理定位、全球化、程序內瀏覽器、媒體提示、閃屏、存儲網絡
開發者在應用中使用Cordova API實現應用功能,應用使用js調用API。程序裏某特殊層把CordovaAPI調用轉換成合適的本地接口。如在黑莓上訪問相機的方式和安卓不一樣,API通用層容許開發者使用一個接口,在每一個平臺中轉換成合適的原生API,一次調用適用全部支持平臺。
以下面使用Cordova在移動應用中獲取圖像的默認API的語句:架構
navigator.camera.getPicture(onSucess, onFail);
兩個回調函數名作爲參數:onSucess和onFail,在圖像捕捉成功或失敗時調用。
提及Cordova,就不能不提PhoneGap。
PhoneGap最初是2008年由一名iOS程序員創造的,最第一版本也只用在iOS平臺上,然後增長了對Android的支持。而且最初的版本也只是把html頁面加載到APP中,直到2011年發佈的1.0版本才加入了對API的支持,這是它的最根本優點所在。
隨後Adobe收購了PhoneGap,緊接着又做爲開源項目捐給了Apache基金會,並命名爲Cordova。而Adobe將會繼續以Cordova加上PhoneGap Build和Adobe Shadow的組合提供PhoneGap。所以PhoneGap的核心是Cordova容器,兩者的區別主要在於命令行工具和PhoneGap構建服務。PhoneGap做爲Adobe的產品,集成了一些工具,能夠繼續無償使用。
若是移動瀏覽器實現了本地API的調用,Cordova可能會被廢棄。但每一個系統的本地API都不同,Cordova的優點在於只須要寫一次調用便可方便地在各平臺調用本地API,從而保持應用良好的跨平臺性。
目前支持如下平臺:
最新的支持列表請參照:http://cordova.apache.org/docs/en/3.0.0/guide_overview_index.md.html#O...。
目前除了蘋果公司,各大平臺和公司都對Cordova在本平臺上的實現和使用表現了極大的興趣。我的認爲,隨着硬件和網絡的發展,在某些輕量級應用中,使用Cordova這種跨平臺解決方案能夠大幅減小開發成本。
讓咱們再深刻了解一點怎樣使用框架構建Cordova應用。
Cordova應是運行在客戶端本地應用容器的web應用。所以,運行在Cordova容器中的Html5應用的結構和傳統的基於web服務器的有所不一樣。傳統的web應用中服務器端作了大部分工做,好比按照用戶請求傳回生成的內容。而Cordova這種容器中的應用自己包括了所須要的靜態頁面,用戶請求通常由js代碼響應並與服務器交互,這樣與服務器交互的內容會比較少。而且因爲html5自己的特性(如本地存儲)或容器的API,容器的應用能夠脫離服務器運行。
Cordova應用使用普通的web技術如html、css和js開發。使用經常使用的web開發工具就能夠了,如記事本,複雜一些的像Adobe Dreamweaver或者Eclispe。Adobe還有免費開源的代碼編輯器Brackets。Aptana studio是一款基於Eclispe開發但比Eclispe輕量的開源IDE。
不管是否使用Cordova API,Cordova應用最後都會被打包成本地應用。每一個平臺都有優先構建本平臺本地應用的工具,而在構建Cordova應用以前,要確保應用的web內容添加到每一個平臺應用項目中,而後在使用平臺工具構建。
一些平臺開發工具只運行在特定的桌面操做系統上:Android SDK運行在Linux、Windows和Macintosh OS X;BlackBerry SDKs運行在Windows、Macintosh OS X;iOS SDK只運行在Macintosh OS X;Windows Phone SDK只運行在Windows上。例如,若是使用PC使用全部平臺開發工具,能夠考慮在Windows系統中使用VMware虛擬機加載Macintosh Mini系統。
在新版本的Cordova中刪除了舊版本中的IDE插件,使用命令行工具實現跨平臺構建任務。命令行工具能夠建立項目、管理插件,構建和和在模擬器上測試應用。PhoneGap還提供了打包雲服務,服務容許上傳web應用構建應用服務器,並把應用打包到支持的平臺的Cordova容器中。
Cordova提供的插件是有限的,但能夠用插件擴展Cordova功能。Cordova固化了插件定義模式,在Cordova應用中管理插件,而且核心的API也用插件實現。像Facebook推出了本身的插件,推送消息的Urban Airship插件等。以後會介紹如何建立自定義插件。
商業公司爲開源項目提供支持,這樣它們自己的業務也可使用這些項目。Cordova也是同樣,目前最好的支持是Google Groups的PhoneGap區(http://groups.google.com/group/phonegap)。在那有一大批有經驗的開發者關注問題列表,能夠快速得到問題答案。PhoneGap Build有一個支持論壇(http://community.phonegap.com/nitobi/products/nitobi_phonegap_build)。
在線諮詢使用Cordova和PhoneGap框架的網址:
Cordova Website:
http://cordova.io or http://cordova.apache.org
(指向同一網站)
Cordova Documentation:
http://docs.cordova.io
Cordova Wiki:
http://wiki.cordova.io
Cordova Issue Tracker:
https://issues.apache.org/jira/browse/CB
得到最新信息訂閱郵件列表 Cordova Mailing Lists:
http://cordova.apache.org/#mailing-list
Cordova Twitter Account:
http://twitter.com/apachecordova
PhoneGap Website:
http://www.phonegap.com
PhoneGap Wiki:
http://wiki.phonegap.com
PhoneGap Blog:
http://www.phonegap.com/blog
PhoneGap Twitter Account:
https://twitter.com/phonegap
最基本的仍是Apach Cordova Documentation,包括了API參考和其餘使用時會用到的指南。
Cordova並非惟一的應用框架,市場上有許多相似於Cordova或在Cordova中運行的框架,如Appcelerator的Titanium,AT&T的Workbench和Antena Software Volt,BlackBerry的WebWorks,IBM的Worklight,Oracle的Application Development Framework Mobile,Salesforce的Touch,SAP的Mobile Plateform,Strobe(從前的SproutCore,如今屬於Facebook),Tigger。
到如今對Cordova瞭解的已經夠多了,從下篇開始正始開始咱們的Cordova開發之旅。