De JavaScript ES5 à ES2017
- EcmaScript : évolution et "roadmap".
- ES5, rappel des bonnes pratiques. Etablir les règles de programmation.
- ES5 ''use strict" et méthodes moins connues.
- API issues de la communauté JavaScript.
- Support courant pour ES6 : compilateurs, polifylls, navigateurs serveurs.
- Environnement et outils pour le développeur.
Travaux pratiques
Vous programmerez, à partir d'exemples fournis, un micro framework applicatif JavaScript.
Evolutions syntaxiques fondamentales
- Constantes et variables de bloc. Assignation destructurée.
- Chaînes de caractères : multiligne, template, formatage.
- Fonction, paramètres par défaut, opérateurs "rest/spread".
- "Arrow Function" : portée lexicale. Usages.
- Fonction génératrice : "yield" et "generator object".
- Fonction itératrice : "iterator".
- Objet littéral : évolution.
Travaux pratiques
Migration du code vers ES6.
POO, nouveautés pour la conception Objet
- Modèles de classe et héritage. Méthodes statiques.
- Création de "proxy". Design pattern.
- Nouveaux types : Set, Weakset, Map, Weakmap.
- Objets natifs héritables.
Travaux pratiques
Organisation et structuration du code pour une approche Objet par classe. Révision des "Design Pattern".
Nouvelles API JavaScript avec ES6
- Promise, async/await : gestion des traitements asynchrones.
- Object.API : revisiter les méthodes.
Travaux pratiques
Développement d'un service de données Ajax utilisant l'API des Promise.
Modules JavaScript
- Asynchronous Module Definition ou CommonJS.
- Système natif de gestion des modules.
- Gestion et résolution des dépendances.
- Chargement dynamique.
Travaux pratiques
Structurer son développement par modules.
Mise en production
- Stratégie : "transpiler", "package manager" et système de module.
- Choix du "transpiler" : présentation des solutions (Traceur, Babel).
- Typage : mise en œuvre de TypeScript, Flow.
- Pourquoi "packager" son code ? Avantages et solutions.
- Création de package avec npm, bower et jspm.
- Choisir entre RequireJS, Browserify, WebPack et SystemJS.
- Interactions avec les autres outils (linting, test...).
Travaux pratiques
Création et intégration de package dans le développement.