Cordova插件须知

ionic可以很方便的安装cordova插件,最新ionic-cli要求cordova插件里面有package.json和plugin.xml才能安装成功,如果缺失,请自行补上,而原来旧的cli不要求package.json文件(插件目录里的,不是ionic项目里的)。

ionic1时期,除了使用cordova插件外,更方便使用插件是用ng-cordova,到了ionic2及以上,ng-cordova又演变成了ionic-native,ionic-native其实不是插件,它是基于typeScript封装了cordova插件的调用模块,也就是说ionic-native只是调用库,而不包含插件代码。

cordova插件常用功能是添加、移除和显示已安装插件列表,依此为以下命令:

ionic cordova plugin add DemoPlugin

ionic cordova plugin rm DemoPlugin

ionic cordova plugin ls

当安装完cordova插件后,一般有两种方式调用cordova插件:

1、基于cordova常规调用方式

若DemoPlugin.doSomething()为插件文档里的方法,则可以这样调用,在import之后,@Component之前加上declare的声明代码。(不然会无法识别DemoPlugin而报错,any表示一个任意类型,这样无论调用什么方法,都不会警告,如果你知道具体什么类或者接口,能把any换成对应的)。

declare let DemoPlugin: any;

然后在代码里调用

DemoPlugin.doSomething();

这种方式的弊端是非常依赖cordova文档,如DemoPlugin不会关联到cordova插件源码,换句话说DemoPlugin点后面不会有相应的方法或对象,从而不能了解其使用信息。

2、基于ionic-native调用

早期的ionic-native是一个全部插件的封装调用库模块,随着插件越来越多,封装的ionic-native就越来越大,虽然只需import ionic-native一次,但是绝大多数插件没有使用就封装进来就显得很冗余了,特别是对于移动端对资源特别苛刻的情况下,开发者的意见越来越大,于是ionic-native被重构:加了@同时,除了core外,其它拆分成一个个模块。这样当装哪个cordova插件时,再装对应的native子模块即可(以@ionic-native做前缀),如下面所示:

ionic cordova plugin add splash-screen;

npm install @ionic-native/splansh-screen --save;

最后会反映到package.json里,

"@ionic-native/core":"3.12.1",

"@ionic-native/splash-screen":"3.12.1",

调用方式为import后在ts调用即可。

这种方式的好处是,基于typeScript的class概念,每个方法属性都能较清楚地看到定义和说明。

推荐阅读更多精彩内容