Ce support est un guide complet destiné aux développeurs web disposant de bases en programmation et d’une compréhension élémentaire des concepts JavaScript, qui souhaitent apprendre à développer des applications web full stack modernes à l’aide de la stack MEAN (MongoDB, Express, Angular, Node.js). L’auteur commence par une étude approfondie de JavaScript, couvrant les bases du langage telles que les variables, les boucles, les fonctions et les objets. Le langage TypeScript, extension...
Ce support est un guide complet destiné aux développeurs web disposant de bases en programmation et d’une compréhension élémentaire des concepts JavaScript, qui souhaitent apprendre à développer des applications web full stack modernes à l’aide de la stack MEAN (MongoDB, Express, Angular, Node.js).
L’auteur commence par une étude approfondie de JavaScript, couvrant les bases du langage telles que les variables, les boucles, les fonctions et les objets. Le langage TypeScript, extension améliorant la maintenabilité du code avec un typage statique, est également introduit.
Les chapitres suivants se concentrent sur Node.js et MongoDB, expliquant l’installation, la configuration et l’utilisation de ces technologies pour créer des applications serveur robustes et gérer des bases de données NoSQL.
Le support explore également Angular en détaillant les concepts fondamentaux tels que les modules, les composants, les modèles, la liaison de données et les directives, ainsi que l’intégration d’un serveur Node.js dans une application Angular. Le routage d’Angular est également abordé en détail, expliquant la configuration de la navigation entre différentes vues et composants de l’application.
Enfin, le support couvre les tests, guidant les lecteurs à travers le processus de test des applications Angular et Node.js avec des frameworks tels que Jasmine et Jest, ainsi que le déploiement des applications en production.
Avec ce support, le lecteur aura toutes les cartes en main pour apprendre, tester et approfondir ses connaissances sur le développement web full stack avec la stack MEAN.
Introduction
1. Préambule
2. La stack MEAN
3. L’importance d’Angular
4. La différence entre Angular et AngularJS
JavaScript
1. Pourquoi JavaScript ?
2. ECMAScript 6
3. Comment programmer en JavaScript ?
4. Rappel des bases
4.1 Les variables
4.2 Les boucles
4.3 Les tableaux
4.4 Les objets
4.5 Les types internes
4.6 Le transtypage
4.7 Les expressions régulières
4.8 Les blocs d’instructions
4.9 Les structures
4.9.1 Les structures de données usuelles
4.9.2 La structure conditionnelle
4.9.3 La structure switch
4.9.4 Les structures itératives
5. Les méthodes avancées
5.1 Les promesses
5.2 async/await
5.3 .map()
5.4 .filter()
5.5 .reduce()
5.6 .includes()
5.7 .startsWith() et .endsWith()
6. La programmation objet en JavaScript
6.1 Le principe de la programmation objet
6.2 Les factory functions
6.3 La propriété prototype et son chaînage
7. Conclusion
TypeScript
1. Le langage TypeScript
2. Les différences avec JavaScript
3. Le transpiler et son utilité
4. Les types
4.1 Les types de base
4.2 Le typage de variables non scalaires
4.3 Le type enum
4.4 Le type générique any
4.5 Le typage des fonctions
5. Les fonctions
5.1 Définir une fonction
5.2 Les paramètres et la valeur de retour
5.3 La fonction anonyme
5.4 La fonction Constructor
6. Les classes
6.1 La création d’une classe
6.2 La création d’une instance d’objets
6.3 L'accessibilité
6.4 L'héritage et son extension
6.5 La surcharge « override »
7. Les interfaces
7.1 Définir une interface
7.2 Le comportement d’une interface
8. Les décorateurs
9. Conclusion
Node.js
1. Présentation
2. L’installation de Node.js 18
2.1 Sous Ubuntu
2.2 Sous Windows
2.3 Sous Mac
3. Les modules
3.1 La notion de module
3.2 Le gestionnaire de module npm
3.3 npmjs.com
3.4 package.json
4. La création du premier serveur Node.js
4.1 Fastify
4.2 Express
4.3 Choisir entre Fastify et Express
4.4 Les protocoles REST
4.4.1 La création des routes REST
4.4.2 La consultation d’une ressource via la méthode GET
4.5 Le module FS (FileSystem)
5. Les middlewares
5.1 La notion de middleware
5.2 La création d’un middleware de journalisation d’événements (log)
6. La mise en place HTTPS
7. Conclusion
MongoDB
1. Qu’est-ce que MongoDB ?
2. Pourquoi utiliser un SGBD NoSQL et MongoDB ?
3. Les fonctionnalités de MongoDB
4. Les collections et les documents
4.1 Les collections
4.2 Les documents
5. Les index
6. L’installation de MongoDB
6.1 Sous Ubuntu
6.2 Sous Windows
6.3 Sous Mac
7. L’utilisation de MongoDB en ligne de commande
8. La création et l’insertion de documents dans une collection
9. L’importation et l’exportation de documents
10. L’interrogation d'une collection
10.1 Les différentes méthodes d’interrogation
10.2 La recherche des documents selon certains critères
10.3 Les opérateurs de comparaison, logiques et ensemblistes
11. La recherche des documents grâce aux expressions régulières
12. Le référencement des documents et jointures
12.1 Les différentes méthodes de référencement des documents
12.2 Les objets imbriqués
12.3 Les jointures
13. La mise à jour et la suppression d'un document
14. Conclusion
Connexion entre MongoDB et Node.js
1. Implémenter le CRUD avec Node.js et MongoDB
2. Mongoose
3. La création d’un projet de test
3.1 La création d'une application avec Node.js et MongoDB
3.2 La connexion au serveur MongoDB depuis Node.js
3.3 L’insertion et l’interrogation de données à partir d'un serveur Node.js
3.4 Les méthodes find() et toArray()
3.5 La synchronisation des requêtes
3.6 Les fonctions de callback et le module async
4. L’interrogation de MongoDB via les routes gérées par Express
4.1 La structure d'un serveur Node.js interrogeant MongoDB
4.2 Le CORS
4.3 Les exemples de gestion de routes
4.4 La création d'une collection de produits et la recherche sur les produits
5. Conclusion
Angular
1. Angular, un framework applicatif moderne
1.1 Angular, une évolution radicale par rapport à AngularJS
1.2 La modularité des applications Angular
1.2.1 Des modules pour organiser le code
1.2.2 Des composants et des services pour créer des fonctionnalités
1.3 Manipuler les composants comme des balises HTML
1.4 Développement d'applications Angular en TypeScript
2. La mise en place d'une application Angular
2.1 L’installation d'Angular CLI
2.2 La création du projet Angular avec Angular CLI
2.3 La structure des dossiers du projet Angular
2.4 La mise à jour du projet Angular via Angular CLI
2.5 Générer du code JavaScript dans une application Angular
3. Les décorateurs en Angular : une fonctionnalité essentielle pour améliorer les composants
4. La création d’un nouveau composant
4.1 Créer un premier composant avec Angular
4.2 Le composant racine de l'application Angular
4.3 Intégrer un nouveau composant dans le composant racine de l'application Angular
5. Le cycle de vie d'un composant dans Angular
5.1 Les principaux hooks
5.1.1 ngOnChanges()
5.1.2 ngOnInit()
5.1.3 ngDoCheck()
5.1.4 ngOnDestroy()
5.2 Encore plus de hooks
5.2.1 Les hooks personnalisés
5.2.2 Les hooks de test
5.2.3 Les hooks de validation
5.2.4 Les hooks de sécurité
5.2.5 Les hooks de performance
6. Les templates
6.1 L’imbrication des templates
6.2 Les templates externalisés
7. Data bindings entre le composant et le template
7.1 Accès aux éléments du DOM
7.2 Interpolation d'une variable dans un template
7.3 Property binding
7.4 Event binding
7.5 Two-way data binding
8. Les directives
8.1 Les directives structurelles
8.1.1 La directive ngFor
8.1.2 La directive ngIf
8.2 Les directives attributs
8.2.1 La directive ngClass
8.2.2 La directive ngStyle
9. Conclusion
Intégration d’un serveur Node.js avec Angular
1. La notion de client-serveur entre Angular et Node.js
2. Le module HttpClientModule
3. La mise en place d’un environnement de test entre Angular et Node.js
3.1 La création d’un projet Node.js simple
3.2 La création de la base de l'application Angular
3.2.1 L’intégration du module HttpClientModule
3.2.2 Le requêtage du serveur Node.js
4. Conclusion
Angular : Routage
1. À quoi sert le routage ?
2. La différence entre routage Node.js et routage Angular
3. La mise en place d’un routage
3.1 Le tag
3.2 Le module @angular/router
3.3 La création d’une route de navigation
3.4 La directive
4. Le lazy loading
4.1 L’intérêt d’un lazy loading
4.2 La mise en place du lazy loading
4.3 La stratégie de préchargement (preloading strategy)
4.4 La mise en place de la stratégie de préchargement
5. Les route guards : la police du routage
5.1 Mise en garde
5.2 La méthode canActivate
5.3 La méthode canDeactivate
6. Conclusion
Tests et mise en production
1. Tests Angular
1.1 Le framework de test Jasmine
1.2 Les différents types de tests
1.2.1 La couverture de code (code coverage)
1.2.2 Tester un service Angular
1.2.3 Tester un composant Angular
1.3 La création d’un test avec Jasmine
2. Tests Node.js
2.1 Le framework de test Jest
2.2 La création d’un test avec Jest
3. L’introduction à l’approche TDD
3.1 Explication et exemple
3.2 Quelques recommandations
4. Le déploiement
4.1 La commande CLI ng build
4.2 La mise en production d’une application Node.js
4.3 L’hébergement sur Apache
5. Conclusion
Conclusion
Index
Patrice MALDI
Patrice MALDI est un développeur Backend spécialisé dans Node.js, cumulant une riche expérience dans divers environnements métier. Son profil polyvalent englobe les compétences de développeur, d'administrateur système et de chef de projet, acquises aussi bien auprès de grandes entreprises que de startups. Actuellement, il consacre une partie de son temps à la formation et à l'accompagnement personnalisé de personnes désireuses de se tourner vers les métiers du développement web, témoignant ainsi de son engagement envers le partage des connaissances.