jQuery 1.8, 1.9 et 2.0

Le bien connu framework javascript jQuery est actuellement en version 1.8beta 1 et devrait sortir d'ici un mois en version finale. C'est le moment de faire un tour des nouveautés et évolutions de cette version mais également des versions suivantes, puisque la 1.8 pave la voie qui mènera vers de gros changements.

Dans un premier temps, voyons ce qu'apporte la version 1.8.

jQuery 1.8

  • La modularité. En effet, à la manière de jQuery UI, il sera désormais possible de construire sa propre version de jQuery en fonction de ses besoins. Ainsi, si vous n'utilisez pas certaines parties de jQuery, vous pourrez alléger votre fichier en omettant ces fonctionnalités. Les parties optionnelles sont ajax, css, dimensions, effects, et offset.
  • La gestion des préfixes vendeurs. Il suffira désormais d'utiliser la propriété CSS voulue, actuellement non standardisée par le W3C sans se soucier des préfixes vendeurs. À partir de la propriété de base jQuery optera de lui-même, selon le navigateur utilisé, pour le préfixe vendeur nécessaire.
  • Le moteur de sélection CSS Sizzle, qui s'occupe de parcourir le DOM lorsque vous recherchez un élément via jQuery en passant un paramètre du style ul li.maClasse évolue lui aussi pour devenir plus stable, plus performant et même plus complet.
  • Plus de sécurité. Actuellement, si vous passez une chaîne contenant du HTML à la fonction "$()", cette dernière interprétera le HTML, et notamment, les balises <script>. Désormais, uniquement les chaînes commençant par le caractère "<" seront interprétées comme du HTML (sinon ce sera considéré comme un sélecteur CSS). Pour peaufiner tout ça, une nouvelle méthode sera disponible : $.parseHtml qui sera utile dans les cas où vous récupérez une chaîne HTML depuis une source extérieure.
  • Des setters bien pratiques : si vous utilisez outerWidth et outerHeight pour récupérer la taille d'un élément avec son "padding" et ses marges, vous serez contents d'apprendre qu'il sera désormais possible de définir la taille d'un élément avec son padding et ses marges !
  • les méthodes append, prepend, after et before acceptent désormais un array comme premier paramètre.
  • andSelf() est renommé addBack()
  • Un grand nettoyage. Plusieurs fonctionnalités seront désormais dépréciées telles :
    • la détection du navigateur via $.browser,
    • $.sub qui crée une copie modifiable de jQuery,
    • les évènements globaux ajax (il est conseillé de plutôt les attacher à document),
    • mais aussi les requètes synchrones en ajax,
    • .size() est définitivement remplacé par .length.
    • les méthodes load, unload et error (à remplacer par on("load") etc.)
    • les sélecteurs de type d'input :text, :radio etc. (qui sont à remplacer par [type="text"] etc.)
    • le pseudo-event hover (à remplacer par mouseenter et mouseleave)
  • Une refonte du moteur d'animation. Ce nouveau moteur permettra de tenir compte aussi bien des anciens navigateurs que de nouveaux qui supportent les animations CSS3. Il y aura ainsi deux nouvelles méthodes : jQuery.Animation() et jQuery.Tween(), qui seront décrites dans de futurs articles.

Voilà donc déjà une belle liste de nouveautés, améliorations et de fonctions dépréciées.; Faites bien attention à ces fonctions dépréciées !

jQuery 1.9 et jQuery 2.0

Le planning prévu est que jQuery 1.9 devrait sortir début 2013 et jQuery 2.0 peu de temps après.
La courte période entre les deux s'explique par un grand changement mais peu de nouveau développement, vous allez voir…

Tout d'abord, s'il est si important de faire attention à toutes les fonctions dépréciées dans jQuery 1.8, c'est pour la simple et bonne raison qu'elles seront carrément supprimées dans jQuery 1.9 ! Certaines interfaces resteront tout de même disponibles via des plugins. Cette version continuera à être maintenue même après la sortie de jQuery 2.0, les mises à jours seront cependant "mineures".

Pour la version 2.0 la grande nouveauté c'est que jQuery arrête le support et le développement des vieilles versions de IE, soit IE 6, 7 et 8 ! Cela permettra d'obtenir un framework à la fois plus léger, plus performant mais aussi plus complète (les développeurs de jQuery espèrent ainsi peaufiner la gestion des erreurs dans jQuery.Deferred, chose infaisable actuellement avec le support de oldIE.