Я все больше и больше начинаю понимать внутреннюю работу Cordova; Однако одна вещь, с которой я продолжаю бороться, — это формат плагинов 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
? Я пытаюсь понять тег <js-module>
из plugin.xml
и тег <clobbers>
, но, думаю, это сдерживает меня.
Я понимаю, что когда Кордова собирает проект, она вставляет cordova.define
вокруг плагина.
Может хоть кто прояснит? Спасибо!
exec
, которая является функцией моста между js и собственным кодом. - person Dawson Loudon   schedule 04.02.2014modules.export
, ты когда-нибудь это понял? - person E.A.T   schedule 17.07.2015