Nouvelle version 1.5 de jQuery releasé

31 Janvier 2011

Pour fêter les cinq années du framework jQuery, une nouvelle version stable vient tout juste d'être publiée et elle a un changelog long comme le bras. Cette nouvelle release introduit encore une fois de plus pas mal de nouveautés très intéressantes et bien sur elle corrige des régressions et un nombre assez important de bugs...

Parmi les nouveautés intéressantes, il y a l'amélioration du mode compatibilité de jQuery pour fonctionner avec un autre framework, l'apparition d'un moyen de faire de l'héritage de l'objet jQuery et une grosse réécriture du module Ajax.

Gestion de l'héritage (subclassing)

Alors déjà, je précise que je suis pas sure de la traduction de "subclassing", pour moi l'héritage se traduit par "inheritance" mais je n'ai pas trouvé de meilleur terme. Peu importe, cette fonction jQuery.sub() est forte intéressante ! Avec les précédentes versions de jQuery il n'était pas possible de faire un override d'une fonction jQuery définie dans le framework, car cela pouvait altérer le comportement d'autres plugins qui peuvent être exécutés en parallèle. Maintenant il est possible de le faire et de limiter seulement à un plugin dans un cadre bien fixe.

Le snippet suivant démontre bien l'intérêt de cette nouvelle fonctionnalité :

(function(){
        var sub$ = jQuery.sub();

        sub$.fn.myCustomMethod = function(){
                return 'just for me';
        };

        sub$(document).ready(function() {
                sub$('body').myCustomMethod() // 'just for me'
        });
})();

Ainsi il va être très facile de remplacer une fonction jQuery uniquement pour un plugin pour corriger ou améliorer un comportement bizarre sur un navigateur (IE par exemple)...

La partie Ajax entièrement recodée

L'autre grosse nouveauté de jQuery 1.5 est une grosse réécriture de la partie $.ajax() du framework pour le rendre plus extensible, il était déjà assez souple il va devenir contorsionniste. En effet, les requêtes Ajax faites avec .ajax() retournent maintenant un objet jXHR, qui permettent d'annuler des requêtes JSONp, ce qui n'était pas le cas avec l'ancienne implémentation de l'objet Ajax.

Cette nouvelle implémentation apporte aussi de nouvelles fonctionnalités qui permettent de faire des conversions (avec un objet converter) avant d'exécuter une requêtes ajax ou encore de transformer (avec un objet transformer) le résultat obtenu lors d'une requête... Ce sont les éléments qui permettent de rendre le comportement très extensible.

Les fonctions "déferrés"

En plus de la réécriture du module Ajax, un gros travail a été fait pour ajouter les objets déferrés qui consistent à attendre le résultat d'une requête Ajax avant d'être exécuté Le snippet suivant permettra de chainer des actions lors d'une requête Ajax :

// Assign handlers immediately after making the request,
// and remember the jxhr object for this request
var jxhr = $.ajax({ url: "example.php" })
    .success(function() { alert("success"); })
    .error(function() { alert("error"); })
    .complete(function() { alert("complete"); });

// perform other work here ...

// Set another completion function for the request above
jxhr.complete(function(){ alert("second complete"); });

Ces fonctions déferrés vont permettre de gérer plus facilement les cas d'erreurs qui peuvent être rencontrés dans des applications utilisant massivement des requêtes Ajax.

Amélioration des performances de la "navigation" dans le dom

Les performances des fonctions de navigation dans le DOM .next() pour l'élément suivant, .prev() pour l'élément précédent et .children() pour récupérer les enfants d'un élément ont été largement améliorés selon les navigateurs, voici quelques captures assez explicites :

Performance de .next() Performance de .children()

Conclusion

Cette nouvelle version a été testé sur beaucoup de navigateurs qui ont tous passés les 4437 tests des suites ce qui assure une grande qualité du framework. On apprend également que l'équipe de jQuery a utilisé Node.js pour son process de build de la librairie et UglifyJS.

Pendant la phase de finalisation de la version 1.5, l'équipe de jQuery a souhaité que la communauté aide au développement et ils ont mis en place une page complète pour expliquer ce qu'ils attendent de la communauté jQuery. La page de documentation API de la version 1.5 vous donnera toutes les modifications et nouveautés apportées au framework et voici les différents liens pour télécharger la dernière version de jQuery :

Source : Le blog de jQuery[EN]