Vous vous souvenez de la librairie Microsoft Ajax ? J’en avais parlé l’an dernier lors de la Bewise Day Conference (et aussi dans un post quelques temps après). Pour mémoire, il s’agissait d’une librairie pur JavaScript qui proposait notamment un repeater et du databinding en JavaScript, qui n’est jamais sorti du stade de la beta (voire même preview, je me souviens plus très bien)
Eh bien j’ai été surpris en voyant Scott Guthrie nous parler des contributions de Microsoft à jQuery. Au programme : templates clients et data binding (renommés data linking pour l’occasion, jQuery ayant déjà une fonction nommée “bind”), des fonctionnalités déjà présentes dans la librairie de Microsoft. J’ai donc eu un petit doute : cette librairie ne devait-elle pas être fournie avec le framework 4 ? Pourquoi n’est-elle pas dans Visual Studio 2010 alors qu’elle était dans les beta ? Une vérification sur la page codeplex d’asp.net m’a confirmé ce que je pensais : plus la moindre trace de cette librairie.
C’est donc jQuery qui va hériter de ces fonctionnalités plus qu’intéressantes, et finalement, c’est loin d’être une mauvaise nouvelle : même si les 2 librairies cohabitaient très bien, on n’aura finalement besoin de connaitre qu’une seule librairie, plus de risque de se perdre avec les syntaxes différentes utilisées par jQuery et MS Ajax.
jQuery Templates
Au programme donc, nous avons les templates : une version JavaScript des repeaters.
Comment ça fonctionne ? Eh bien de la manière suivante :
Il nous faut définir un template (ici dans la balise script, afin de ne pas l’afficher tel quel dans la page), et un container dans lequel jQuery injectera le html généré depuis le template :
1: <div id="contactContainer">
2: </div>
3: <script id="contactTemplate" type="text/html">
4: <div>
5: Name: {{= name }}<br />
6: Phone: {{= phone }} 7: </div>
8: </script>
Une fois le template défini, on va lui associer nos données, par exemple un tableau JavaScript dans notre exemple, mais il pourrait être intéressant de l’associer au résultat d’un appel Ajax, par exemple.
1: <script type="text/javascript">
2: var contacts = [
3: { name: "Scott Guthrie", phone: "415-555-2222" },
4: { name: "Guillaume Lacasa", phone: "05 11 22 33 44" }
5: ]; 6: 7: $("#contactTemplate").render(contacts).appendTo("#contactContainer");
8: </script>Data-linking
Seconde nouveauté, le data-linking. L’idée est de lier une propriété d’un objet avec une propriété d’un autre objet : quand on en modifie un, l’autre est modifié automatiquement. Pas de code pour cette fonctionnalité, mais vous pouvez retrouver un exemple d’utilisation sur le blog de maître Gu.
Je reviendrai plus en détail sur chacune de ces fonctionnalités, qui offrent des possibilités plus poussées que le peu que j’ai exploré à ce jour : boucles, conditions, linking mono et bi-directionnel, et combinaisons du linking avec les templates.
3 commentaires:
Bonjour,
Si je comprends bien le Ajax Client template va disparaitre ou alors a déjà disparu ?
On parle bien de ca : http://www.microsoft.com/france/vision/mstechdays10/Webcast.aspx?EID=ae15d720-6a0f-43a7-ad3e-18bc00b37341 ?
Alexandre
Oui, il s'agit bien de cette librairie.
Elle a déjà disparu, ou plutot elle n'est jamais apparue puisqu'il n'y a jamais eu autre chose que des previews... Je n'ai vu aucune communication officielle sur cette disparition, mais la librairie a bien disparu de codeplex.
Par contre, d'après ce que j'ai compris ces fonctionnalités ne sont pas abandonnées puisqu'elles seront ajoutées à jQuery sous forme de plug-ins.
C'est assez surprenant vu qu'ils en ont pas mal parler au Techdays2010 ! Ca avait l'air vraiment sympa et le peu que je tester m'a vraiment envi de creuser le sujet et de l'utiliser au besoin. Je vais voir ce que JQuery propose à la place ...
MS avait fait un réel effort pour refactoriser l'ensemble de son framework ajax (dont cette grosse partie) pour au final pas grand chose !
Le truc "fun" c'est que c'est dans le skills mesured de la certification ASP.NET 4 donc ca me surprend vraiment comme décision.
J'ai vraiment rien vu d'officiel la dessus ! Dommage ...
Enregistrer un commentaire