kel*_*dar 6 javascript plugins cordova cordova-3
我开始明白科尔多瓦内部工作的方式越来越多; 我继续努力的一件事是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;
}());
Run Code Online (Sandbox Code Playgroud)
但是,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;
Run Code Online (Sandbox Code Playgroud)
也许是因为我对这个require图书馆没有任何了解- 但我不明白?就JavaScript而言,这对我来说似乎完全陌生.
什么是模块,cordova/[...]语法是什么以及它表示什么.这些其他cordova模块在哪里定义(是正确的术语),它modules来自哪里?
最后,做了modules.export什么?我试图理解<js-module>标签plugin.xml和<clobbers>标签,但这让我想起了.
我知道当Cordova构建项目时,它会插入cordova.define周围的插件.
也许至少有人可以澄清一下?谢谢!
Daw*_*don 13
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;
Run Code Online (Sandbox Code Playgroud)
后:
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;
});
Run Code Online (Sandbox Code Playgroud)
另外,要回答有关配置设置的问题,clobbers命令可以保护插件对象的名称空间.从我的插件:
<js-module src="www/VideoPlayer.js" name="VideoPlayer">
<clobbers target="VideoPlayer" />
</js-module>
Run Code Online (Sandbox Code Playgroud)
这是说明我的JS文件的名称,以及用于在JS中调用我的插件的对象命名空间.
| 归档时间: |
|
| 查看次数: |
16322 次 |
| 最近记录: |