[英]Cordova JavaScript Plugins
我開始明白科爾多瓦內部工作的方式越來越多; 我繼續努力的一件事是JavaScript插件的格式。
我習慣於按如下方式編寫JavaScript(據我所知,這是標准慣例):
(function () {
var version = "EXAMPLE",
v1,
v2,
v3
res;
function somePrivateFunction(successCallback, errorCallback) {
someOtherPrivateFunction(sc, ec);
}
function someOtherPrivateFunction(successCallback, errorCallback) {
cordova.exec(sc, ec, 'SomeService', 'SomeMethod', [args]);
}
res = {
VERSION: version,
doSomething: function (sc, ec) {
somePrivateFunction(sc, ec);
}
}
window.myPlugin = res;
}());
但是,Cordova使用的格式我完全不熟悉。 我認為(我在這里和那里只聽說過這個術語)它使用了一個名為require
東西(通過大多數插件頂部的聲明來判斷)。
我經常在官方Cordova插件中看到的格式如下:
var argscheck = require('cordova/argscheck'),
utils = require('cordova/utils'),
exec = require('cordova/exec');
var myPlugin = function () {
}
myPlugin.doSomething = function(successCallback, errorCallback) {
exec(successCallback, errorCallback, 'SomeService', 'SomeMethod', [args]);
}
myPlugin.doSomethingElse = function(successCallback, errorCallback) {
exec(successCallback, errorCallback, 'SomeService', 'SomeOtherMethod', [args]);
}
modules.export = myPlugin;
也許是因為我對這個require
庫沒有任何了解 - 但是我沒有得到它? 就JavaScript而言,這對我來說似乎完全陌生。
什么是模塊,什么是cordova/[...]
語法以及它表示什么。 這些其他cordova模塊在哪里定義(是正確的術語)以及modules
從何而來?
最后, modules.export
做了什么? 我試圖理解plugin.xml
的<js-module>
標簽和<clobbers>
標簽,但這讓我想到了。
我知道當Cordova構建項目時,它會在插件周圍插入cordova.define
。
也許至少有人可以澄清一下? 謝謝!
require和exec函數是cordova對象的方法。 當您安裝插件時,它會被包含在函數中,以便訪問cordova對象。 那些電話實際上是cordova.require和cordova.exec
以下是安裝前后插件js文件的示例:
之前:
var exec = require("cordova/exec");
var VideoPlayer = {
play: function(url) {
exec(null, null, "VideoPlayer", "playVideo", [url]);
}
};
module.exports = VideoPlayer;
后:
cordova.define("com.dawsonloudon.videoplayer.VideoPlayer", function(require, exports, module) {
var exec = require("cordova/exec");
var VideoPlayer = {
play: function(url) {
exec(null, null, "VideoPlayer", "playVideo", [url]);
}
};
module.exports = VideoPlayer;
});
另外,要回答有關配置設置的問題,clobbers命令可以保護插件對象的名稱空間。 從我的插件:
<js-module src="www/VideoPlayer.js" name="VideoPlayer">
<clobbers target="VideoPlayer" />
</js-module>
這是說明我的JS文件的名稱,以及用於在JS中調用我的插件的對象命名空間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.