SlideShare une entreprise Scribd logo
Nouveautés JavaScript dans
le monde Microsoft
Etienne MARGRAFF - @meulta
Technical Evangelist – Microsoft France
David ROUSSET - @davrous
Sr Program Manager – Microsoft Corp
JavaScript Open Day#jsodNouveautés JavaScript dans le monde Microsoft
Merci à tous les participants
Et surtout…
Jean-Pierre
Vincent
#jsod JavaScript Open Day
TEASING
JavaScript Open Day#jsod
Un nouveau moteur de rendu et JS
WebAudio
HTTP/2
ECMAScript 6
TypeScript
Outils pour le développeur: F12
Nouveautés JavaScript dans le monde Microsoft
JavaScript Open Day#jsodNouveautés JavaScript dans le monde Microsoft
En faisant table rase du passé
Nouveau moteur :
S’assurer d’une compatibilité cross-navigateurs et pas
uniquement à la spec W3C
Nouvel UA
JavaScript Open Day#jsodNouveautés JavaScript dans le monde Microsoft
Quelques trucs cool qui arrivent
Le support les plus avancés d’ES6
Web Audio
Media Capture API et Web RTC 1.1 (ORTC)
Touch Events
asm.js
… et quelques autres belles surprises en stock 
Suivez: https://status.modern.ie/
Nouveautés JavaScript dans le monde Microsoft
JavaScript Open Day#jsodNouveautés JavaScript dans le monde Microsoft
Le dernier stade de l’evolution auditive du web!
<bgsound>
flash
<audio>
Web Audio API
Learn Web Audio API
JavaScript Open Day#jsodNouveautés du moteur de rendu de IE
Accès complet au stream du son
Basé sur un graph de nœuds audio
Contrôle précis du son :
En résumé
Temps
Filtres
Gain
Analyse spectrale
Convolvers
Accès par JS
Spatialisation 3D
JavaScript Open Day#jsodNouveautés du moteur de rendu de IE
Rendu sur un thread séparé
Les codecs supportés sont ceux du navigateur, en
général au minimum MP3 et WAV
Scénarios : jeux, logiciels de musique en ligne,
reconnaissance et synthèse vocale, etc.
En résumé
JavaScript Open Day#jsodNouveautés du moteur de rendu de IE
Un graph à base de nœuds audio
JavaScript Open Day#jsodNouveautés du moteur de rendu de IE
Création du contexte audio
var canUseWebAudio = false;
try {
if (typeof AudioContext !== 'undefined') {
audioContext = new AudioContext();
canUseWebAudio = true;
} else if (typeof webkitAudioContext !== 'undefined') {
audioContext = new webkitAudioContext();
canUseWebAudio = true;
}
} catch (e) {
console.error("Web Audio: " + e.message);
}
#jsod JavaScript Open Day
DEMO
JavaScript Open Day#jsodNouveautés du moteur de rendu de IE
Mélanger des sons facilement
#jsod JavaScript Open Day
DEMO
JavaScript Open Day#jsodNouveautés du moteur de rendu de IE
Analyser le son
#jsod JavaScript Open Day
DEMO
JavaScript Open Day#jsodNouveautés du moteur de rendu de IE
Basé sur OpenAL (Open Audio Library)
La plupart des calculs sont faits automatiquement
Son omnidirectionnels ou directionnels
Spatialiser
#jsod JavaScript Open Day
DEMO
JavaScript Open Day#jsodNouveautés du moteur de rendu de IE
Oscillators
Sons procéduraux
Filtres
Effets via les convolvers (reverb, cathédrale, téléphone,
etc.)
Compression dynamique
Et bien d’autres choses encore!
JavaScript Open Day#jsodNouveautés du moteur de rendu de IE
Géré par l’IETF et basé sur SPDY/3
Purement retro-compatible avec l’ancien : mêmes
méthodes, entêtes, codes d’erreurs.
Conçu pour être plus rapide et efficace grâce
notamment au multiplexage ou du push depuis le
serveur
Dépoussiérons ce vieux HTTP 1.1 de 1999!
#jsod JavaScript Open Day
DEMO
JavaScript Open Day#jsodTitre session pied de page
Le cœur de JavaScript est défini par le standard
ECMA-262
Le langage ainsi défini se nomme ECMAScript
Très proche de TypeScript
JavaScript Open Day#jsod
● Avant, on utilisait des "versions"
o
o
o
o
● Maintenant, des features sont livrées quand
terminées
o
JavaScript Open Day#jsod
● Ce qui peut être ‘polyfilled’
o
● Les nouvelles syntaxes
o
transpile
JavaScript Open Day#jsod
let
Un vrai scope dans les blocs de code pour les
variables!
// Impossible d’utiliser i avant la boucle
for ( let i = 0; i < 5; i++ ) {
// utilisez i comme vous voulez
}
// impossible d’utiliser i après la boucle
JavaScript Open Day#jsod
let
// ‘tmp’ n’est pas défini ici
if ( swapxy ) {
let tmp = y;
y = x
x = tmp;
}
// ‘tmp’ n’est plus défini ici
#jsod JavaScript Open Day
DEMO
JavaScript Open Day#jsod
const
Un meilleur moyen de déclarer des ‘non-variables’
pour qu’elles ne soient pas modifiées par accident:
const maConstante = true;
JavaScript Open Day#jsod
const
Peut être (re)défini à l’intérieur d’une boucle:
for ( let i = 0; i < elems.length; i++ ) {
const elem = elems[i];
// … faire des choses …
}
JavaScript Open Day#jsod
Seulement le binding est const
const a = [];
a.push("Hello"); // fine
a.length = 0; // fine too
a = ["Dave"]; // error
JavaScript Open Day#jsod
Les bugs empêchés par const
var greet = ["Hello", "Dave"];
$("#greeting").data("greeting", greet);
// Ceci ne met pas à jour l’objet data!
greet = ["Goodbye", "Dave"];
// Ceci fonctionne
greet.splice(0, 1, "Goodbye");
#jsod JavaScript Open Day
DEMO
JavaScript Open Day#jsodNouveautés du moteur de rendu de IE
function Mesh(name) {
// call the superclass constructor
BABYLON.AbstractMesh.call(this, name);
// initialize instance properties
this.color = BABYLON.Vector3.Color3(); ...
};
// inherit behavior from Mesh
Mesh.prototype =
Object.create(BABYLON.AbstractMesh.prototype);
Mesh.prototype.constructor = Mesh;
// define an overridden update() method
Mesh.prototype.render = function() {
...
// call base version of same method
BABYLON.AbstractMesh.prototype. render.call(this);
};
Classes
class Mesh extends BABYLON.AbstractMesh {
constructor(name) {
super(name);
this.color = BABYLON.Vector3.Color3();
}
render() {
...
super.render();
}
}
#jsod JavaScript Open Day
DEMO
JavaScript Open Day#jsodNouveautés du moteur de rendu de IE
fs.readFile('config.json',
function (error, text) {
if (error) {
console.error('Error while reading config file');
} else {
try {
var obj = JSON.parse(text);
console.log(JSON.stringify(obj, null, 4));
} catch (e) {
console.error('Invalid JSON in file');
}
}
});
Promises
readFilePromisified('config.json')
.then(function (text) {
var obj = JSON.parse(text);
console.log(JSON.stringify(obj, null, 4));
})
.catch(function (reason) {
// File read error or JSON SyntaxError
console.error('An error occurred', reason);
});
JavaScript Open Day#jsodNouveautés du moteur de rendu de IE
var duties = ['one', 'two', 'three'];
Array.prototype._someLibraryAddedThis =
{};
for (var col in duties) {
if (arr.hasOwnProperty(call)) {
console.log(arr[call]);
}
}
Iterators
var duties = ['one', 'two', 'three'];
Array.prototype._someLibraryAddedThis =
{};
for (var col of duties) {
console.log(call);
}
JavaScript Open Day#jsod
function NumberIterator(arr) {
this['@@iterator'] = function () {
var index = 0;
return {
next: function () {
if (index >= arr.length) {
return {done: true};
} else {
return {
value: parseInt(arr[index++]),
done: false
}
}
}
}
};
}
Nouveautés du moteur de rendu de IE
Iterators
for (var i of new NumberIterator([1, 2, "3"])) {
console.log(i);
}
JavaScript Open Day#jsodNouveautés du moteur de rendu de IE
function* count() {
yield 1;
yield 2;
yield 3;
}
var counter = count();
counter.next(); // {value: 1, done: false}
counter.next(); // {value: 2, done: false}
counter.next(); // {value: 3, done: false}
counter.next(); // {done: true, value: undefined}
Generators
function* range(start, end) {
for (let i = start; i <= end; i++) {
yield i;
}
}
for (let i of range(5, 8)) {
console.log(i);
}
JavaScript Open Day#jsodNouveautés du moteur de rendu de IE
var sum = (num1, num2) => { return num1 + num2; }
// ==
var sum = function(num1, num2) {
return num1 + num2;
};
Arrow functions
JavaScript Open Day#jsodNouveautés du moteur de rendu de IE
Arrow functions
var PageHandler = {
id: "123456",
init: function() {
document.addEventListener("click", function(event) {
this.doSomething(event.type); // Erreur
}, false);
},
doSomething: function(type) {
console.log("Handling " + type + " for " + this.id);
}
};
var PageHandler = {
id: "123456",
init: function() {
document.addEventListener("click",
event => this.doSomething(event.type), false);
},
doSomething: function(type) {
console.log("Handling " + type + " for " + this.id);
}
};
#jsod JavaScript Open Day
DEMO
JavaScript Open Day#jsodNouveautés du moteur de rendu de IE
var x = [1, 2];
var y = [3, 4];
x.push(...y); // x is [1, 2, 3, 4]
var addToStore = function(category, ...items) {
store[category].push(...items);
};
Spread operator
JavaScript Open Day#jsod
Combien de fois avez vous vu ceci?
$("#result").append(
"Il y a <b>" + basket.count + "</b> " +
"éléments dans votre panier, " +
"<em>" + basket.onSale +
"</em> sont en solde!"
);
JavaScript Open Day#jsod
Maintenant vous pouvez faire ça:
$("#result").append(`
Il y a <b>${basket.count}</b> éléments
dans votre panier, <em>${basket.onSale}</em>
sont en solde!
`);
JavaScript Open Day#jsodNouveautés du moteur de rendu de IE
var loggable = function(obj) {
return Proxy.create({
get: function get(receiver, prop) {
console.log('Getting ' + prop);
return obj[prop];
},
set: function set(receiver, prop, value) {
console.log('Setting ' + prop + ' to ' + value + '; was ' + obj[prop]);
obj[prop] = value;
});
};
var person = { name: ‘Sylvie', age: 25 };
person = loggable(person);
person.age += 1;
Proxies
#jsod JavaScript Open Day
JavaScript Open Day#jsodNouveautés du moteur de rendu de IE
#jsod JavaScript Open Day
DEMO
JavaScript Open Day#jsodNouveautés JavaScript dans le monde Microsoft
JavaScript Open Day#jsod
Icône faites avec http://www.freepik.com par
http://www.flaticon.com est licensié sous
http://creativecommons.org/licenses/by/3.0/ CC BY
3.0
Freepik
JavaScript Open Day#jsodNouveautés JavaScript dans le monde Microsoft

Contenu connexe

PDF
Cours JavaScript
PPTX
Présentation JavaScript
PDF
Javascript pour les Développeurs WEB
PPTX
Javascript un langage supérieur
ODP
Introduction à JavaScript
PPTX
Cours javascript v1
PPTX
Javascript proprement
PPTX
Présentation de ECMAScript 6
Cours JavaScript
Présentation JavaScript
Javascript pour les Développeurs WEB
Javascript un langage supérieur
Introduction à JavaScript
Cours javascript v1
Javascript proprement
Présentation de ECMAScript 6

Tendances (18)

PDF
Javascript les générateurs (generators)
PDF
Javascript pour le développeur Java
PDF
Notions de base de JavaScript
PDF
Du JavaScript dans mon projet
PDF
Formation VBA Excel
KEY
Guide javascript
PPTX
Change mind about JS
PPT
Introduction à JavaScript
PPTX
Introduction à jQuery
PPTX
Requêtes HTTP synchrones et asynchrones
PPTX
Cpp2 : classes et objets
PPTX
Les Promises en Javascript
PDF
La programmation fonctionnelle en javascript / PF
PPTX
Introduction à Python
PPTX
Introduction à React JS
PDF
JavaScript pour le développeur Java
PPTX
Python For Data Science - French Course
PDF
Introduction à scala
Javascript les générateurs (generators)
Javascript pour le développeur Java
Notions de base de JavaScript
Du JavaScript dans mon projet
Formation VBA Excel
Guide javascript
Change mind about JS
Introduction à JavaScript
Introduction à jQuery
Requêtes HTTP synchrones et asynchrones
Cpp2 : classes et objets
Les Promises en Javascript
La programmation fonctionnelle en javascript / PF
Introduction à Python
Introduction à React JS
JavaScript pour le développeur Java
Python For Data Science - French Course
Introduction à scala
Publicité

En vedette (20)

PPTX
Autocomplete con AngularJs
PPTX
Construindo Diretivas com AngularJS
PPTX
JavaScript Open Day - Migration Web To App
PDF
DER BESTE MP3 YP-S3 VORSCHAU.1
PPT
cajón de maipo
PDF
Martinique dani hugo
PPS
Alfabeto emocional
DOC
El enojo y sus consecuencias
PDF
Le Diagnostic Mobile
PPT
Ochi tag
PPTX
Présentation Finexkap 2015 03-05
PPTX
SlideShare
PPTX
Hacia un pensamiento complejo capaz de relacionar
PPT
PDF
John Dewar
PPT
El meu avi és jardiner
PPTX
Feria de mecatrónica
PPSX
Para mejorar la habilidades sociales de nuestros alumnos en tareas grupales...
PPTX
Die epiphanie.ppt
PDF
Communiqué de presse Application iPhone National Citer
Autocomplete con AngularJs
Construindo Diretivas com AngularJS
JavaScript Open Day - Migration Web To App
DER BESTE MP3 YP-S3 VORSCHAU.1
cajón de maipo
Martinique dani hugo
Alfabeto emocional
El enojo y sus consecuencias
Le Diagnostic Mobile
Ochi tag
Présentation Finexkap 2015 03-05
SlideShare
Hacia un pensamiento complejo capaz de relacionar
John Dewar
El meu avi és jardiner
Feria de mecatrónica
Para mejorar la habilidades sociales de nuestros alumnos en tareas grupales...
Die epiphanie.ppt
Communiqué de presse Application iPhone National Citer
Publicité

Similaire à Nouveautés JavaScript dans le monde Microsoft (20)

PDF
Découverte du moteur de rendu du projet Spartan
PPTX
Javascript & tools
PPT
JavaScript Devoxx France 2013
PDF
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
PPTX
The future of JavaScript
PPTX
The Future of Javascript
PPTX
Présentation Javascript à l'ESI (Alger)
PPTX
Frameworks JavaScript en environnement MS
ODP
Solutions Linux 2008 - JavaScript
PPTX
Introduction-au-JavaScript + programmation orientée objet.pptx
KEY
Pourquoi et comment j'ai appris JavaScript
PPTX
Rouabhi algiers meetup
PDF
FORMATION javascript.pdf
PPTX
Formation JavaScript - Guide de démarrage rapide
ODP
Patterns et bonnes pratiques autour de JavaScript
PDF
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
PPTX
JavaScript aussi sur le serveur et jusque dans le cloud?
PPTX
Server Side Javascript in the cloud
PPTX
JavaScript aussi sur le serveur et jusque dans le cloud?
PPTX
JavaScript pour les développeurs .NET
Découverte du moteur de rendu du projet Spartan
Javascript & tools
JavaScript Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
The future of JavaScript
The Future of Javascript
Présentation Javascript à l'ESI (Alger)
Frameworks JavaScript en environnement MS
Solutions Linux 2008 - JavaScript
Introduction-au-JavaScript + programmation orientée objet.pptx
Pourquoi et comment j'ai appris JavaScript
Rouabhi algiers meetup
FORMATION javascript.pdf
Formation JavaScript - Guide de démarrage rapide
Patterns et bonnes pratiques autour de JavaScript
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
JavaScript aussi sur le serveur et jusque dans le cloud?
Server Side Javascript in the cloud
JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript pour les développeurs .NET

Plus de davrous (20)

PPTX
Building a cross platforms tower defense game Dev Days 2016
PPTX
Create fun & immersive audio experiences with web audio
PPTX
Unleashing WebGL & WebAudio with babylon.js
PPTX
Creating 3D Worlds with WebGL and Babylon.js - Codemotion.es
PPTX
Introduction à TypeScript et retour d'expérience sur le portage de Babylon.JS
PPTX
Babylon.js WebGL Paris
PPTX
Microsoft et l'Open Source
PPTX
Back from BUILD - WebGL
PPTX
NGF2014 - Create a 3d game with webgl and babylon.js
PPTX
Réaliser un jeu cross plateformes avec WebGL et babylon.js
PPTX
Les défis d’une application mobile multi-périphériques avec HTML5
PPTX
Pointer events
PPTX
L'histoire d'html5 pour les développeurs windows phone 8
PPTX
Introduction au développement windows 8 modern ui avec html5 et javascript
PPTX
Les dernières avancées html5 & css3 en action !
PPTX
W3 cafe ie10etwindows8
PPTX
Création d'une application html5 utilisant canvas, svg et les animations css3
PPTX
Création d’une application gérant l’offline et le stockage
PPTX
Nouveautés html5 et css3 dans internet explorer 10
PPTX
Webinar HTML5 Microsoft Intel
Building a cross platforms tower defense game Dev Days 2016
Create fun & immersive audio experiences with web audio
Unleashing WebGL & WebAudio with babylon.js
Creating 3D Worlds with WebGL and Babylon.js - Codemotion.es
Introduction à TypeScript et retour d'expérience sur le portage de Babylon.JS
Babylon.js WebGL Paris
Microsoft et l'Open Source
Back from BUILD - WebGL
NGF2014 - Create a 3d game with webgl and babylon.js
Réaliser un jeu cross plateformes avec WebGL et babylon.js
Les défis d’une application mobile multi-périphériques avec HTML5
Pointer events
L'histoire d'html5 pour les développeurs windows phone 8
Introduction au développement windows 8 modern ui avec html5 et javascript
Les dernières avancées html5 & css3 en action !
W3 cafe ie10etwindows8
Création d'une application html5 utilisant canvas, svg et les animations css3
Création d’une application gérant l’offline et le stockage
Nouveautés html5 et css3 dans internet explorer 10
Webinar HTML5 Microsoft Intel

Nouveautés JavaScript dans le monde Microsoft

  • 1. Nouveautés JavaScript dans le monde Microsoft Etienne MARGRAFF - @meulta Technical Evangelist – Microsoft France David ROUSSET - @davrous Sr Program Manager – Microsoft Corp
  • 2. JavaScript Open Day#jsodNouveautés JavaScript dans le monde Microsoft Merci à tous les participants Et surtout… Jean-Pierre Vincent
  • 3. #jsod JavaScript Open Day TEASING
  • 4. JavaScript Open Day#jsod Un nouveau moteur de rendu et JS WebAudio HTTP/2 ECMAScript 6 TypeScript Outils pour le développeur: F12 Nouveautés JavaScript dans le monde Microsoft
  • 5. JavaScript Open Day#jsodNouveautés JavaScript dans le monde Microsoft En faisant table rase du passé Nouveau moteur : S’assurer d’une compatibilité cross-navigateurs et pas uniquement à la spec W3C Nouvel UA
  • 6. JavaScript Open Day#jsodNouveautés JavaScript dans le monde Microsoft Quelques trucs cool qui arrivent Le support les plus avancés d’ES6 Web Audio Media Capture API et Web RTC 1.1 (ORTC) Touch Events asm.js … et quelques autres belles surprises en stock  Suivez: https://status.modern.ie/
  • 8. JavaScript Open Day#jsodNouveautés JavaScript dans le monde Microsoft Le dernier stade de l’evolution auditive du web! <bgsound> flash <audio> Web Audio API Learn Web Audio API
  • 9. JavaScript Open Day#jsodNouveautés du moteur de rendu de IE Accès complet au stream du son Basé sur un graph de nœuds audio Contrôle précis du son : En résumé Temps Filtres Gain Analyse spectrale Convolvers Accès par JS Spatialisation 3D
  • 10. JavaScript Open Day#jsodNouveautés du moteur de rendu de IE Rendu sur un thread séparé Les codecs supportés sont ceux du navigateur, en général au minimum MP3 et WAV Scénarios : jeux, logiciels de musique en ligne, reconnaissance et synthèse vocale, etc. En résumé
  • 11. JavaScript Open Day#jsodNouveautés du moteur de rendu de IE Un graph à base de nœuds audio
  • 12. JavaScript Open Day#jsodNouveautés du moteur de rendu de IE Création du contexte audio var canUseWebAudio = false; try { if (typeof AudioContext !== 'undefined') { audioContext = new AudioContext(); canUseWebAudio = true; } else if (typeof webkitAudioContext !== 'undefined') { audioContext = new webkitAudioContext(); canUseWebAudio = true; } } catch (e) { console.error("Web Audio: " + e.message); }
  • 14. JavaScript Open Day#jsodNouveautés du moteur de rendu de IE Mélanger des sons facilement
  • 16. JavaScript Open Day#jsodNouveautés du moteur de rendu de IE Analyser le son
  • 18. JavaScript Open Day#jsodNouveautés du moteur de rendu de IE Basé sur OpenAL (Open Audio Library) La plupart des calculs sont faits automatiquement Son omnidirectionnels ou directionnels Spatialiser
  • 20. JavaScript Open Day#jsodNouveautés du moteur de rendu de IE Oscillators Sons procéduraux Filtres Effets via les convolvers (reverb, cathédrale, téléphone, etc.) Compression dynamique Et bien d’autres choses encore!
  • 21. JavaScript Open Day#jsodNouveautés du moteur de rendu de IE Géré par l’IETF et basé sur SPDY/3 Purement retro-compatible avec l’ancien : mêmes méthodes, entêtes, codes d’erreurs. Conçu pour être plus rapide et efficace grâce notamment au multiplexage ou du push depuis le serveur Dépoussiérons ce vieux HTTP 1.1 de 1999!
  • 23. JavaScript Open Day#jsodTitre session pied de page Le cœur de JavaScript est défini par le standard ECMA-262 Le langage ainsi défini se nomme ECMAScript Très proche de TypeScript
  • 24. JavaScript Open Day#jsod ● Avant, on utilisait des "versions" o o o o ● Maintenant, des features sont livrées quand terminées o
  • 25. JavaScript Open Day#jsod ● Ce qui peut être ‘polyfilled’ o ● Les nouvelles syntaxes o transpile
  • 26. JavaScript Open Day#jsod let Un vrai scope dans les blocs de code pour les variables! // Impossible d’utiliser i avant la boucle for ( let i = 0; i < 5; i++ ) { // utilisez i comme vous voulez } // impossible d’utiliser i après la boucle
  • 27. JavaScript Open Day#jsod let // ‘tmp’ n’est pas défini ici if ( swapxy ) { let tmp = y; y = x x = tmp; } // ‘tmp’ n’est plus défini ici
  • 29. JavaScript Open Day#jsod const Un meilleur moyen de déclarer des ‘non-variables’ pour qu’elles ne soient pas modifiées par accident: const maConstante = true;
  • 30. JavaScript Open Day#jsod const Peut être (re)défini à l’intérieur d’une boucle: for ( let i = 0; i < elems.length; i++ ) { const elem = elems[i]; // … faire des choses … }
  • 31. JavaScript Open Day#jsod Seulement le binding est const const a = []; a.push("Hello"); // fine a.length = 0; // fine too a = ["Dave"]; // error
  • 32. JavaScript Open Day#jsod Les bugs empêchés par const var greet = ["Hello", "Dave"]; $("#greeting").data("greeting", greet); // Ceci ne met pas à jour l’objet data! greet = ["Goodbye", "Dave"]; // Ceci fonctionne greet.splice(0, 1, "Goodbye");
  • 34. JavaScript Open Day#jsodNouveautés du moteur de rendu de IE function Mesh(name) { // call the superclass constructor BABYLON.AbstractMesh.call(this, name); // initialize instance properties this.color = BABYLON.Vector3.Color3(); ... }; // inherit behavior from Mesh Mesh.prototype = Object.create(BABYLON.AbstractMesh.prototype); Mesh.prototype.constructor = Mesh; // define an overridden update() method Mesh.prototype.render = function() { ... // call base version of same method BABYLON.AbstractMesh.prototype. render.call(this); }; Classes class Mesh extends BABYLON.AbstractMesh { constructor(name) { super(name); this.color = BABYLON.Vector3.Color3(); } render() { ... super.render(); } }
  • 36. JavaScript Open Day#jsodNouveautés du moteur de rendu de IE fs.readFile('config.json', function (error, text) { if (error) { console.error('Error while reading config file'); } else { try { var obj = JSON.parse(text); console.log(JSON.stringify(obj, null, 4)); } catch (e) { console.error('Invalid JSON in file'); } } }); Promises readFilePromisified('config.json') .then(function (text) { var obj = JSON.parse(text); console.log(JSON.stringify(obj, null, 4)); }) .catch(function (reason) { // File read error or JSON SyntaxError console.error('An error occurred', reason); });
  • 37. JavaScript Open Day#jsodNouveautés du moteur de rendu de IE var duties = ['one', 'two', 'three']; Array.prototype._someLibraryAddedThis = {}; for (var col in duties) { if (arr.hasOwnProperty(call)) { console.log(arr[call]); } } Iterators var duties = ['one', 'two', 'three']; Array.prototype._someLibraryAddedThis = {}; for (var col of duties) { console.log(call); }
  • 38. JavaScript Open Day#jsod function NumberIterator(arr) { this['@@iterator'] = function () { var index = 0; return { next: function () { if (index >= arr.length) { return {done: true}; } else { return { value: parseInt(arr[index++]), done: false } } } } }; } Nouveautés du moteur de rendu de IE Iterators for (var i of new NumberIterator([1, 2, "3"])) { console.log(i); }
  • 39. JavaScript Open Day#jsodNouveautés du moteur de rendu de IE function* count() { yield 1; yield 2; yield 3; } var counter = count(); counter.next(); // {value: 1, done: false} counter.next(); // {value: 2, done: false} counter.next(); // {value: 3, done: false} counter.next(); // {done: true, value: undefined} Generators function* range(start, end) { for (let i = start; i <= end; i++) { yield i; } } for (let i of range(5, 8)) { console.log(i); }
  • 40. JavaScript Open Day#jsodNouveautés du moteur de rendu de IE var sum = (num1, num2) => { return num1 + num2; } // == var sum = function(num1, num2) { return num1 + num2; }; Arrow functions
  • 41. JavaScript Open Day#jsodNouveautés du moteur de rendu de IE Arrow functions var PageHandler = { id: "123456", init: function() { document.addEventListener("click", function(event) { this.doSomething(event.type); // Erreur }, false); }, doSomething: function(type) { console.log("Handling " + type + " for " + this.id); } }; var PageHandler = { id: "123456", init: function() { document.addEventListener("click", event => this.doSomething(event.type), false); }, doSomething: function(type) { console.log("Handling " + type + " for " + this.id); } };
  • 43. JavaScript Open Day#jsodNouveautés du moteur de rendu de IE var x = [1, 2]; var y = [3, 4]; x.push(...y); // x is [1, 2, 3, 4] var addToStore = function(category, ...items) { store[category].push(...items); }; Spread operator
  • 44. JavaScript Open Day#jsod Combien de fois avez vous vu ceci? $("#result").append( "Il y a <b>" + basket.count + "</b> " + "éléments dans votre panier, " + "<em>" + basket.onSale + "</em> sont en solde!" );
  • 45. JavaScript Open Day#jsod Maintenant vous pouvez faire ça: $("#result").append(` Il y a <b>${basket.count}</b> éléments dans votre panier, <em>${basket.onSale}</em> sont en solde! `);
  • 46. JavaScript Open Day#jsodNouveautés du moteur de rendu de IE var loggable = function(obj) { return Proxy.create({ get: function get(receiver, prop) { console.log('Getting ' + prop); return obj[prop]; }, set: function set(receiver, prop, value) { console.log('Setting ' + prop + ' to ' + value + '; was ' + obj[prop]); obj[prop] = value; }); }; var person = { name: ‘Sylvie', age: 25 }; person = loggable(person); person.age += 1; Proxies
  • 48. JavaScript Open Day#jsodNouveautés du moteur de rendu de IE
  • 50. JavaScript Open Day#jsodNouveautés JavaScript dans le monde Microsoft
  • 51. JavaScript Open Day#jsod Icône faites avec http://www.freepik.com par http://www.flaticon.com est licensié sous http://creativecommons.org/licenses/by/3.0/ CC BY 3.0 Freepik
  • 52. JavaScript Open Day#jsodNouveautés JavaScript dans le monde Microsoft

Notes de l'éditeur

  • #4: Together as a team
  • #5: David
  • #7: Etienne
  • #8: David
  • #9: Etienne
  • #10: David
  • #11: David
  • #12: David
  • #13: David
  • #14: David
  • #15: David : Démo de chargement et lecture d’un son avec play(0) et play dans le temps.
  • #17: David : Démo avec 2 sons synchronisés, un masterGain, chacun son gain et des sliders pour jouer sur les volumes.
  • #19: David : Création du graph du slide avec 2 son, 3 gain et 3 analyser.
  • #21: David: http://www.babylonjs-playground.com/#2AH4YH Etienne : Music Lounge
  • #22: David
  • #23: Etienne
  • #24: Etienne : https://http2.golang.org/gophertiles?latency=0
  • #25: David
  • #26: David
  • #27: Etienne
  • #28: Etienne
  • #29: Etienne
  • #30: Etienne : « Let it be »
  • #31: David
  • #32: David
  • #33: David
  • #34: DAvid
  • #35: David : « constituation »
  • #36: Démo babel.js
  • #37: Démo babel + démo TypeScript Démo music lounge, classes TS -> JS, montre le JS, debug depuis VS le TS et debug le TS dans Chrome avec F12  On parle des sourcemap.  Etienne
  • #38: David
  • #39: David
  • #40: David
  • #41: Etienne
  • #42: David
  • #43: David
  • #44: David: music lounge
  • #45: Etienne
  • #46: David
  • #47: David
  • #48: Etienne
  • #49: David & Etienne
  • #50: David & Etienne
  • #51: David : définir la demo