188
09/06/2016 1 Formation JavaScript avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com avancé JavaScript, Frédéric GAURAT Développeur et Formateur Consultant indépendant

Alphorm.com Support de la Formation JavaScript , avancé

Embed Size (px)

Citation preview

Page 1: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

1

Formation JavaScript avancé alphorm.com™©

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

avancé

JavaScript,

Frédéric GAURATDéveloppeur et FormateurConsultant indépendant

Page 2: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

2

Formation JavaScript avancé alphorm.com™©

Plan

• Présentation du formateur

• Les autres formations sur Alphorm

• Le plan de formation

• Présentation des outils

• Les publics concernés

Page 3: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

3

Formation JavaScript avancé alphorm.com™©

Présentation du formateur

Frédéric GAURAT

Développeur et formateur indépendant

• Compétences

� Web Front : HTML5/CSS3, JavaScript, Angular

� Web Back : PHP, Symfony, CakePHP, JEE

� Mobile : Android, Cordova/PhoneGap/Ionic

• Mes références

� Site : www.eolem.com

� Profil Alphorm : http://www.alphorm.com/formateur/frederic-gaurat

Page 4: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

4

Formation JavaScript avancé alphorm.com™©

Les autres formations sur Alphorm

Page 5: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

5

Formation JavaScript avancé alphorm.com™©

Cursus formations JavaScript

JavaScript,Avancé

DARTTests

Unitaires

JavaScript, les fondamentaux

CoffeeScriptTests

fonctionnels

TypeScript

AngularJS 2,les fondamentaux

AngularJS 2, Avancé

Page 6: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

6

Formation JavaScript avancé alphorm.com™©

Le plan de formation

• Présentation de la formation

• Utilisation avancée des Fonctions

• Programmation Orienté Objet en JavaScript

• Programmation asynchrones

• Les tasks runner

• Programmation Modulaire

• Le futur de JavaScript

Page 7: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

7

Formation JavaScript avancé alphorm.com™©

Le plan de formation

• Présentation de la formation

• Utilisation avancée des Fonctions

• Programmation Orienté Objet en JavaScript

• Programmation asynchrones

• Les tasks runner

• Programmation Modulaire

• Le futur de JavaScript

Page 8: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

8

Formation JavaScript avancé alphorm.com™©

Présentation des outils

Les éditeurs• SublimeText• Atom• Microsoft Visual Studio Code• NotePad++• jsfiddle.net

Les navigateurs• Chrome• Firefox• Internet Explorer

Page 9: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

9

Formation JavaScript avancé alphorm.com™©

Les publics concernés

• Les développeurs et chefs de projets qui souhaitent approfondir leurs connaissances de JavaScript.

Page 10: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

10

Formation JavaScript avancé alphorm.com™©

JavaScript Avancé

C’est parti !

Page 11: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

11

Formation JavaScript avancé alphorm.com™©

Les différents types de fonction

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Utilisation avancée des Fonctions

Frédéric GAURATDéveloppeur et FormateurConsultant indépendant

Page 12: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

12

Formation JavaScript avancé alphorm.com™©

Plan

• Rappel sur les fonctions

• Les fonctions anonymes

• Les fonctions callbacks

• Les fonctions immédiates

• Les fonctions internes

• Les scopes

• Les closures

Page 13: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

13

Formation JavaScript avancé alphorm.com™©

Rappel sur les fonctions

• Les fonctions permettent de factoriser du code pour permettre une réutilisation

Page 14: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

14

Formation JavaScript avancé alphorm.com™©

Les fonctions anonymes

• Une fonction anonyme est une fonction qui n’a pas de nom

• Très peu utilisée de cette façon, on préfère :

Page 15: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

15

Formation JavaScript avancé alphorm.com™©

Les fonctions callbacks

• Les fonctions sont typées comme des variables

• On peut donc les passer en paramètre

Page 16: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

16

Formation JavaScript avancé alphorm.com™©

Les fonctions immédiates (Self-invoking)

• Les fonctions immédiates sont une application des fonctions anonymes, mais appelées directement après leurs créations

Page 17: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

17

Formation JavaScript avancé alphorm.com™©

Les fonctions internes (Inner)

• Les fonctions sont typées comme des variables

• On peut donc les déclarer dans une fonction comme de simples variables

Page 18: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

18

Formation JavaScript avancé alphorm.com™©

Les scopes

http://www.basing.com/books/javascript/how-variable-scope-works-in-javascript/2

Page 19: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

19

Formation JavaScript avancé alphorm.com™©

Les closures

http://www.c-sharpcorner.com/UploadFile/dhananjaycoder/what-is-closure-in-javascript/

Page 20: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

20

Formation JavaScript avancé alphorm.com™©

Ce qu’on a couvert

• Rappel sur les fonctions

• Les principales structures de fonctions

• Rapide présentation des scopes et closures

Page 21: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

21

Formation JavaScript avancé alphorm.com™©

