Technologies Web
Angular est un framework pour clients, open source, basé sur TypeScript et codirigé par l'équipe du projet « Angular » chez Google ainsi que par une communauté de particuliers et de sociétés. La première version date de Septembre 2016.
Il permet la création d’applications Web et plus particulièrement d'applications Web monopages (SPA) : des applications Web accessibles via une page Web unique qui permet de fluidifier l’expérience utilisateur et d’éviter les chargements de pages à chaque nouvelle action.
Le framework est basé sur une architecture du type MVC et permet donc de séparer les données, le visuel et les actions pour une meilleure gestion des responsabilités. Un type d’architecture qui a largement fait ses preuves et qui permet une forte maintenabilité et une amélioration du travail collaboratif.
Ma présentation de Angular :
AngularJS est un framework JavaScript libre et open source développé par Google. Il permet de développer des pages web. La première version date de 2009.
Philosophie d'AngularJS
AngularJS est fondé sur l'idée que la programmation déclarative doit être utilisée pour construire les interfaces utilisateurs et les composants logiciels de câblage, tandis que la programmation impérative excelle pour exprimer la logique métier.
La conception de AngularJS est guidée par plusieurs objectifs :
- découpler les manipulations du DOM de la logique métier. Cela améliore la testabilité du code ;
- considérer le test d'une application aussi important que l'écriture de l'application elle-même. La difficulté de la phase de test est considérablement affectée par la façon dont le code est structuré ;
- découpler les côtés client et serveur d'une application. Cela permet au développement logiciel des côtés client et serveur de progresser en parallèle, et permet la réutilisabilité de chacun des côtés ;
- guider les développeurs pendant toute la durée de la construction d'une application : de la conception de l'interface utilisateur, en passant par l'écriture de la logique métier, jusqu'au test de l'application ;
- rendre les tâches faciles évidentes et les tâches difficiles possibles.
ActionScript est un langage de programmation utilisé au sein d'applications clientes (comme Adobe Flash et Adobe Flex) et serveur (Flash media server, JRun, Macromedia Generator), ou encore en tant que langage de script dans le moteur graphique Unity.
ActionScript est un langage de script, orienté objet et prototype, fondé sur ECMAScript (conforme à 100 % avec la norme ECMA-262, révision 3, depuis ActionScript 3.0).
ECMAScript étant une version standardisée de JavaScript, ActionScript et JavaScript partagent une syntaxe semblable.
Ce langage permet d'ajouter de l'interactivité aux animations Flash, en répondant aux actions de l'utilisateur, et en pilotant les movie clips (conteneurs graphiques permettant de hiérarchiser les animations), et les différents objets multimédias (images, son, vidéo…). Il permet également la communication de l'application avec le serveur, notamment par le chargement de fichiers ou la communication avec un langage serveur comme le PHP.
Le PHP est un langage de programmation libre, principalement utilisé pour produire des pages Web dynamiques via un serveur web, mais pouvant également fonctionner comme n'importe quel langage interprété de façon locale. PHP est un langage impératif orienté objet.
PHP a permis de créer un grand nombre de sites web célèbres, comme Facebook et Wikipédia. Il est considéré comme une des bases de la création de sites web dits dynamiques mais également des applications web.
TypeScript est un langage de programmation libre et open source développé par Microsoft qui a pour but d'améliorer et de sécuriser la production de code JavaScript. Il s'agit d'un sur-ensemble syntaxique strict de JavaScript (c'est-à-dire que tout code JavaScript correct peut être utilisé avec TypeScript). Le code TypeScript est transcompilé en JavaScript, et peut ainsi être interprété par n'importe quel navigateur web ou moteur JavaScript. TypeScript a été cocréé par Anders Hejlsberg, principal inventeur de C#.
Ionic est un framework JavaScript open-source créé en 2013 par Max Lynch, Ben Sperry, et Adam Bradley. Deux versions distinctes sont disponibles, incompatibles entre elles : la première version, 1.3.3, se base sur AngularJS 1.5.3 tandis que la version 3.5.0 se base sur Angular 4.1.3 et TypeScript.
Framework
Basé initialement sur AngularJS et Apache Cordova, Ionic permet de créer un code multisupport en utilisant des outils Web comme HTML, CSS, JavaScript, afin de générer des applications iOS, Android, Chrome, Windows Phone et bien d'autres.
Jasmine est un framework de test open source pour JavaScript sorti en 2010. Il vise à fonctionner sur n'importe quelle plate-forme compatible JavaScript, à ne pas empiéter sur l'application ni l'IDE et à avoir une syntaxe facile à lire.
Apache Cordova ou plus anciennement PhoneGap, est un framework open-source qui permet de créer des applications pour différentes plateformes en HTML, CSS et JavaScript.
Les applications qui en résultent sont hybrides.
Histoire
PhoneGap est à l'origine un projet développé par Nitobi Software, puis par Adobe Systems à la suite du rachat de Nitobi par Adobe.
En 2011, Adobe donne le projet à la Fondation Apache, qui le renomme Apache Callback puis Apache Cordova.
Git est un logiciel de gestion de versions décentralisé. C'est un logiciel libre et gratuit, créé en 2005 par Linus Torvalds, auteur du noyau Linux, et distribué selon les termes de la licence publique générale GNU version 2. Le principal contributeur actuel de Git, et ce depuis plus de 16 ans, est Junio C Hamano.
Depuis les années 2010, il s’agit du logiciel de gestion de versions le plus populaire dans le développement logiciel et web, qui est utilisé par des dizaines de millions de personnes, sur tous les environnements (Windows, Mac, Linux). Git est aussi le système à la base du célèbre site web GitHub, le plus important hébergeur de code informatique.
Jest est un framework de test JavaScript : il permet de facilement créer des tests unitaires.
Mis au point par Facebook depuis 2015, Jest a été créé, à la base, pour être une solution de tests ReactJS. Sa simplicité d’utilisation et ses performances ont permis de fédérer une importante communauté de développeurs. En 2017, Airbnb a migré tous ses tests de Mocha vers Jest pour les gains de performances en termes de temps d’exécution. D'après un article Medium signé Gary Borton, ingénieur chez Airbnb, ce changement a réduit le temps d’exécution de leur suite de tests de plus de 12 minutes à 4 minutes 30.
Node.js est une plateforme open-source, construite sur le moteur JavaScript V8 de Google Chrome, qui permet d'exécuter du code JavaScript côté serveur. Créé en 2009 par Ryan Dahl, Node.js a révolutionné le développement web en rendant possible l'utilisation de JavaScript en dehors des navigateurs, permettant ainsi aux développeurs de construire des applications web complètes (backend et frontend) avec un seul langage. Son architecture asynchrone et orientée événements en fait un choix idéal pour des applications qui nécessitent une gestion efficace des connexions simultanées, comme les serveurs web ou les API REST.
L'un des avantages majeurs de Node.js est sa capacité à gérer un grand nombre de connexions simultanées avec une faible empreinte mémoire, grâce à son modèle non-bloquant et sa boucle d'événements. Contrairement aux serveurs traditionnels qui allouent un thread par connexion, Node.js fonctionne sur un seul thread et gère les requêtes via des callbacks, ce qui permet une grande scalabilité sans surcharger les ressources du serveur. Cette approche est particulièrement adaptée aux applications en temps réel, comme les chats en ligne, les jeux multijoueurs ou encore les plateformes de streaming vidéo.
Enfin, Node.js bénéficie d’un écosystème riche et actif, notamment grâce à npm (Node Package Manager), qui permet d'accéder à des millions de modules open-source pour accélérer le développement. Que ce soit pour la gestion des bases de données, la sécurisation des applications, ou encore la création de microservices, la communauté Node.js offre un large éventail d'outils prêts à l’emploi. Grâce à sa popularité croissante, Node.js est désormais utilisé par des entreprises de toutes tailles, allant des startups aux géants de la technologie comme Netflix, LinkedIn et PayPal.
Backbone.js est une bibliothèque JavaScript légère, conçue pour structurer le code des applications web en leur apportant une architecture MVC (Modèle-Vue-Contrôleur). Créée par Jeremy Ashkenas en 2010, Backbone.js permet de mieux organiser les données et la logique d'une application en les séparant des interfaces utilisateur, facilitant ainsi le développement et la maintenance des projets complexes côté client. Elle repose sur une gestion des événements efficace, permettant de créer des applications interactives et réactives.
Le principal atout de Backbone.js est sa simplicité et sa flexibilité. Plutôt que d'imposer un cadre strict, comme d'autres frameworks, Backbone fournit juste les outils essentiels pour organiser les données sous forme de modèles, et les synchroniser avec le serveur via des collections. Les vues dans Backbone.js sont responsables de la mise à jour de l'interface utilisateur en réponse aux changements de ces modèles, ce qui permet de maintenir le code propre et facile à maintenir. Cette approche modulaire est idéale pour des applications nécessitant des interactions complexes sans la lourdeur d'un framework complet.
En outre, Backbone.js s’intègre bien avec d'autres bibliothèques, notamment Underscore.js (qui est une de ses dépendances), et peut être couplé à des frameworks comme Marionette.js pour ajouter des fonctionnalités supplémentaires. Malgré l'émergence de bibliothèques plus modernes comme React ou Vue.js, Backbone reste pertinent pour les projets nécessitant une architecture légère et modulable, avec un contrôle total sur la structure de l'application.
CreateJS est un ensemble de bibliothèques JavaScript open-source conçu pour faciliter le développement d'animations, d'interactions graphiques et de contenus multimédias sur le web. Il regroupe plusieurs modules comme EaselJS pour le rendu graphique basé sur le canevas HTML5, TweenJS pour gérer les animations, SoundJS pour la gestion audio, et PreloadJS pour le chargement de ressources. Ensemble, ces bibliothèques permettent de créer des expériences interactives riches et fluides, adaptées à divers appareils et plateformes sans avoir recours à des technologies comme Flash.
L'un des principaux avantages de CreateJS est sa simplicité d'utilisation et sa flexibilité, ce qui le rend accessible aux développeurs souhaitant ajouter des animations et des médias interactifs à leurs projets web. Chaque module peut être utilisé indépendamment ou combiné avec les autres, en fonction des besoins du projet. CreateJS est particulièrement apprécié dans le domaine des jeux en ligne, des animations interactives, ainsi que pour le développement de bannières publicitaires animées et autres contenus graphiques dynamiques. Sa compatibilité avec le canevas HTML5 permet des performances optimisées, même pour des applications complexes.
LitElement est une bibliothèque JavaScript légère et rapide, conçue pour faciliter la création de composants Web personnalisés basés sur les spécifications des Web Components. Développée par l'équipe de Google, elle repose sur l'idée de simplifier le processus de création de composants réutilisables et modifiables, tout en offrant des performances optimisées. LitElement utilise une syntaxe déclarative pour définir des templates HTML, ce qui permet aux développeurs d'écrire des composants modulaires, encapsulés et faciles à maintenir, avec une gestion efficace de la mise à jour du DOM (Document Object Model).
L'un des principaux avantages de LitElement est son approche minimaliste et performante, avec une empreinte très réduite, tout en prenant en charge les fonctionnalités modernes comme la réactivité des données et le rendu efficace des éléments. LitElement est conçu pour s'intégrer facilement à des projets complexes sans ajouter de surcharge inutile, ce qui en fait un excellent choix pour les développeurs cherchant à améliorer les performances de leurs applications. Grâce à sa compatibilité native avec les standards des Web Components, les composants créés avec LitElement peuvent être utilisés dans n'importe quelle application JavaScript, quel que soit le framework utilisé (comme React ou Vue), offrant ainsi une grande flexibilité.
NX est un ensemble d'outils open-source conçu pour faciliter le développement de monorepo, c'est-à-dire un dépôt unique qui regroupe plusieurs projets ou packages. Développé par Nrwl, NX permet aux équipes de développement de gérer efficacement des applications complexes, tout en favorisant la réutilisation du code et la collaboration entre différents modules. Grâce à une architecture modulaire, NX offre une gestion optimisée des dépendances et des fonctionnalités de cache pour améliorer les performances des builds et des tests. Cela permet aux développeurs de se concentrer sur la création de nouvelles fonctionnalités sans avoir à se soucier des configurations complexes.
Une des principales caractéristiques d’NX est son intégration fluide avec des frameworks populaires comme Angular, React et NestJS. Il fournit des outils avancés pour la génération de code, la gestion des bibliothèques et la mise en place de flux de travail personnalisés. De plus, NX prend en charge des fonctionnalités telles que la vérification des dépendances, la surveillance des changements et l'exécution sélective des tests, ce qui améliore l'efficacité des équipes travaillant sur de grands projets. En facilitant la gestion des monorepos, NX contribue à une meilleure organisation du code et à une réduction des temps de développement, tout en promouvant des pratiques de développement modernes.
Storybook est un outil open-source utilisé pour développer, tester et documenter des composants d'interface utilisateur de manière isolée. Conçu pour s'intégrer facilement avec des frameworks populaires comme React, Vue, Angular et Svelte, Storybook permet aux développeurs de construire et de visualiser des composants en dehors du contexte de l'application principale. Cela facilite le développement en permettant aux équipes de se concentrer sur des composants individuels, de tester leurs variations et d'assurer leur bon fonctionnement sans nécessiter le chargement complet de l'application.
L'un des principaux avantages de Storybook est sa capacité à servir de documentation vivante pour les composants d'interface utilisateur. Chaque composant peut être présenté avec différentes propriétés et états dans une interface utilisateur interactive, offrant ainsi une vue d'ensemble complète des possibilités d'utilisation. De plus, Storybook favorise la collaboration entre les équipes de développement et de design, en permettant aux concepteurs de visualiser et de tester les composants directement, ce qui améliore la cohérence et la qualité des interfaces. Grâce à son écosystème riche de plugins et d'addons, Storybook peut également être étendu pour inclure des fonctionnalités comme des tests automatisés, des analyses de performance et des intégrations avec des outils de design.