2010-06-11 4 views
11

J'ai vu beaucoup d'implémentations jQuery de fonctions JavaScript existantes qui enveloppent simplement le code JavaScript dans un wrapper jQuery et ne reposent sur aucune base de jQuery pour leur fonctionnement.Pourquoi construire des fonctions Javascript en tant que plugins jQuery?

Quels sont les avantages d'utiliser Javascript comme plugin jQuery?
S'il n'y en a aucune, y a-t-il une perte de vitesse pour utiliser un plugin jQuery qui aurait aussi bien pu être implémenté en dehors de l'encapsuleur?

Merci beaucoup d'avance (juste essayer d'apprendre quelque chose ici).

Mise à jour l'exemple:
http://plugins.jquery.com/project/base64
était à l'origine
http://www.webtoolkit.info/javascript-base64.html

+3

avez-vous un exemple de ce à quoi vous faites référence? –

+1

Exemple, s'il vous plaît ... (la réponse est probablement: "pour permettre l'enchaînement d'appel/interface fluide") – Shog9

+0

Par exemple comme http://plugins.jquery.com/files/jquery.cookie.js.txt ou http: //code.google.com/p/jquery-json/source/parcourir/trunk/jquery.json.js ou http://stackoverflow.com/questions/3024084/jquery-javascript-how-do-i-convert-a-pixel-value- 20px-à-un-nombre-valeur-20/3024109 # 3024109? –

Répondre

8

Une grande partie de jQuery est juste un emballage intelligent autour des fonctions de JavaScript existantes. $('#some-element') est peut-être un peu plus facile à taper que document.getElementById('some-element') mais n'est pas très différent.

(I exagère, mais seulement légèrement.)

L'utilité principale de jQuery est de pouvoir combiner ses divers composants. Si je peux sélectionner des éléments avec un sélecteur jQuery et effectuer ensuite une action sur ces éléments directement via une fonction jQuery, il est préférable d'extraire les éléments DOM sous-jacents et de les manipuler manuellement, par exemple.

Donc, cela dépend vraiment des fonctions que vous voyez être emballés. Certains d'entre eux pourraient très bien ajouter aucune valeur, et les auteurs sont simplement habitués à tout être en jQuery. (Nous voyons clairement ce phénomène sur StackOverflow - les gens qui ne peuvent pas trouver une fonction JavaScript standard simplement parce que ce n'est pas dans la documentation de jQuery). Dans d'autres cas, il peut y avoir des avantages cachés même si l'encapsuleur ne fait que peu ou rien pour modifier le comportement de la fonction sous-jacente.

+3

L'un des principaux avantages de l'utilisation d'une bibliothèque comme jQuery est aussi le fait qu'il gère la détection du navigateur, et fait abstraction de choses comme la sélection/manipulation d'éléments. C'est un énorme avantage pour des choses comme ajax, et CSS. Par exemple, si vous appelez $ (selector) .css ('opacity', 0.5), cela fonctionne, vous n'avez pas à vous soucier de configurer une règle de filtrage pour IE. –

+0

@ Harold1983, "gère la détection du navigateur", où? ... jQuery est une fonctionnalité de détection/inférence. – James

+1

Il a probablement signifié en interne comme dedans, il est assez intelligent pour fonctionner dans tous les navigateurs. – Mohammad

4

Il y a aussi beaucoup d'élan autour de jQuery, et une confiance générale. L'inclusion de javascript arbitraire dans votre base de code peut ne pas être aussi "acceptable" pour les types supérieurs que l'inclusion d'un nouveau plugin jQuery.

Donc, ce peut être une perception erronée, mais en étant un plugin jQuery, une bibliothèque bénéficie d'être associée à un code de haute qualité.

+0

Je vote votre réponse parce que c'est vrai, mais en même temps, oh si triste :( – SBUJOLD

1

à mon humble avis la seule raison de créer un plug-in est d'exécuter certaines fonctionnalités contre un sélecteur à-dire un ensemble d'éléments choisis par exemple

$('.myelements').someFunction(); 

Si votre plugin finit par ressembler à ceci (cas au point le Microsoft nouvelle version plugin mondialisation)

$.doSomeStuff(); 

alors il ny a pas beaucoup d'avantages qui ne pouvait pas être obtenu d'utiliser une fermeture. Cependant, beaucoup de développeurs ne comprennent pas les fermetures et les espaces de noms en javascript, et en suivant un développement de plugin, ils peuvent obtenir le bénéfice sans comprendre pleinement le modèle.

Questions connexes