5
ES6+ maintenant ! Speaker : Christophe Porteneuve Format : Conférence Date : 21 avril 2016 Slides : http://tdd.github.io/devoxx-es6-maintenant/ Ancien développeur Java, Christophe développe en JavaScript depuis 1995. Il comme par rappeler qu’ECMAScript est la standardisation de JavaScript. Historique : d’ES3 à ES7 Mai 1995 : JS 1.0 (en 10 jours). Netscape 2.0 beta 3 en 12/95. Conçu en même temps que Java. Pourquoi diable avoir choisi ce nom ? => Trop de confusions au niveau RH. Juin 1997 : ECMAScript (ES1, ECMA-262), standard officiel => Utilisé par IE8 Décembre 1999 : ES3. JScript 1.5 à peu près à ce niveau (IE4-8) Décembre 2009 : ES5. Baseline de compatibilité actuelle. IE9+, Node, etc. Peu de gros changements. Juin 2015 : ES6 / ES2015. Enormément de nouveautés de langage pur. Juin 2016 : ES7 / ES2016 (prévu ; versions annuelles désormais, dans le cadre d’ES.Next, d’où le changement de nom) Prises-en charge native d’ES6 ? Navigateurs : de 90% à 98% sur les navigateurs Evergreens. Safari est resté sur 53%. D’après Christophe, Apple bride volontairement son navigateur afin de promouvoir le développement d’applications natives. Serveurs : Node LTS (4.4.3) à 48%, Node stable (5.10.1) à 58% Babel Transpile ES6+ en ES5 En pratique : IE9+, navigateurs Evergreens, tous les Nodes.js / io.js Intégration avec tout : o Builders : grunt, gulp

ES6+ maintenant...• Juin 2015 : ES6 / ES2015. Enormément de nouveautés de langage pur. • Juin 2016 : ES7 / ES2016 (prévu ; versions annuelles désormais, dans le cadre d’ES.Next,

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ES6+ maintenant...• Juin 2015 : ES6 / ES2015. Enormément de nouveautés de langage pur. • Juin 2016 : ES7 / ES2016 (prévu ; versions annuelles désormais, dans le cadre d’ES.Next,

ES6+maintenant!Speaker:ChristophePorteneuveFormat:ConférenceDate:21avril2016Slides:http://tdd.github.io/devoxx-es6-maintenant/AnciendéveloppeurJava,ChristophedéveloppeenJavaScriptdepuis1995.Ilcommeparrappelerqu’ECMAScriptestlastandardisationdeJavaScript.

Historique:d’ES3àES7

• Mai1995:JS1.0(en10jours).Netscape2.0beta3en12/95.ConçuenmêmetempsqueJava.Pourquoidiableavoirchoisicenom?=>TropdeconfusionsauniveauRH.

• Juin1997:ECMAScript(ES1,ECMA-262),standardofficiel=>UtiliséparIE8• Décembre1999:ES3.JScript1.5àpeuprèsàceniveau(IE4-8)• Décembre2009:ES5.Baselinedecompatibilitéactuelle.IE9+,Node,etc.Peudegros

changements.• Juin2015:ES6/ES2015.Enormémentdenouveautésdelangagepur.• Juin2016:ES7/ES2016(prévu;versionsannuellesdésormais,danslecadre

d’ES.Next,d’oùlechangementdenom)Prises-enchargenatived’ES6?

• Navigateurs:de90%à98%surlesnavigateursEvergreens.Safariestrestésur53%.D’aprèsChristophe,Applebridevolontairementsonnavigateurafindepromouvoirledéveloppementd’applicationsnatives.

• Serveurs:NodeLTS(4.4.3)à48%,Nodestable(5.10.1)à58%Babel

• TranspileES6+enES5• Enpratique:IE9+,navigateursEvergreens,touslesNodes.js/io.js• Intégrationavectout:

o Builders:grunt,gulp

Page 2: ES6+ maintenant...• Juin 2015 : ES6 / ES2015. Enormément de nouveautés de langage pur. • Juin 2016 : ES7 / ES2016 (prévu ; versions annuelles désormais, dans le cadre d’ES.Next,

o Runtime:Node,RequireJSo Frameworks,IDE,outilsdetest

Christopheseveutrassurant.Babelestmature.IlcompileintégralementleslignesdecodedeFacebookES6,pourquoi?

• Plusfacile:moinsdepiège,modestrict,isolationdemauvaisepratique• Pluspuissant• Plusfiable• Plusperformant

Objets&Classes

• Mêmesfonctionnalitésmaisnouveauxobjets• Littérauxobjets• Propriétéscalculées• Motsclés:class,extends,constructor,super,static.Obligel’appelauconstructeur

hérité(ex:super(props))• AccesseurstransparentscommeenC#etDelphi:getetset

Fonctionnalités

• Déstructuration:onarriveàdesparamètresnommés

Page 3: ES6+ maintenant...• Juin 2015 : ES6 / ES2015. Enormément de nouveautés de langage pur. • Juin 2016 : ES7 / ES2016 (prévu ; versions annuelles désormais, dans le cadre d’ES.Next,

• Rest&Spread:le…commeenJava.

• Valeurpardéfaut,sedéclencheencasd’undefined.Lavaleurpardéfautpeutêtre

unappeldefonctionsouêtrecomposésdesautresparamètres• TemplatestringscommeenPHPavecledélimiteur`etnativementmulti-line

• Lemotclévaradisparu.Utiliserlet&const.Engénéralonutiliseconstcarles

variablesnechangentpasdevaleur.Letestréservéauxboucles.Attentionconst<>d’immutable(deepfreeze)

• Litérauxétendus:octaux/binaires,unicodeavec2codescaractèresUTF-16

Page 4: ES6+ maintenant...• Juin 2015 : ES6 / ES2015. Enormément de nouveautés de langage pur. • Juin 2016 : ES7 / ES2016 (prévu ; versions annuelles désormais, dans le cadre d’ES.Next,

• Fonctionsfléchées:ellesnebindpaslethis!!Unefonctionnormaleredéfinitthis,arguments,superetnew.target.Maispasunefonctionfléchée:ellen’apasdethis.

• Devraismodules

o Reprendtoutcequiétaitbiendanslesautressystèmesdemoduleo 1module=1fichier(commeCommonJS)

• Chargementasynchrone(LoaderAPI):pasencorebienprisencharge• Promessesennatif.Interopérableaveclespromessesd’autreslib.

• Motsclésasync/awaitpiquéàC#5.Complémentelespromessessansles

remplacer.Codeasynchronenonbloqué.Onpeutrécupérerfacilementlesexceptions=>ES2017déjàsupportéparBabel

• Proxies(ES207):interceptionpossibledetoutemanipulationd’unobjet.NonsupportéparBabel.Patterndecorator.PermetdeleveruneReferenceError.

• Décorateurs@autobind,@memoize,@override(ES207):vaplusloinquelesannotations

Page 5: ES6+ maintenant...• Juin 2015 : ES6 / ES2015. Enormément de nouveautés de langage pur. • Juin 2016 : ES7 / ES2016 (prévu ; versions annuelles désormais, dans le cadre d’ES.Next,

LeprojetLebabpermetd’identifierducodeES5éligibleàduES6(l’inversedeBabel).QuestionsurTypeScript:trèsbien,pourlesgensquiontbesoindetypagefort(lesdéveloppeursquiviennentdelangagesfixes).Enalternatif:flowestuntypecheckerintéressant.LessyntaxessontpresquesISO.Labasculeestfacile.