Icone_creative Creative Icone_bdw Blog Du Webdesign Icone_emploi Emploi BDW
Ouvrir

jQuery : Bien démarrer pour créer un plugin jQuery

by SANCHEZ Benjamin - le 05/04/2012

  • Partager l'article en 1 clic !

    N'hésitez pas à aider le BlogDuWebdesign

Quand on parle framework javascript, généralement on parle de jQuery. De loin le plus utilisé, il possède une très grande communauté, et donc un nombre impressionnant de plugins.

Plugin? Script?

Qu'est ce qu'un plugin jQuery, et pourquoi pas utiliser le terme script ? Ces deux termes sont utilisés généralement pour dire la même chose, mais il existe néanmoins une petite différence, pour moi :

Un script sera une portion de javascript ayant un effet sur la page de manière globale. Un script va par exemple modifier le markup HTML, ou bien déclarer une fonction accessible depuis la page, ce genre de chose.

Un plugin, lui, vas simplement ajouter des fonctions aux objets jQuery. Rien ne sera ajouté dans le scope global javascript, rien ne sera modifié sur la page. Il faudra donc ensuite appeler la fonction adéquate sur un objet jquery pour obtenir le résultat escompté.

Créer un plugin jQuery

Créer un plugin jquery est assez simple, si l'on sait par où commencer. J'ai préparé pour vous un embryon de plugin, que nous allons décortiquer ici. (Pour plaire au plus grand nombre, je vais prendre en exemple la version javascript. Une version coffeescript vous attend néanmoins dans l'archive que vous trouverez en bas de l'article)

Template

// project: 
// author:
// date:
//
// description:
// jquery version:
//
jQuery(function(){
  function($){
    $.fn.my_plugin = function(args){
      args = $.extend({
        key_1: "default_1",
        key_2: "default_2" 
      }, args);
      // place your code here
      

      // eoc
      return this; 
    }; 

  }(jQuery);
}); 

Maintenant, explications

Lignes 1-7: Les premières lignes sont explicites: Le header sert à garder une trace dans le projet de son nom, quand vous l'avez commencé, et quelle était sa fonction. Rien de bien excitant.

La ligne 8 permet d'attendre que le dom (et donc jQuery) soit chargé pour commencer à travailler. Sans cela, il peut arriver que jquery soit chargé après votre plugin, qui ne sera pas pris en compte.

jQuery n'est pas le seul framework javascript a faire usage du $ comme raccourci. La ligne 9 définit donc un scop dans lequel nous sommes sur que $ signifie bien jquery.

ligne 10: Voila la ligne qui créée notre plugin, réellement, en l'ajoutant au prototype jQuery. La fonction ainsi créée pourra ensuite être appelée depuis n'importe quel objet jquery. exemple : $("#my_id").my_plugin(). Vous pourrez ici ajouter des arguments obligatoires, avant args.

lignes 11-13: Un plugin demande en général de nombreux paramètres de configuration, pour être le plus souple possible. La ligne 10 permet de passer ces paramètres sous forme d'un hash, et de définir des valeurs par défaut.

C'est une méthode que je recommande pour plus que les plugins jQuery, personnellement. Il est bien plus simple, en revenant sur un site 6 mois après, de comprendre une fonction du style slide({duration: "2s", transition: "opacity", id: "mySlide"}); qu'un autre avec des arguments standards slide(2, "opacity", "mySlide");

(D'accord, mon exemple n'est peut être pas très bien choisi, les deux sont compréhensibles. Je vous fait néanmoins confiance pour en trouver un mieux, on est tous déjà tombés sur une fonction avec 4 ou 5 arguments qui se ressemblent tous...

Enfin, le render en ligne 18 permet de renvoyer l'objet sur lequel la fonction a été appelée, et donc de pouvoir chainer une autre fonction derrière

 Download les sources.

...Et c'est tout?

Oui, c'est tout ce dont vous avez besoin pour créer un plugin. Il ne vous reste plus maintenant qu'à choisir vos arguments obligatoires et optionnels, leurs valeurs par défaut, et commencer à coder. L'objet sur lequel la fonction a été appelée est nommé this dans le scop de la fonction, et vous savez maintenant tout. Le reste reviendrait à vous apprendre à développer en javascript, ce que je n'aurais pas la prétention de faire.

 

Devenez membre !

Rejoignez la communauté des créatifs du web !
- Partagez vos créations
- Gagnez en visibilité
- Créez votre blog facilement
> En savoir plus

Créer mon compte
  • Partager l'article en 1 clic !

    N'hésitez pas à aider le BlogDuWebdesign
2 Auteur : SANCHEZ Benjamin voir son blog

Développeur autodidacte depuis quelques années, déjà, je suis le développeur du blog du webdesign, où mon rôle est de concretiser les différentes idées et maquettes.

2commentaires

  • 164ef7e6da512528c4980b701ff01d99
    Eupho

    le 06/04/12| #1

    Bonjour, m'étant confronté a la création de plugins il n'y a pas longtemps, je trouve que c'est une bonne chose de proposer une introduction. Par contre c'est un peu la partie cachée de l'iceberg. C'est a dire, ok j'ai ça... Et après ? Je code tout d'un coup dans ma fonction/plugin ? Et si je veux définir un objet je le défini où? Et si je veux appeler mon plugin avec des arguments ou un objet de paramètres ?

    Et si je fais $("#un_mec_averti, #en_vaut_deux").my_plugin(); -> bah ils sont bien dans la merde le mec si je retourne juste this et pas un return $.each(this, function(){});

  • 554ce9dc0648de3d76eb195298a2a2d8
    Triskel

    le 15/08/12| #2

    Trop bonne tutorial! Merci!

Ecrire un commentaire