Vos recrutements informatiques

700 000 développeurs, chefs de projets, ingénieurs, informaticiens...

Contactez notre équipe spécialiste en recrutement

Que nous réserve le futur de JavaScript ?
Un ingénieur de Mozilla détaille les nouveautés d'ECMAScript 6

Le , par Idelways, Expert éminent sénior


Dave Herman, ingénieur à Mozilla Labs et membre du TC39, était présent à la conférence YUIConf 2011 pour une présentation inédite de ce que nous réserve le futur du standard ECMAScript et du langage JavaScript.

Cette spécification ne sera pas finalisée avant 2013, mais des implémentations devraient bientôt voir le jour sur Firefox et Chrome. Le support d'ECMAScript 6 sur ce dernier profitera de facto au framework Node.js articulé autour du moteur V8.

Herman a souligné en début de keynote qu'une grande partie de ces nouveautés vient remplacer le code passe-partout que les développeurs JavaScript doivent placer un peu partout dans leur nouveau projet.

Ainsi naîtra la notion de Module en JavaScript pour lever l'obligation d'encapsuler son code dans une fonction anonyme afin d'éviter la propagation de variables globales.
Ces modules pourront être importés via code bloquant que le parseur parcours à la recherche d'instructions imports. Les fichiers ainsi appelés seront chargés sans devoir écrire en dur d'autres balises <script> et jouer avec le DOMReady.

Code javascript : Sélectionner tout
1
2
3
4
5
6
module Collections{ 
  export function Dict(){} 
  
  import { $ } from "jquery.js" 
  import { map, each } from "underscore.js" 
}

Dave Herman a aussi réintroduit le mot clé let, qui revient dans le processus de standardisation des années après son annulation pour ECMAScript 4.
Il se positionne comme une alternative complémentaire de var, évitant les erreurs récurrentes où une variable déclarée dans une fonction se retrouve hors de portée dans une fonction fille.

Let permettra des assignations collectives non strictes, rendant cette écriture de code possible : let [x,y] = [3,4,5]; // x=3, y = 4.

Notons aussi l'arrivée des valeurs par défaut des fonctions, évitant le recours systématique au passage d'objets d'options, souvent fusionnés avec d'autres objets JSON portant les valeurs par défaut en tout début d'une méthode.

Toujours dans l'optique d'épargner aux développeurs du code passe-partout, Herman a évoqué le nouveau mot-clé « yield » qui permettra de stopper l'exécution d'une méthode jusqu'au prochain appel à method.next().

Cette notion de « fonctions génératrices » permet d'éviter les « pyramides de ruines », comme les décrit Herman. Ces structures imbriquées qui résultent de la nécessité de n'exécuter une partie du code que lorsqu'une autre a fini son travail (le cas d'une requête asynchrone par exemple).

Fini le callback spaghetti !

Code javascript : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
spawn(function*(){ 
  // Notez l'étoile qui distingue les fonctions génératrices 
  
  var foo = yield read('foo.txt'), 
  var bar = yield read('bar.txt'), 
  var baz = yield read('baz.txt'), 
  
  yield sleep(1000); 
  status.innerHTML = foo + bar + baz 
});

ECMAScript 6 introduira aussi les chaînes de caractères multilignes, entourées d'accents graves (`).

Code javascript : Sélectionner tout
1
2
3
var htmlString = `Say hello to  
multi-line 
strings!`

JavaScript aura aussi des objets proxy capables de contrôler tout ce qui se passe dans les méthodes qu'ils encapsulent. Notons aussi l'interpolation des chaines.

Code javascript : Sélectionner tout
1
2
var firstName = "Jack"; 
var message = `Hello ${firstName}!`; // "Hello Jack!"


Et bien d'autres nouveautés à découvrir en détail sur la vidéo de l'évènement :



Et vous ?

