求知若饥,虚心若愚。
Cordova是一个开源的移动开发框架,让你使用HTML、CSS和JavaScript等Web技术来开发跨平台的App。它使开发者能够利用JS来访问IOS、Android、Windows Phone等手机的核心设备功能–如:地理定位、加速器、联系人、声音和振动等。
在Cordova中,通过Android或IOS中的WebView组件(浏览器核心)实现对Web技术开发的App的展示。以Android为例,Cordova是通过增强Android的WebView组件来实现JS调用Java方法的,其实质也是Cordova插件的原理。
IPhone和Android平台共同点是都有内置的WebView组件,其具备两个特性:
1.WebView组件实质是移动设备的内置浏览器
WebView这个内置浏览器是WebApp能被打包成本地客户端的基础,可方便的使用HTML5、CSS3页面布局,这是移动Web技术相对于原生开发的优势。
2.WebView提供Web和设备本地API双向通信的能力
Cordova针对不同平台的WebView做了扩展和封装,使WebView这个组件变成可访问设备本地API的强大浏览器,所以开发人员在Cordova框架下可通过JavaScript访问设备本地API。
运行在WebView组件上WebApp <=>通过Cordova在各平台上的扩展 <=>最终访问设备本地资源
通常我们称利用Cordova开发的手机App叫做混合App(Hybrid App)。
利用Cordova开发App最大的缺点是性能问题和兼容性产生的各种Bug。
例如滚动性能问题主要是由于Android这个残废的WebView导致的不能使用原生来实现下拉刷新和无线加载的功能,导致不得不使用JS来模拟实现。
其实在IOS上面Cordova开发的App性能还是相当棒的,几乎和原生没有区别,xxx在IOS上面的滚动是利用原生的滚动,所以没有性能问题。
还好随着手机的硬件越来越强悍,这个缺点也在慢慢得到弱化。例如xxx在绝大部分的Android手机上面性能表现还是相当好的,就算是5年钱的三星一代机皇I9100上面刷Android4.0以上系统跑起来也是相当令人满意的,所以大家不要过分担心性能问题。只要优化得当,还是能够得到很好的性能表现的,优化不当就算是原生开发的App都能卡出翔。
Cordova是PhoneGap贡献给Apache后的开源项目,是从PhoneGap中抽出的核心代码,是驱动PhoneGap的核心引擎,所以可以把PhoneGap理解为Cordova的一个分支,但它或多或少的和Cordova有所不同,很多不同也是因为要支持PhoneGap Build的。PhoneGap和Cordova的关系就如同Google Chrome和WebKit的关系。
Cordova官方网站:http://cordova.apache.org/