Prototype

Fiche logiciel validé
  • Création ou MAJ importante : 11/04/10
  • Correction mineure : 07/06/12
Mots-clés
Pour aller plus loin

Prototype : bibliothèque Javascript de bas niveau

Description
Fonctionnalités générales

Prototype est une bibliothèque Javascript de bas niveau qui permet de simplifier considérablement l'écriture des logiciels écrits en Javascript, donc également l'écriture d'interfaces graphiques sophistiquées utilisant des navigateurs web. L'utilisation de Prototype est à mon avis indispensable à partir du moment où l'on souhaite développer une partie importante de son application en Javascript, sans se contenter de réutiliser quelques fonctions trouvées sur internet.

Prototype tire son nom de la propriété du même nom, présente dans tous les objets Javascript, qui permet d'ajouter dynamiquement des méthodes à ces objets: Prototype va ainsi étendre considérablement les fonctionnalités de Javascript.

Par exemple, les éléments du DOM sont étendus, ce qui a permis de leur ajouter des méthodes pour:

  • Passer d'un élément à l'autre en utilisant la structure arborescente du DOM
  • Modifier la liste des classes CSS auxquelles l'élément appartient (cette modification sera effectuée dynamiquement, et produira un effet visuel suivant la feuille de style associée)
  • Cacher ou afficher l'élément
  • Intercepter les événements générés par cet élément

Le plus important réside toutefois dans le fait que prototype gère les différences entre les navigateurs: on peut écrire du code sans (trop) se préoccuper de savoir si le code en question sera exécuté sur Firefox, Opera, Safari ou Internet Explorer, ... Cela est particulièrement important pour la gestion des événements ou l'utilisation du protocole Ajax, qui sont implémentés de manière assez différente sur MSIE et sur les navigateurs standard.

Autres fonctionnalités
  • Plusieurs fonctions permettent d'effectuer des requêtes Ajax
  • Prototype propose un objet (Class) permettant de programmer en "Orienté Objets" d'une manière comparable à ce qu'on ferait dans des langages plus classiques (type Java), c'est-à-dire en faisant de l'héritage statique (alors que l'héritage au sens de javascript est dynamique).
  • L'élément String est lui aussi étendu, de sorte qu'il possède de très nombreuses méthodes très utilisées.
  • Certaines fonctions offrent des "raccourcis" pour les fonctionnalités les plus souvent utilisées: par exemple $('identificateur') renvoie l'élément HTML étendu dont l'Id vaut 'identificateur'.
Limitations, difficultés, fonctionnalités importantes non couvertes
  • La documentation de Prototype est très bien faite, mais l'utilisation de Javascript + Prototype peut sembler un peu ardue au débutant, car la documentation de Javascript lui-même doit être recherchée sur les sites qui traitent de Javascript, tandis que la documentation de Prototype est à rechercher sur le site de Prototype. A cela, il faut ajouter que les concepteurs de prototype découragent l'utilisation de certaines structures de contrôle Javascript qui donneront de piètres résultats avec les objets étendus...
Environnement du logiciel
Distributions dans lesquelles ce logiciel est intégré

Aucune à ma connaissance, on doit télécharger le fichier correspondant (124K) depuis le site de Prototype et introduire un élément script qui pointe sur ce fichier, au même titre que ses propres scripts.

Logiciels connexes
Autres logiciels aux fonctionnalités équivalentes
  • Les très nombreuses boîtes à outils permettant de développer des sites web avec des fonctionnalités avancées peuvent être considérés comme des logiciels plus ou moins équivalents à Protoype. Parmi ceux-ci citons jquery ( http://www.jquery.info ), la YUI ( http://developer.yahoo.com/yui/ ), dojo ( http://dojotoolkit.org/ ), ... La différence avec prototype réside cependant dans le fait que Prototype s'occupe des couches "basses" de l'application, à la différence des autres boites à outils qui proposent des outils pour améliorer l'interface utilisateur elle-même. De ce fait, Prototype est complémentaire de ces logiciels; certains d'entre eux s'appuient d'ailleurs sur (et incorporent) Prototype.
Environnement de développement
Type de structure associée au développement

L'équipe de développement internationale est présentée en-dehors de toute structure, cela dit Prototype est au cœur de la mouvance Ruby on Rails, produit par la société américaine http://www.37signals.com/

Eléments de pérennité
  • Prototype est à la base de plusieurs "frameworks" Javascript extrêmement importants, par exemple http://script.aculo.us, et Rico http://openrico.org.
  • Le développement de Prototype est lié au développement de Ruby on Rails ( http://www.projet-plume.org/fiche/ruby ), un framework Web renommé.
  • Cette bibliothèque est à présent très bien établie, et est citée très souvent dans les livres qui parlent de Javascript ou d'Ajax.
Environnement utilisateur
Liste de diffusion ou de discussion, support et forums
Documentation utilisateur
Divers (astuces, actualités, sécurité)

Des problèmes pouvant exister lors de la migration d'une version à l'autre, un script (utilisable avec firebug, cf. http://www.projet-plume.org/fiche/firebug ) existe, qui signale tout appel de fonction "deprecated".

Contributions