On a déjà expliqué l'objet d'un framework (ici). Pour mémoire, un framework est une architecture, une norme de codage et un ensemble de composants. Le langage javascript a été créé en 1995 en s'inspirant de nombreux langages, notamment du Java mais en en simplifiant la syntaxe. Ce langage, actuellement à la version 1.7 est une implémentation du standard ECMA-262. Le Java et le javascript sont souvent confondus. De même que le HTML est interprété différemment en fonction le navigateur utilisé, le javascript l'est aussi. Le développement d'interfaces riches en DHTML cumule donc les handicaps. Développer une grosse fonctionnalité en javascript suppose un important travail de test sur différents navigateurs. Les frameworks répondent en partie à cette difficulté en offrant un socle d'abstraction au navigateur utilisé.

Les frameworks testés :
  • Prototype : de loin le plus connu et le plus ancien. Bibliothèque bas-niveau
  • Scriptaculous : basé sur Prototype. Permet de réaliser des effets visuels.
  • Dojo : nombreux widget fournis mais obstrusif (voir plus loin)
  • Rico : basé sur Prototype. Permet la réalisation d'effets visuels
  • Mootools : permet la réalisation d'effets visuels
  • Jquery : nombreux plug-in, documentation abondante
  • Yahoo User Interface Library : peu d'informations en dehors du site yahoo.
  • Javeline: gestion de fenêtre
Aujourd'hui, il est admis que les développements web doivent respecter des normes pour garantir l'universalité du développement. Notamment, l'accessibilité et le référencement en découlent. Il est admis qu'ajax apporte une valeur ajoutée. Mais on sait également qu'ajax utilise javascript et n'est donc pas accessible. Toutefois, on peut conjuguer ces deux aspects sans les opposer. Dans le progrès technique, les développements ajax gagnent leurs lettres de noblesse grâce à un adjectif : "unobtrusive" ou javascript discret. Techniquement, cette pratique consiste à mettre en place un couplage faible entre les éléments HTML et les fonctionnalités javascript via la feuille de style. De cette manière, le html et javascript ne sont pas mélangés et le html est indépendant du javascript. Le javascript vient bonifier l'interface, mais n'est pas nécessaire à la page. Prenons un exemple simple avec le framework Prototype, il s'agit d'une fonctionnalité de tri dans un tableau. Lorque l'on clique sur l'en-tête d'une colonne, le contenu du tableau se trie:
NomRéférenceNuméroEtat
gfh df ghNalis9en cours
dfgh dgh test6en cours
dfghd fgh Aucun35
tsrhdsfg dgh Axance / Nalis8en cours
stgh zrt rtg sgdsfg Orangez42ar
gfh dgfhLa Poste55en cours

Si on désactive le javascript, le tableau s'affiche toujours.
Point d'ajax dans ce modeste développement, il s'agit uniquement de DHTML (ou HTML dynamique) regroupant HTML, CSS et javascript pour dynamiser le comportement des pages.

Même exemple avec le "DataTable" de Yahoo User Interface Library. Au style près, le fonctionnement est le même:



Si on désactive le javascript ... il n'y a plus rien. En effet, les libraries yahoo utilisent des structures de données propres différentes des types de données classiques HTML. Ainsi, le tableau affiché par Yahoo, n'est pas un tableau HTML. On retrouve la même philosophie chez Javeline. Quelque part, on tombe dans les mêmes inconvénients que le Flash, Flex ou Silverlight: pas d'accessibilité, ni de référencement possible. Du coup, l'intérêt d'employer ces technologies est faible, même s'il semble qu'un développeur javascript soit plus facile à trouver qu'un développeur flash.
On peut employer le même type de script pour gérer la pagination, L'ensemble des données du tableau sont chargées en une fois et paginées par le javascript. Cette méthode limite le nombre d'appels vers le serveur sans que le volume de données chargées la première fois soit trop important. Dans le cas où le javascript est desactivé sur une version unobstusive, le tableau se charge dans sa totalité sans pagination. Ces enrichissements fonctionnent également sur des terminaux mobiles. Le navigateur de l'iPhone accepte tout à fait le javascript alors que le Flash n'est toujours pas supporté.


Les interfaces riches sont de plus en plus courantes sur le web. Si les technologies flash ou silverlight apparaissent à première vue comme des choix évidents, les contraintes d'accessibilités et de référencement favorisent l'adoption de technologies standard et ouvertes. Le sujet est vaste et va nécessiter des compléments. Toutefois, les frameworks javascript apportent des capacités d'animations jusque-là réservées au Flash. Il convient d'illustrer ces nouvelles capacités dans un prochain billet. Par ailleurs, les interfaces riches en javascript génèrent un volume de code relativement important dans un langage encore peu évolué (programmation objet notement). Aboutir dans des interfaces riches ambitieuses en DHTML nécessite une industrialisation des processus de production de code. A suivre ...