Que pensez-vous de ces nouveautés d'ECMAScript 6 ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de grunk grunk - Modérateur https://www.developpez.com
le 29/11/2011 à 17:17
C'est bien sympa tout ça, mais quand on voit que IE10 prévoit l'implémentation de ECMAScript 5 , on est pas près de pouvoir gouter au joies de ces nouveautés en production :'(
Avatar de ferber ferber - Membre éprouvé https://www.developpez.com
le 29/11/2011 à 23:41
a le mot clef "let" !
Ca me rappelé l'epoque ou adobe a donnée une partis du code source du flash player ( le moteur d'exécution d'as3 ) a Mozilla, et que mozilla a laissé le projet dans un placard, suite a l'abandon de l'eCam4 par le w3c grace au travail de de lobbying microsoft, un belle exemple de travail de normalisation.
Il en reste toujours des traces sur internet :
http://hg.mozilla.org/tamarin-centra...esc/src/esc.es
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
 
/* -*- mode: java; tab-width: 4; insert-tabs-mode: nil; indent-tabs-mode: nil;  -*- */ 
/* ***** BEGIN LICENSE BLOCK ***** 
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1 
 * 
 * The contents of this file are subject to the Mozilla Public License Version 
 * 1.1 (the "License"); you may not use this file except in compliance with 
 * the License. You may obtain a copy of the License at 
 * http://www.mozilla.org/MPL/ 
 * 
 * Software distributed under the License is distributed on an "AS IS" basis, 
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 
 * for the specific language governing rights and limitations under the 
 * License. 
 * 
 * The Original Code is [Open Source Virtual Machine.]. 
 * 
 * The Initial Developer of the Original Code is 
 * Adobe System Incorporated. 
 * Portions created by the Initial Developer are Copyright (C) 2004-2006 
 * the Initial Developer. All Rights Reserved. 
 * 
 * Contributor(s): 
 *   Adobe AS3 Team 
 * 
 * Alternatively, the contents of this file may be used under the terms of 
 * either the GNU General Public License Version 2 or later (the "GPL"), or 
 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), 
 * in which case the provisions of the GPL or the LGPL are applicable instead 
 * of those above. If you wish to allow use of your version of this file only 
 * under the terms of either the GPL or the LGPL, and not to allow others to 
 * use your version of this file under the terms of the MPL, indicate your 
 * decision by deleting the provisions above and replace them with the notice 
 * and other provisions required by the GPL or the LGPL. If you do not delete 
 * the provisions above, a recipient may use your version of this file under 
 * the terms of any one of the MPL, the GPL or the LGPL. 
 * 
 * ***** END LICENSE BLOCK ***** */ 
 
{ 
    let total_frontend = 0; 
    let total_backend = 0; 
 
    let before = new Date(); 
 
    let files = ESC::filterCommandLine(Util::commandLineArguments()); 
 
    let prof = ESC::flags.profile_compiler; 
 
    if (prof) 
        ESC::startProfile(); 
 
    for ( let i=0, limit=files.length ; i < limit ; i++ ) { 
        let fname = files[i]; 
        let [parse,cogen] = ESC::compileFile(fname); 
        total_frontend += parse; 
        total_backend += cogen; 
        print (fname); 
        print ("  Scan+parse:  " + parse + " ms"); 
        print ("  Cogen:       " + cogen + " ms"); 
 
        // This is a hack.  The profiler needs to be callback-based; the 
        // snapshot is captured so that the profiler won't lose data. 
        if (prof) 
            ESC::snapshotProfile(); 
    } 
 
    let after = new Date(); 
 
    if (files.length > 1) { 
        print(""); 
        print("Total time: " + (after - before)); 
        print("Front end:  " + total_frontend); 
        print("Back end:   " + total_backend); 
    } 
 
    if (prof) { 
        ESC::stopProfile(); 
        ESC::dumpProfile("esc.profile"); 
    } 
}
Avatar de camus3 camus3 - Membre éprouvé https://www.developpez.com
le 29/11/2011 à 23:43
il va falloir que Microsoft change sa politique en matière de navigateurs , que les clients puissent upgrader leur navigateurs quelque soit l'os utilisé ( I installer I.E X sous Xp par exemple ) .c'est un frein à l'adoption des nouvelles specs du web. Microsoft a une politique ambiguë à propos des "standards".
Avatar de Neko Neko - Membre chevronné https://www.developpez.com
le 30/11/2011 à 0:26
Oui enfin XP n'est plus qu'en support étendu, ça fait un moment qu'ils l'ont annoncé qu'ils ne supportaient plus XP. Tôt ou tard faudra que les gens changent quand même.
Avatar de camus3 camus3 - Membre éprouvé https://www.developpez.com
le 30/11/2011 à 1:21
Oui enfin XP n'est plus qu'en support étendu, ça fait un moment qu'ils l'ont annoncé qu'ils ne supportaient plus XP. Tôt ou tard faudra que les gens changent quand même.