Les fonctions anonymes

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Utilisation avancée des Fonctions

Frédéric GAURATDéveloppeur et FormateurConsultant indépendant

Page 22: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

22

Formation JavaScript avancé alphorm.com™©

Plan

• Les fonctions anonymes

• Exemple

• Mise en situation

Page 23: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

23

Formation JavaScript avancé alphorm.com™©

Les fonctions anonymes

• Structure fondamentale

• Elles permettent d’isoler des variables dans un contexte local

• Elles permettent de simuler un namespace ou packages

Page 24: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

24

Formation JavaScript avancé alphorm.com™©

Examples

• Déclaration de base :

• Mais peu pratique alors on stocke dans une variable :

Page 25: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

25

Formation JavaScript avancé alphorm.com™©

Mise en situation

• Première approche pour la réalisation d’un namespace ou package

Page 26: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

26

Formation JavaScript avancé alphorm.com™©

Ce qu’on a couvert

• Les fonctions anonymes

• Exemple

• Mise en situation

Page 27: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

27

Formation JavaScript avancé alphorm.com™©

Les fonctions callbacks

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Utilisation avancée des Fonctions

Frédéric GAURATDéveloppeur et FormateurConsultant indépendant

Page 28: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

28

Formation JavaScript avancé alphorm.com™©

Plan

• Les fonctions callbacks

• Exemple

• Mise en situation

Page 29: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

29

Formation JavaScript avancé alphorm.com™©

Les fonctions callbacks

• Egalement nommée fonction de rappel

• Elles sont exécutées au « bon moment »

• Elles sont souvent utilisées pour de l’évènementiel ou de l’Ajax

Page 30: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

30

Formation JavaScript avancé alphorm.com™©

Exemple

• Fonction callback appelée lors du chargement de la page

Page 31: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

31

Formation JavaScript avancé alphorm.com™©

Mise en situation

• CallBack et contexte d’exécution

Mauvaise méthode Bonne méthode

Page 32: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

32

Formation JavaScript avancé alphorm.com™©

Ce qu’on a couvert

• Les fonctions callbacks

• Un exemple simple d’utilisation

• Mise en situation pratique qui intègre une fonction anonyme

Page 33: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

33

Formation JavaScript avancé alphorm.com™©

Les fonctions immédiates

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Utilisation avancée des Fonctions

Frédéric GAURATDéveloppeur et FormateurConsultant indépendant

Page 34: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

34

Formation JavaScript avancé alphorm.com™©

Plan

• Les fonctions immédiates

• Exemple

• Mise en situation

Page 35: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

35

Formation JavaScript avancé alphorm.com™©

Les fonctions immédiates (Self-invoking)

• Autre cas d’utilisation des fonctions anonymes

• Permet la limitation de la portée des variables tout en exécutant du code

Page 36: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

36

Formation JavaScript avancé alphorm.com™©

Exemple

• Fonction anonyme normale :

• Fonction anonyme auto-appelée :

Page 37: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

37

Formation JavaScript avancé alphorm.com™©

Mise en situation

• Fonction immédiate avec passage de paramètre

Page 38: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

38

Formation JavaScript avancé alphorm.com™©

Ce qu’on a couvert

• Les fonctions immédiates

• Exemple simple

• Mise en situation d’une fonction immédiate avec passage de paramètre

Page 39: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

39

Formation JavaScript avancé alphorm.com™©

Les fonctions internes

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Utilisation avancée des Fonctions

Frédéric GAURATDéveloppeur et FormateurConsultant indépendant

Page 40: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

40

Formation JavaScript avancé alphorm.com™©

Plan

• Les fonctions internes

• Exemple

• Mise en situation

Page 41: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

41

Formation JavaScript avancé alphorm.com™©

Les fonctions internes (Inner)

• Les fonctions sont des variables typées donc stockables dans une fonction !

• Elle peuvent servir pour déclarer des fonctions privées

Page 42: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

42

Formation JavaScript avancé alphorm.com™©

Exemple

• Dans cet exemple MultPar2 n’est pas accessible.

Page 43: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

43

Formation JavaScript avancé alphorm.com™©

Mise en situation

• Cas d’une fonction interne renvoyée par un return

Page 44: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

44

Formation JavaScript avancé alphorm.com™©

Ce qu’on a couvert

• Les fonctions internes

• Un exemple simple

• Cas d’un retour de fonction

Page 45: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

45

Formation JavaScript avancé alphorm.com™©

Les Scopes

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Utilisation avancée des Fonctions

Frédéric GAURATDéveloppeur et FormateurConsultant indépendant

Page 46: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

46

Formation JavaScript avancé alphorm.com™©

Plan

• Les scopes

• Exemple

• Mise en situation

Page 47: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

47

Formation JavaScript avancé alphorm.com™©

Les scopes

• En JavaScript, les portées sont définies par des fonctions et seulement par des fonctions

• Le « hoisting » vous assure qu’une variable déclarée tard dans le code sera remontée dans sa portée.

