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插件的調(diào)用模塊,也就是說ionic-native只是調(diào)用庫,而不包含插件代碼。
cordova插件常用功能是添加、移除和顯示已安裝插件列表,依此為以下命令:
ionic cordova plugin add DemoPlugin
ionic cordova plugin rm DemoPlugin
ionic cordova plugin ls
當(dāng)安裝完cordova插件后,一般有兩種方式調(diào)用cordova插件:
1、基于cordova常規(guī)調(diào)用方式
若DemoPlugin.doSomething()為插件文檔里的方法,則可以這樣調(diào)用,在import之后,@Component之前加上declare的聲明代碼。(不然會無法識別DemoPlugin而報錯,any表示一個任意類型,這樣無論調(diào)用什么方法,都不會警告,如果你知道具體什么類或者接口,能把any換成對應(yīng)的)。
declare let DemoPlugin: any;
然后在代碼里調(diào)用
DemoPlugin.doSomething();
這種方式的弊端是非常依賴cordova文檔,如DemoPlugin不會關(guān)聯(lián)到cordova插件源碼,換句話說DemoPlugin點后面不會有相應(yīng)的方法或?qū)ο螅瑥亩荒芰私馄涫褂眯畔ⅰ?/p>
2、基于ionic-native調(diào)用
早期的ionic-native是一個全部插件的封裝調(diào)用庫模塊,隨著插件越來越多,封裝的ionic-native就越來越大,雖然只需import ionic-native一次,但是絕大多數(shù)插件沒有使用就封裝進(jìn)來就顯得很冗余了,特別是對于移動端對資源特別苛刻的情況下,開發(fā)者的意見越來越大,于是ionic-native被重構(gòu):加了@同時,除了core外,其它拆分成一個個模塊。這樣當(dāng)裝哪個cordova插件時,再裝對應(yīng)的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",
調(diào)用方式為import后在ts調(diào)用即可。
這種方式的好處是,基于typeScript的class概念,每個方法屬性都能較清楚地看到定義和說明。