当前位置 : 主页 > 手机开发 > cordova >

Cordova JavaScript插件

来源:互联网 收集:自由互联 发布时间:2021-06-10
我开始明白科尔多瓦内部工作的方式越来越多;我继续努力的一件事是 JavaScript插件的格式. 我习惯于按如下方式编写JavaScript(据我所知,这是标准惯例): (function () { var version = "EXAMPLE", v
我开始明白科尔多瓦内部工作的方式越来越多;我继续努力的一件事是 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;

也许是因为我对这个需要的库没有任何了解 – 但是我没有得到它?就JavaScript而言,这对我来说似乎完全陌生.

什么是模块,什么是cordova / […]语法以及它表示什么.这些其他cordova模块在哪里定义(是正确的术语)以及模块从何而来?

最后,modules.export做了什么?我想了解< js-module> plugin.xml的标签和< 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中调用我的插件的对象命名空间.

网友评论