Page 48: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

48

Formation JavaScript avancé alphorm.com™©

Exemple

• Différences de portée de variable

Page 49: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

49

Formation JavaScript avancé alphorm.com™©

Mise en situation

• Le hoisting

• Dans ce cas ‘var b’ est remonté

• La syntaxe use-strict impose une rigueur de codage (utilisation de ‘var’ obligatoire par exemple)

Page 50: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

50

Formation JavaScript avancé alphorm.com™©

Mise en situation (suite)

• Le hoisting

• Dans ce cas ‘var b’ est remonté mais pas b=2, le résultat est NaN

Page 51: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

51

Formation JavaScript avancé alphorm.com™©

Mise en situation (suite)

• Le hoisting pour les fonctions

• Pas d’erreurs dans Chrome, en revanche ça ne fonctionne pas dans Firefox

Page 52: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

52

Formation JavaScript avancé alphorm.com™©

Ce qu’on a couvert

• Les scopes, le hoisting

• Exemple

• Mise en situation du hoisting sur variables et fonctions

Page 53: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

53

Formation JavaScript avancé alphorm.com™©

Les closures

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Utilisation avancée des Fonctions

Frédéric GAURATDéveloppeur et FormateurConsultant indépendant

Page 54: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

54

Formation JavaScript avancé alphorm.com™©

Plan

• Les closures

• Exemple

• Mise en situation

Page 55: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

55

Formation JavaScript avancé alphorm.com™©

Les closures

• La notion de closure est associée à la notion de portée de variable

• Une variable est « enfermée » dans sa fonction ( sa portée)

• Une fonction définie dans la même fonction (portée) va se « souvenir » de cette variable

https://developer.mozilla.org/fr/docs/Web/JavaScript/Closures

Page 56: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

56

Formation JavaScript avancé alphorm.com™©

Les closures

• afficheNom() va se souvenir de la variable ‘nom’ déclarée dans la portée.

Page 57: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

57

Formation JavaScript avancé alphorm.com™©

Mise en situation

• Ici, on stocke un tableau contenant le nom des jours.

• Dans ce cas le tableau n’est créé qu’une seule fois, pas de multiplication de ce tableau en mémoire

Page 58: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

58

Formation JavaScript avancé alphorm.com™©

Ce qu’on a couvert

• Les closures

• Exemple d’utilisation

• Mise en situation illustrant une optimisation de l’utilisation mémoire

Page 59: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

59

Formation JavaScript avancé alphorm.com™©

Rappel sur les objets

POO en JavaScript

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Frédéric GAURATDéveloppeur et FormateurConsultant indépendant

Page 60: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

60

Formation JavaScript avancé alphorm.com™©

Plan

•Les objets en JavaScript

•Des tableaux aux objets

•Accès aux propriétés

Page 61: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

61

Formation JavaScript avancé alphorm.com™©

Les objets en JavaScript

• Objet : ensemble de propriétés.

• Propriété : association entre un nom (ou clé) et une valeur.

• Cas particulier :

� Si la propriété est une fonction alors la propriété peut être appelée « méthode ».

Page 62: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

62

Formation JavaScript avancé alphorm.com™©

Des tableaux aux objets

• Cas des tableaux

• Pour accéder à un élément on utilise son index (sa clé numérique)

Page 63: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

63

Formation JavaScript avancé alphorm.com™©

Des tableaux aux objets (suite)

• JavaScript ne supporte pas les tableaux associatifs

• Pour implémenter un tableau associatif, on passe par un objet :

Page 64: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

64

Formation JavaScript avancé alphorm.com™©

Accès aux propriétés

• On utilise la notation « pointée »

Page 65: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

65

Formation JavaScript avancé alphorm.com™©

Ce qu’on a couvert

• Rappel sur les objets en JavaScript

• Comparaison des syntaxes des tableaux et des objets

• L’accès aux propriétés

Page 66: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

66

Formation JavaScript avancé alphorm.com™©

Rappel sur les prototypes

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

POO en JavaScript

Frédéric GAURATDéveloppeur et FormateurConsultant indépendant

Page 67: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

67

Formation JavaScript avancé alphorm.com™©

Plan

•Présentation de la notion de prototype

•Exemples

Page 68: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

68

Formation JavaScript avancé alphorm.com™©

Présentation de la notion de prototype

• En JavaScript, chaque objet à un prototype

• Le prototype est une propriété de cet objet

• Le prototype lui-même est un objet

• Tous les objets JavaScript héritent leurs méthodes de leurs prototypes

Page 69: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

69

Formation JavaScript avancé alphorm.com™©

Notation litéral

• La propriété __proto__ donne un accès au prototype de l’objet

Page 70: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

70

Formation JavaScript avancé alphorm.com™©

Notation avec constructeur

• Peu importe la façon de créer l’objet (littéral ou avec constructeur)

Page 71: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

71

Formation JavaScript avancé alphorm.com™©