et alors ? les gens changent d'os uniquement quand ils changent de pc , et cela n'empeche en rien Microsoft de sortir une version d'IE 9 ou 10 pour XP.
Je n'acheterai pas pas W8. je ne pourrai donc pas utilisé IE 10 ? je ne vois pas pourquoi je devrai racheter windows pour upgrader mon navigateur , c'est un choix purement commercial et pas du tout technique qui frêne l'adoptions des standards tant loués par les "évangélistes". Microsoft n'en a rien à faire de "promouvoir" les standards , c'est juste du marketing. L'api javascript de Metro par exemple est non standard , Ecmascript 5 dans IE9 n'est pas standard non plus puisqu'il ne propose pas de strictmode.
Avatar de damo damo - Membre à l'essai https://www.developpez.com
le 30/11/2011 à 9:36
C'est bien maigre tout ça, en tout cas bien insuffisant pour considérer JavaScript à la hauteur d'un langage moderne comme Java, .Net, Python, AS3, etc...
Avatar de ithel ithel - Membre averti https://www.developpez.com
le 30/11/2011 à 10:14
Que nous réserve le futur de JavaScript ?

Du sang, de la sueur et des larmes (désolé, trop tentant)
Avatar de ugo-sans-h ugo-sans-h - Membre régulier https://www.developpez.com
le 30/11/2011 à 11:59
De maigres évolution de forme, toujours pas d'objet avec js...

Plus j'utilise Javascript plus je suis frustré. Je suis frustré de voir que ce langage est de plus en plus incontournable et pourtant si peu structuré et hasardeux. La qualité d'une application ne dépend que de l'assiduité du développeur, et est difficile de lui faire confiance dans ces conditions.

Un langage souple et laissant une grande liberté aux développeurs c'est bien, mais de grande applications complexes avec plusieurs milliers de lignes de cote, ne serais-ce que pour des questions de maintenabilité, nécessite quand même une conception plus structuré.

Quand je vois Dart de Google, je ne sais quoi penser. Certes il est jeune et ne sera pas supporté dès demain par tout les navigateurs. Mais il a la volonté de faire bouger les lignes. Et comme dit plus haut, cette nouvelle version de js ne sera de toute façon pas supporté par tous les navigateurs avant des années...

Commencer dès à présent à développer côté client dans un autre langage que le js pour l'avenir n'est peut être pas exclu, de toute façon, les deux mettrons des années à être supporté par tout et tout le monde.
Avatar de Bovino Bovino - Rédacteur https://www.developpez.com
le 30/11/2011 à 12:11
Citation Envoyé par ugo-sans-h
toujours pas d'objet avec js...

Euh... tu plaisantes j'espère
Avatar de ugo-sans-h ugo-sans-h - Membre régulier https://www.developpez.com
le 30/11/2011 à 12:57
Non, pas du tout, du pseudo objet c'est pas de l'objet.

Des fonctions, un jour fonction, un jour class[...] des {} en guise je json ou de class... n'est le bordel si j'ose dire...
Offres d'emploi IT
Administrateur systèmes & réseaux H/F
Sogeti - Régions - Ouest - Pays de la Loire - OUEST
Ingénieur HPC stockage (H/F)
Atos - Ile de France - Bruyères-le-Châtel (91680)
Ingénieur développement java android confirmé H/F
Page Personnel - Bretagne - Rennes (35000)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil