Cordova Plugins JavaScript
Je commence à comprendre la façon dont Cordova fonctionne en interne de plus en plus; une chose que je lutte toujours avec le format des plugins JavaScript cependant.
Je suis habitué à l'écriture de mon JavaScript comme suit (ce qui est la norme de la convention, pour autant que je suis au courant):
(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;
}());
Cependant, Cordova utilise un format que je suis complètement familier avec. Je pense (et j'en ai seulement entendu parler de ce terme ici et là), il utilise ce qu'on appelle require
(à en juger par les déclarations en haut de la plupart des plugins).
Le format que je vois souvent dans l'officiel des plugins Cordova sont comme suit:
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;
Peut-être que c'est parce que je n'ai pas de connaissances sur ce require
bibliothèque - mais je n'ai pas l'obtenir? Cela semble complètement étranger à moi, en termes de JavaScript.
Ce qui est des modules, ce qui est le cordova/[...]
de la syntaxe et de ce qu'indique-t-il. Où sont ces autres cordova les modules définis (est-ce la bonne terminologie) et où modules
viennent de?
Et enfin, qu'est - modules.export
faire? Je suis en train d'essayer de comprendre le <js-module>
balise de plugin.xml
et la <clobbers>
tag, mais ce qui me retient, je pense.
Je comprends que, quand Cordova construit le projet, il insère cordova.define
entourant le plugin.
Peut-être au moins quelqu'un peut préciser? Merci!
- le besoin et exec fonctions sont des méthodes de l'cordova objet. Lorsque vous installez un plugin, il s'amalgament dans la fonction qui donne accès à l'cordova objet. Ces appels sont en fait cordova.exiger et cordoue.exec
- Louis, cela n'a rien à avoir avec RequireJS, par mon explication. J'ai enlevé l'étiquette
- Avec le plugin cadre, sauf si vous avez un besoin spécifique, vous avez seulement besoin de se préoccuper de la
exec
de commande qui est la fonction de pont entre js et du code natif. - personne n'a répondu à la partie de cette question sur la
modules.export
avez-vous jamais comprendre cela?
Vous devez vous connecter pour publier un commentaire.
le besoin et exec fonctions sont des méthodes de l'cordova objet. Lorsque vous installez un plugin, il s'amalgament dans la fonction qui donne accès à l'cordova objet. Ces appels sont en fait cordova.exiger et cordoue.exec
Voici un exemple d'un plugin js fichier avant et après l'installation:
AVANT:
APRÈS:
En outre, pour répondre au sujet de la configuration de l'installation, les clobbers commande sécurise l'espace de nom de votre plugin objet. De mon plugin:
C'est en indiquant le nom de mon fichier JS, et l'objet de l'espace de noms utilisé pour appeler à mon plugin en JS.
cordova
objet, comment puis-je obtenir toutes les autres méthodes (pour que je puisse examiner l'objet, et de voir ce qui est disponible)? Et est la[object]/[method]
unrequire
syntaxe?cordova.exec(...)
oucordova["exec"]
. Je ne l'ai jamais vu faire parrequire("cordova/exec")
et n'ai pas vu cette syntaxe avant? C'est ce que j'ai du mal à comprendre.cordova_plugins.js
à la place de l'ancienne méthode, y compris vos plugins js fichier directement dans leindex.html
. Depuis votre plugin js est en cours de chargement et traités par cette nouvelle méthode, vous n'êtes pas accèscordova.exec
directement comme avant, et au lieu d'utiliser le plugin cordova cadre d'attribuer exec comme une var via le cordova nécessite de la méthode.var VideoPlayer = cordova.require("com.dawsonloudon.videoplayer.VideoPlayer")
. Et aussi,cordova.require("com.dawsonloudon.videoplayer.VideoPlayer")
pas trouvé?