Ajout de propriétés et de méthodes

• JavaScript est dynamique, on peut ajouter des méthodes après déclaration et instanciation de l’objet.

Page 72: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

72

Formation JavaScript avancé alphorm.com™©

Ajout de propriétés et de méthodes (suite)

• En ajoutant propriétés et méthodes sur le prototype c’est l’ensemble des objets qui en bénéficient

Page 73: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

73

Formation JavaScript avancé alphorm.com™©

Ce qu’on a couvert

• Présentation de la notion de prototype

• Ajout de propriétés et méthodes sur un objet

• Ajout de propriétés et méthodes sur le prototype d’un objet

Page 74: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

74

Formation JavaScript avancé alphorm.com™©

Implémentation des constructeurs

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

POO en JavaScript

Frédéric GAURATDéveloppeur et FormateurConsultant indépendant

Page 75: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

75

Formation JavaScript avancé alphorm.com™©

Plan

• Présentation des fonctions comme constructeur d’objet

• La propriété constructor

• Exemples

Page 76: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

76

Formation JavaScript avancé alphorm.com™©

Fonctions comme constructeur d’objet

• JavaScript n’a pas de notion de classe.

• Pour construire un objet on passe par une fonction constructeur

• Le constructeur est appelé au moment de l’instanciation et toutes les opérations qui y sont déclarées sont exécutées

Page 77: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

77

Formation JavaScript avancé alphorm.com™©

La propriété constructor

• La propriété constructor renvoie la référence à la fonction utilisée pour créer le prototype de l’instance

Page 78: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

78

Formation JavaScript avancé alphorm.com™©

Exemple

• Utilisation d’un constructeur

Page 79: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

79

Formation JavaScript avancé alphorm.com™©

Exemple

• Affichage de la fonction utilisée pour construire l’objet

Page 80: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

80

Formation JavaScript avancé alphorm.com™©

Exemple

• Modifier un constructeur en utilisant la propriété constructor

• En réalité on ne change pas le constructeur mais seulement ce que renvoie la propriété constructor (il ne faut pas se fier à ce que renvoie constructor)

Page 81: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

81

Formation JavaScript avancé alphorm.com™©

Ce qu’on a couvert

• L’utilisation des fonctions constructeurs

• La propriété constructor

Page 82: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

82

Formation JavaScript avancé alphorm.com™©

Implémentation de l’encapsulation

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

POO en JavaScript

Frédéric GAURATDéveloppeur et FormateurConsultant indépendant

Page 83: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

83

Formation JavaScript avancé alphorm.com™©

Plan

• Encapsuler des propriétés et méthodes

• Simuler les propriétés et méthodes publics

• Simuler les propriétés et méthodes privates

Page 84: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

84

Formation JavaScript avancé alphorm.com™©

Encapsuler des propriétés et méthodes

• JavaScript ne dispose pas de moyens pour déclarer des propriétés ou méthodes public, private ou protected

• Pour simuler ce comportement nous allons exploiter le comportement normal de la déclaration de variable

Page 85: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

85

Formation JavaScript avancé alphorm.com™©

Simuler les propriétés et méthodes publics

• Pour déclarer des méthodes ou propriétés public ou utilise « this »

Page 86: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

86

Formation JavaScript avancé alphorm.com™©

Simuler les propriétés et méthodes privates

• Pour déclarer des méthodes ou propriétés privates ou utilise « var »

Page 87: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

87

Formation JavaScript avancé alphorm.com™©

Ce qu’on a couvert

• Les moyens de simuler les « privates » et « public » que l’on trouve dans d’autres langages.

Page 88: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

88

Formation JavaScript avancé alphorm.com™©

L’héritage en JavaScript

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

POO en JavaScript

Frédéric GAURATDéveloppeur et FormateurConsultant indépendant

Page 89: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

89

Formation JavaScript avancé alphorm.com™©

Plan

• Implémenter l’héritage en JavaScript

•Exemples

Page 90: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

90

Formation JavaScript avancé alphorm.com™©

Implémenter l’héritage en JavaScript

• L’héritage permet de créer des objets spécialisés à partir d’un autre objet. JavaScript s’appuie sur l’héritage unique.

• Pour implémenter l’héritage, on assigne une instance de l’objet parent à la propriété prototype de l’objet fils.

• On parle donc d’héritage de prototype et de « prototype chain »

• Pour éviter que le constructeur soit celui du parent on réassigne le constructeur à l’enfant.

Page 91: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

91

Formation JavaScript avancé alphorm.com™©

Exemple d’héritage

obj1

obj2

Page 92: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

92

Formation JavaScript avancé alphorm.com™©

Exemple d’héritage

Page 93: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

93

Formation JavaScript avancé alphorm.com™©

Ce qu’on a couvert

•La notion d’héritage de prototype en JavaScript

Page 94: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

94

Formation JavaScript avancé alphorm.com™©

Utilisation du « this »

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

