A la veille de Google I/O 2015, Angular 1.4 (jaracimrman-existence) a été livré, mettant fin à six mois de planning et de développement. Alors qu'une part importante de bon code a été incluse, une fonctionnalité critique pour le futur d'Angular a été remise à plus tard.
Dans un article de blog, Pete Bacon Darwin décrit la version 1.4 comme une "version pilotée par la communauté" avec un "nombre de perfectionnements de fonctionnalités et d'améliorations de performance". Pendant les phases de planning et d'implémentation initiale de la version 1.4, un nouveau routeur était prioritaire. A ng-conf 2015, l'équipe Angular a annoncé que ce nouveau routeur était la clé de la migration de la version 1.X à 2.X.
Malheureusement, l'équipe a éjecté cette fonctionnalité dans la version 1.5. Dans son article, Darwin indique que la fonctionnalité nécessite plus de temps. "Le nouveau routeur n'était pas prêt pour la tâche importante de simplification du chemin de migration d'Angular 1 à Angular 2. Plutôt que de décaler encore plus la version 1.4, nous avons décider de la déplacer dans la version 1.5".
Au lieu de cela, la fonctionnalité qui reçoit la priorité cette fois sont les animations. Alors que l'API exposée est largement la même, le point central du refactoring de la fonctionnalité est un nouveau service appelé $animateCss. Le nouveau service élimine la nécessité d'utiliser jQuery ou GreenSock pour les animations et donne aux développeurs une nouvelle manière de combiner les animations JavaScript et CSS. Matias Niemelä, la force motrice derrière la pile d'animation d'Angular, a parlé à ce sujet plus tôt cette année à ng-conf.
La manière dont jQuery est intégré à Angular est un changement intéressant. Une nouvelle directive, ng-jq
, permet aux développeurs de spécifier quelle version de jQuery utiliser ou de toujours utiliser jqLite. Par le passé, si la bibliothèque jQuery complète était présente, Angular l'utilisait. Maintenant, les développeurs peuvent contourner la présence de jQuery. Voici la manière dont la nouvelle directive est utilisée :
<html ng-app ng-jq>
Ce changement a été discuté aussi loin que 2011. Les développeurs d'apps qui nécessitent une vieille version de jQuery se sont plaints que l'existence de ce vieux jQuery a cassé le code dans l'app Angular. En permettant aux développeurs de charger un jQuery spécifique ou même jqLite à la place, les apps Angular peuvent choisir leur propre destinée jQuery.
Dans une discussion sur Reddit, l'utilisateur axlee a grommelé sur la nature limitée de cette version :
C'est très décevant. J'attendais un routeur flambant neuf et un support complet de i18n ("internationalisation de première classe" dans leurs propres mots de décembre), mais ce sont seulement des correctifs et des petites améliorations d'hygiène. Pas vraiment sûr que c'était la peine de le livrer comme une "version majeure".
En dépit du fait que cette version est "la première a être exécutée par une équipe beaucoup plus largement orientée vers la communauté", il semble qu'ils voudraient aller plus vite. Dans l'agenda pour la réunion du planning du 1er juin, les points de discussion comprennent :
- Nous aurions aimé livrer la version 1.4.0 plus tôt.
- Incorporer des grands changements plus tôt.
- Si nous devions avoir des livraisons plus fréquentes avec un périmètre plus limité - ce serait plus facile pour les développeurs mais rendrait la maintenance plus ardue.
Les développeurs peuvent se documenter sur les changements non-compatibles dans Angular 1.4 en lisant le guide de migration de 1.3 à 1.4. La nouvelle version est disponible à angularjs.org.