Quelle est la meilleure façon de créer un wrapper agnostique de bibliothèque pour les sélecteurs de bibliothèque JS? J'ai un framework JS personnalisé, qui vise à être aussi indépendant des bibliothèques que possible. Le problème que j'ai est que par exemple Mootools améliore l'élément DOM retourné avec ses propres méthodes spécifiques (injecter, adopter etc.), et je ne veux pas que ceux-ci soient visibles par les modules, superposés sur le framework (comme Nicholas Zakas une fois décrit), pour éviter les abus/accidents. En guise de simple secourisme, j'ai créé un sélecteur personnalisé qui utilise Mootools, puis crée un élément DOM-objet/wrapper personnalisé et Mootools DOM sélectionné (et amélioré), donc les méthodes améliorées de Mootools ne sont pas directement visibles. aux modules ci-dessus. Le problème avec cette approche est que je perds toutes les fonctionnalités natives de l'élément DOM (valeur, style, etc.) si ce n'est pas spécifiquement codé dans le wrapper (Element).Comment faire wrapper sélecteur agnostique bibliothèque JS?
Existe-t-il une autre et/ou une meilleure façon de procéder? Quelque chose qui étendrait l'élément DOM natif, fournissant ainsi automatiquement les propriétés/méthodes natives ET offrant des fonctionnalités avancées à travers le wrapper (via Mootools, jQuery, whatnot ...).
quelques exemples de code, comment il est fait actuellement:
/*
* Wrap the native library element
*/
Element = function(_libElement) {
// Store native object
var libElement = _libElement;
return {
addClass: function(_class) { libElement.addClass(_class); return this; },
removeClass: function(_class) { libElement.removeClass(_class); return this; },
hasClass: function(_class) { return libElement.hasClass(_class); }
};
};
/*
* Custom selector
*/
getElement = function(_query) {
var elements = $$(_query);
// Wrap each element to Element wrapper
var num = elements.length;
while(num--) {
elements[num] = new Element(elements[num]);
}
return elements;
};
Pouvez-vous fournir du code? Je n'arrive pas à visualiser exactement ce dont vous avez besoin ... –
Ajout d'un exemple de code – crappish