POO en JavaScript

Frédéric GAURATDéveloppeur et FormateurConsultant indépendant

Page 95: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

95

Formation JavaScript avancé alphorm.com™©

Plan

•Définition et utilisation de « this »

•Exemples

Page 96: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

96

Formation JavaScript avancé alphorm.com™©

Définition et utilisation de « this »

• Le « this » est une référence à un objet (une fonction en JavaScript)

• La valeur de this est déterminée par la façon dont on appelle la fonction.

• Dans le contexte global : this fait référence à l’objet global

Page 97: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

97

Formation JavaScript avancé alphorm.com™©

Dans un contexte de fonction

• En mode non strict, this n’étant pas défini il prend l’objet global

• En mode strict, this n’étant pas défini il la valeur undefined

Page 98: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

98

Formation JavaScript avancé alphorm.com™©

Dans un contexte de méthode

• this est l’objet à qui appartient la méthode

Page 99: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

99

Formation JavaScript avancé alphorm.com™©

Dans un contexte de constructeur

• this représente l’objet nouvellement créée

Page 100: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

100

Formation JavaScript avancé alphorm.com™©

Dans un context asynchrone

• this prend la valeur au moment de l’éxécution du code asynchrone

Page 101: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

101

Formation JavaScript avancé alphorm.com™©

Ce qu’on a couvert

•Le mot clé this dans des contextes d’utilisations différents

Page 102: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

102

Formation JavaScript avancé alphorm.com™©

Le callback hell ou Pyramid of doom

Programmation asynchrones

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Frédéric GAURATDéveloppeur et FormateurConsultant indépendant

Page 103: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

103

Formation JavaScript avancé alphorm.com™©

Plan

• Définition du callback hell ou pyramid of doom

• Exemples

Page 104: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

104

Formation JavaScript avancé alphorm.com™©

Définition du callback hell

• Le callback hell apparait lorsqu’un développeur tente de synchroniser un code asynchrone.

Page 105: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

105

Formation JavaScript avancé alphorm.com™©

Ce qu’on a couvert

•La définition d’un callback hell

Page 106: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

106

Formation JavaScript avancé alphorm.com™©

Les Promesses

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Programmation asynchrones

Frédéric GAURATDéveloppeur et FormateurConsultant indépendant

Page 107: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

107

Formation JavaScript avancé alphorm.com™©

Plan

•Définition d’une promesse

•Exemples

Page 108: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

108

Formation JavaScript avancé alphorm.com™©

Définition d’une promesse

• Une promesse est utilisée pour réaliser des opérations asynchrone.

• Elle peut être dans un de ces états :

� en attente : état initial, la promesse n'est ni remplie, ni rompue

� tenue : l'opération a réussi

� rompue : l'opération a échoué

� acquittée : la promesse est tenue ou rompue mais elle n'est plus en attente.

https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise

Page 109: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

109

Formation JavaScript avancé alphorm.com™©

Exemple

• Nous souhaitons faire la somme de 2 entiers.

• Ces entiers seront calculés plus tard (on simule une requête serveur)

Page 110: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

110

Formation JavaScript avancé alphorm.com™©

Exemple du callback hell

• Pour synchroniser les traitements nous exécuterons les traitements l’un après l’autre.

Page 111: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

111

Formation JavaScript avancé alphorm.com™©

Exemple avec des promesses

• Etape 1 : on créée un objet Promise

• Etape 2 : on attend que la promesse soit tenue (resolve) avec la méthode then

Page 112: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

112

Formation JavaScript avancé alphorm.com™©

Exemple avec des promesses

• Pour synchroniser les 2 traitements :

� Lorsqu’une promesse est résolue on enchaîne avec l’autre

Page 113: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

113

Formation JavaScript avancé alphorm.com™©

Exemple avec des promesses

• Pour synchroniser les traitements on peut passer par la méthode all() qui reçoit un tableau de promesses et qui sera résolue lorsque toutes les promesses du tableau le seront.

Page 114: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

114

Formation JavaScript avancé alphorm.com™©

Ce qu’on a couvert

• Le fonctionnement et l’utilisation des promesses

• Un exemple d’utilisation

Page 115: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

115

Formation JavaScript avancé alphorm.com™©

Présentation et tâches de base

Les tasks runner

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Frédéric GAURATDéveloppeur et FormateurConsultant indépendant

Page 116: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

116

Formation JavaScript avancé alphorm.com™©

Plan

•Les besoins des développeurs JavaScript

•Les outils

Page 117: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

117

Formation JavaScript avancé alphorm.com™©

Les besoins des développeurs JavaScript

JavaScript

Qualité du code

Minification

Production

CSS

Préprocesseur

LESS/Sass

Page 118: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

118

Formation JavaScript avancé alphorm.com™©

Les outils

• Exécuteurs de tâches

Page 119: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

119

Formation JavaScript avancé alphorm.com™©

Ce qu’on a couvert

