Prototype
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.
- 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'.
- 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...