Cordova 是什么?
初学Cordova的人,虽然了解一点点,知道Cordova是用来将html, css, js变成app的,但并不知道到底是怎么用的,原理是什么?
Q1:它是一个可以把H5代码变成iOS、安卓等原生代码的东西?
A1:它不会把你的前端页面变成 ios 原生的 objective-c 或者 android 的 java 代码,你的界面还是以网页形式呈现的, 渲染在 Android 的 WebView 或 iOS 的UIWebView 中。
Q2:它是一个封装了H5浏览器的壳?可以装在iOS、安卓等平台的app,一打开这个APP就会访问我web app的内容?
A2:不太像壳,只是在运行在 WebView 中的 javascript 代码和原生代码之间建了一座沟通的桥梁,通过它可以用js去访问原生应用。
Q3:还是一个web前端框架,用户使用手机自带浏览器访问我的web app就可以调用他手机的摄像头和麦克风?
A3:不是前端框架, bootstrap、angularjs、jqueryUI 这些是前端框架。cordova更像一个工具。
总结:
Cordova是一个工具,通过它可以将你做的html网页显示在WebView里面,而你网页中用到的JS可以通过他的API去调用原生的东西,比如照相机等。
- Cordova提供了一组设备相关的API,通过这组API,移动应用能够以JavaScript访问原生的设备功能,如摄像头、麦克风等。
- Cordova还提供了一组统一的JavaScript类库,以及为这些类库所用的设备相关的原生后台代码。Cordova支持如下移动操作系统:iOS, Android,ubuntu phone os, Blackberry, Windows Phone, Palm WebOS, Bada 和 Symbian。
- Cordova官网
Cordova 下的deviceready事件
Cordova框架中第一个应该掌握的就是这个deviceready事件。采用Cordova开发的应用在运行的时候,Cordova提供的通过HTML5调用Native功能并不是立即就能使用的,Cordova框架在读入HTML5代码之后,要进行HTML5和Native建立桥接,在未能完成这个桥接的初始的情况下,是不能调用Native功能的。在Cordova框架中,当这个桥接的初始化完成后,会调用他自身特有的事件,即deviceready事件。
document.addEventListener('deviceready', function () {
console.log('Device is Ready!');
// ....your code
}, false);
需要注意的是,deviceready事件是在每回读入HTML的时候都会被调用,而不只是应用启动时调用。
除了deviceready事件以外,Cordova应用在内部读取HTML代码的时候还会调用一些其他的事件。但这些并不是Cordova框架提供的事件,而是嵌入的Webview的浏览器Render引擎提供的。