•L’intérêts d’utiliser des exécuteurs de tâches

•Les principaux outils

Page 120: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

120

Formation JavaScript avancé alphorm.com™©

GruntJS

Les tasks runner

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Frédéric GAURATDéveloppeur et FormateurConsultant indépendant

Page 121: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

121

Formation JavaScript avancé alphorm.com™©

Plan

•Présentation de GruntJS

•Utilisation

Page 122: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

122

Formation JavaScript avancé alphorm.com™©

GruntJS

• GruntJS est un exécuteur de tâches

• Il s’appuie sur des plugins

• Ainsi que sur un fichier (GruntFile) pour configurer les plugins

Page 123: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

123

Formation JavaScript avancé alphorm.com™©

Installation

• L’installation se fait avec l’utilitaire npm

• L’interface grunt-cli

• L’outils est à installer directement dans votre projet

Page 124: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

124

Formation JavaScript avancé alphorm.com™©

Installation d’un plugin

• Pour une tâche de minification le plugin est uglify

� http://gruntjs.com/plugins pour la totalité de plugins

� https://www.npmjs.com/package/grunt-contrib-uglify pour le plugin uglify

• Installation du plugin

Page 125: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

125

Formation JavaScript avancé alphorm.com™©

Le fichier Gruntfile.js

• Structure de base

Page 126: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

126

Formation JavaScript avancé alphorm.com™©

Configuration d’un plugin

• Chargement du plugin

• Enregistrement de la tâche

Page 127: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

127

Formation JavaScript avancé alphorm.com™©

Configuration d’un plugin (suite)

Page 128: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

128

Formation JavaScript avancé alphorm.com™©

Ce qu’on a couvert

• L’exécuteur de tâche GruntJS

• L’installation

• L’installation et la configuration d’un plugin

Page 129: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

129

Formation JavaScript avancé alphorm.com™©

Frédéric GAURATFormateur et Consultant indépendant Ingénierie statistique et financière

GulpJS

Les tasks runner

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Page 130: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

130

Formation JavaScript avancé alphorm.com™©

Plan

•Présentation de GulpJS

•Utilisation de GulpJS

Page 131: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

131

Formation JavaScript avancé alphorm.com™©

GulpJS

• GulpJS est un exécuteur de tâches

• Il s’appuie sur des plugins

• Ainsi que sur un fichier (gulpfile.js) pour configurer les plugins

• Il se diffère de GruntJS dans son mode de fonctionnement :

� Grunt s’appuie sur des fichiers pour la réalisation des tâches

� GulpJS s’appuie sur des streams (des fluxs entre les tâches)

Page 132: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

132

Formation JavaScript avancé alphorm.com™©

Installation

•L’installation se fait avec l’utilitaire npm

Page 133: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

133

Formation JavaScript avancé alphorm.com™©

Installation d’un plugin

• Pour une tâche de minification le plugin est uglify

� http://gulpjs.com/plugins/ pour la totalité des plugins

� https://www.npmjs.com/package/gulp-uglify/ pour le plugin uglify

• Installation du plugin

Page 134: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

134

Formation JavaScript avancé alphorm.com™©

Le fichier gulpfile.js

Page 135: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

135

Formation JavaScript avancé alphorm.com™©

Configuration d’un plugin

• Installation du plugin

• Chargement du plugin

• Enregistrement de la tâche

Page 136: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

136

Formation JavaScript avancé alphorm.com™©

Configuration d’un plugin (suite)

Page 137: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

137

Formation JavaScript avancé alphorm.com™©

Ce qu’on a couvert

•L’exécuteur de tâche GulpJS

•L’installation

•L’installation et la configuration d’un plugin

Page 138: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

138

Formation JavaScript avancé alphorm.com™©

Frédéric GAURATFormateur et Consultant indépendant Ingénierie statistique et financière

Organiser son code et le rendre performant

Programmation modulaire

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Page 139: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

139

Formation JavaScript avancé alphorm.com™©

Plan

• Introduction à la programmation modulaire

• Rappel sur le pattern Module

• Les problèmes et les solutions

Page 140: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

140

Formation JavaScript avancé alphorm.com™©

La programmation modulaire

• En JavaScript il n’y a pas d’instruction pour créer des modules

• Il faut utiliser le pattern module

• Il n’y a pas de gestion de dépendance

• L’ensemble des scripts doivent être chargés au démarrage

Page 141: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

141

Formation JavaScript avancé alphorm.com™©

Le pattern module

• Le pattern module permet d’encapsuler du code comme un package ou namespace

• Il s’appuie sur une « Anonymous Closure »

� Permet la déclaration de variable privée

� Permet de maintenir l’état des variables

Page 142: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

142

Formation JavaScript avancé alphorm.com™©

Le pattern module (suite)

• Anonymous Closure

• Ajout d’une dépendance

Page 143: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

143

Formation JavaScript avancé alphorm.com™©

Le pattern module (suite)

• Module export

Page 144: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

144

Formation JavaScript avancé alphorm.com™©

Les problèmes

• Les modules sont des unités de code indépendant les uns des autres

• Ils sont stockés dans des fichiers distincts

• Difficile de gérer les dépendances

• Difficile de charger les fichiers au bon moment

Page 145: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

145

Formation JavaScript avancé alphorm.com™©

Les solutions

• Asynchronous module definition (AMD)

� Spécification JavaScript

� Définit une API pour décrire des modules, gérer leurs dépendances et les charger dynamiquement (éventuellement)

Page 146: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

146

Formation JavaScript avancé alphorm.com™©

Ce qu’on a couvert

•La programmation modulaire

•Le pattern module

•La spécification AMD

Page 147: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

147

Formation JavaScript avancé alphorm.com™©

Frédéric GAURATFormateur et Consultant indépendant Ingénierie statistique et financière

Utilisation de RequireJS

Programmation Modulaire

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Page 148: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

148

Formation JavaScript avancé alphorm.com™©

Plan

•Présentation de RequireJS

•Utilisation de RequireJS

Page 149: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

149

Formation JavaScript avancé alphorm.com™©

Présentation de RequireJS

• RequireJS est un outil permettant le chargement de fichiers et de modules JavaScript

•http://requirejs.org/

Page 150: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

150

Formation JavaScript avancé alphorm.com™©

Utilisation de RequireJS (initialisation)

• Chargement de RequireJS et de notre module principal

• Chargement de notre application

Page 151: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

151

Formation JavaScript avancé alphorm.com™©

Utilisation de RequireJS (utilisation)

• Définition du module

• Utilisation du module

Page 152: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

152

Formation JavaScript avancé alphorm.com™©

Ce qu’on a couvert

•Le framework RequireJS

•Définition de module

•Chargement et utilisation de notre module

Page 153: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

153

Formation JavaScript avancé alphorm.com™©

Frédéric GAURATFormateur et Consultant indépendant Ingénierie statistique et financière

CoffeeScript

Le Futur de JavaScript

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Page 154: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

154

Formation JavaScript avancé alphorm.com™©

Plan

•Le langage CoffeeScript

• Installation et utilisation

Page 155: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

155

Formation JavaScript avancé alphorm.com™©

Le langage CoffeeScript

• CoffeeScript est un langage permettant, après compilation de générer du JavaScript

• L’objectif est de permettre une utilisation simple de JavaScript

Page 156: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

156

Formation JavaScript avancé alphorm.com™©

Installation

• Le compilateur s’installe via npm :

• Il est possible de tester directement en ligne sur le site :

� http://coffeescript.org/ (‘Try Coffeescript’)

Page 157: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

157

Formation JavaScript avancé alphorm.com™©

Utilisation

• Appel de fonction

• Déclaration de fonction

Page 158: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

158

Formation JavaScript avancé alphorm.com™©

Utilisation

• Déclaration de fonction (suite)

• Déclaration de variable et portée lexicale

Page 159: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

159

Formation JavaScript avancé alphorm.com™©

Utilisation

• Les boucles

Page 160: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

160

Formation JavaScript avancé alphorm.com™©

Ce qu’on a couvert

•Une introduction à CoffeeScript

•Quelques exemples d’utilisation

Page 161: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

161

Formation JavaScript avancé alphorm.com™©

Frédéric GAURATFormateur et Consultant indépendant Ingénierie statistique et financière

Dart

Le Futur de JavaScript

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Page 162: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

162

Formation JavaScript avancé alphorm.com™©

Plan

•Présentation de Dart

•Utilisation

Page 163: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

163

Formation JavaScript avancé alphorm.com™©

Présentation de Dart

• Langage de développement web (objet) proposé par Google

• Il a vocation à remplacer le JavaScript

• Pour le moment il permet d’obtenir du JavaScript après compilation

• Il peut tourner dans une VM côté serveur

• Il est testable en ligne : https://dartpad.dartlang.org

• Contrairement aux autres outils, il ne s’installe pas avec npm

• https://www.dartlang.org/downloads/

Page 164: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

164

Formation JavaScript avancé alphorm.com™©

Exemple

• Exemple HelloWorld

Page 165: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

165

Formation JavaScript avancé alphorm.com™©

Déclaration de variable

• Il est possible d’annoter les variables avec un type

Page 166: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

166

Formation JavaScript avancé alphorm.com™©

Déclaration de fonction

• Les type s’appliquent aussi aux fonctions et les déclarations sont soumises au compilateur

Page 167: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

167

Formation JavaScript avancé alphorm.com™©

Déclaration de classe

• La déclaration de classe se fait de la même façon qu’en Java ou C#

Page 168: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

168

Formation JavaScript avancé alphorm.com™©

Ce qu’on a couvert

•Une introduction à Dart

•Quelques exemples d’utilisation

Page 169: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

169

Formation JavaScript avancé alphorm.com™©

Frédéric GAURATFormateur et Consultant indépendant Ingénierie statistique et financière

TypeScript

Le Futur de JavaScript

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Page 170: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

170

Formation JavaScript avancé alphorm.com™©

Plan

•Présentation de TypeScript

•Exemples d’utilisation

Page 171: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

171

Formation JavaScript avancé alphorm.com™©

Présentation de TypeScript

• TypeScript est un langage développé par Microsoft

• Il a pour but d’améliorer la production de code JavaScript

• Il intègre JavaScript (JavaScript est utilisable dans TypeScript)

• Il a été utilisé pour le développement d’Angular 2.

• Il est testable en ligne : http://www.typescriptlang.org/play/index.html

Page 172: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

172

Formation JavaScript avancé alphorm.com™©

Installation et utilisation

Page 173: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

173

Formation JavaScript avancé alphorm.com™©

Exemple

•Les variables sont typées

Page 174: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

174

Formation JavaScript avancé alphorm.com™©

Déclaration de class

Page 175: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

175

Formation JavaScript avancé alphorm.com™©

Ce qu’on a couvert

•Présentation de TypeScript

•Quelques exemples d’utilisation

Page 176: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

176

Formation JavaScript avancé alphorm.com™©

Frédéric GAURATFormateur et Consultant indépendant Ingénierie statistique et financière

ECMAScript6

Le Futur de JavaScript

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Page 177: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

177

Formation JavaScript avancé alphorm.com™©

Plan

•Présentation de ECMA

•Présentation de ECMAScript6

•Exemples d’utilisation

Page 178: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

178

Formation JavaScript avancé alphorm.com™©

Présentation de ECMA

• ECMA (European Computer Manufacturers Association) est une organisation de standardisation.

• Elle est à l’origine des standards pour Dart (ECMA-408)

• ECMAScript (ECMA-262) mis en œuvre dans : ActionScript(Adobe), JavaScript, C++ (norme 2011).

Page 179: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

179

Formation JavaScript avancé alphorm.com™©

Présentation de ECMAScript6

• Aussi nommée ECMSScript 2015 (sortie en Juin 2015)

• N’est pas encore supporté par les navigateurs du moment.

• Il est possible de passer par transcompilateur (compilateur de source à source) pour transformer l’ECMAScript6 en ECMAScript5 avec http://babeljs.io/

Page 180: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

180

Formation JavaScript avancé alphorm.com™©

Présentation de ECMAScript6 (suite)

• Portée de variable avec let

• Template String

Page 181: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

181

Formation JavaScript avancé alphorm.com™©

Présentation de ECMAScript6 (suite)

• Paramètre de fonction par défaut

• Les Lambdas (Arrow function)

Page 182: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

182

Formation JavaScript avancé alphorm.com™©

Présentation de ECMAScript6 (suite)

• Les classes et héritage

Page 183: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

183

Formation JavaScript avancé alphorm.com™©

Ce qu’on a couvert

• L’organisme de standardisation ECMA

• L’ECMAScript6

• Les principales nouveautés de JavaScript ECMAScript 6

Page 184: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

184

Formation JavaScript avancé alphorm.com™©

Conclusion

JavaScript, avancé

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Frédéric GAURATDéveloppeur et FormateurConsultant indépendant

Page 185: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

185

Formation JavaScript avancé alphorm.com™©

Plan

•Ce qui a été couvert

•Ce qui reste à aborder

Page 186: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

186

Formation JavaScript avancé alphorm.com™©

Ce qu’on a couvert dans cette formation

• Présentation de la formation

� Présentation de la formation

• Utilisation avancée des Fonctions

� Les différents types de fonction (anonymes, callback, immédiates, internes)

� Les scopes et les closures

• Programmation Orienté Objet en JavaScript

� Rappel sur les objets et prototypes

� Implémentation des constructeurs

� Implémentation de l’encapsulation

� L’héritage en JavaScript

� Utilisation du « this »

• Programmation asynchrones

� Le callback hell

� Les promesses

• Les tasks runner

� Les tâches de base (Qualité,Obfuscation,…)

� Présentation de Grunt et Gulp

• Programmation Modulaire

� Organiser son code et le rendre performant : Asynchronous Module Definition (AMD)

� Utilisation de RequireJS

• Le futur de JavaScript

� CoffeeScript / Dart / TypeScript

� La spécification ECMAScript 6

Page 187: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

187

Formation JavaScript avancé alphorm.com™©

Cursus formations JavaScript

JavaScript, les fondamentaux

DARTTests

Unitaires

JavaScript, Avancé

CoffeeScriptTests

fonctionnels

TypeScript

AngularJS 2,les fondamentaux

AngularJS 2, Avancé

Page 188: Alphorm.com Support de la Formation JavaScript , avancé

09/06/2016

188

Formation JavaScript avancé alphorm.com™©

A bientôt !

� Site : www.eolem.com

� Profil Alphorm : http://www.alphorm.com/formateur/frederic-gaurat