Ces dernières années, le développement de JavaScript a augmenté. Les nouvelles spécifications ECMAScript sont publiées chaque année, ce qui fait la gestion de la version JavaScript, la prise en charge des fonctionnalités pour chaque version et la façon d'écrire du code orienté vers l'avenir est déroutant.
Pour mieux comprendre les raisons de cette vague de mises à jour apparemment continue, passons en revue brièvement l'histoire de JavaScript et ses versions et comprenons pourquoi le processus de normalisation est si important.
Points clés
Early History of JavaScript Version Management
Le prototype de JavaScript a été écrit en mai 1995 par Brendan Eich en seulement dix jours. Il a été initialement recruté pour mettre en œuvre le runtime du programme pour Netscape Navigator, mais l'équipe de gestion a poussé à utiliser une langue de style C pour compléter le nouveau Java de l'époque.
JavaScript a fait ses débuts en décembre 1995 dans Netscape Navigator version 2. L'année suivante, le JavaScript de Microsoft inverse a créé sa propre version, appelée JScript. Sorti avec Internet Explorer Browser version 3, JScript est presque exactement le même que JavaScript - même en incluant tous les mêmes bogues et bizarreries - mais il a des fonctionnalités supplémentaires spécifiques aux explorateurs d'Internet.
La naissance d'Ecmascript
La nécessité de s'assurer que JScript (et toute autre variante) reste compatible avec JavaScript invite les microsystèmes Netscape et Sun pour normaliser le langage. Ils l'ont fait avec l'aide de l'Association européenne des fabricants informatiques (ECMA), qui sera responsable de l'hébergement de la norme. Le langage standardisé est appelé ECMAScript pour éviter la violation des marques Java de Sun - un mouvement qui a causé pas mal de confusion. En fin de compte, ECMAScript est utilisé pour se référer à la spécification, tandis que JavaScript (et est toujours) utilisé pour se référer à la langue elle-même.
Le groupe de travail responsable de la gestion et de la maintenance de la version JavaScript d'ECMAScript est connu sous le nom de comité technique 39 ou TC39. Il se compose de représentants de tous les principaux fournisseurs de navigateurs tels que Apple, Google, Microsoft et Mozilla, ainsi que des experts et des représentants invités d'autres sociétés intéressées par le développement Web. Ils organisent des réunions régulières pour déterminer la direction de la langue.
Lorsque JavaScript a été standardisé par TC39 en 1997, la spécification a été appelée ECMAScript version 1. Initialement, les versions ultérieures d'Ecmascript ont été publiées chaque année, mais ont fini par le sporadique en raison d'un manque de consensus et d'un large ensemble de fonctionnalités difficiles à gérer autour d'ECMAScript 4. La version a donc été terminée et rétrécie à 3.1, mais n'a pas été finalisée par ce nom, mais a finalement évolué en Ecmascript 5. Il a été publié en décembre 2009, 10 ans après la sortie d'Ecmascript 3, et a introduit des fonctionnalités telles que l'API de sérialisation JSON, la fonction.prototype.bind et le mode strict. Deux ans plus tard, une version de maintenance a été publiée pour clarifier une certaine ambiguïté dans la dernière itération 5.1.
ecmascript 2015 et revival des versions annuelles
Comme TC39 résout le désaccord causé par Ecmascript 4, Brendan Eich a souligné la nécessité d'une libération plus courte et plus petite. La première de ces nouvelles spécifications est es2015 (nommé ECMAScript 6 ou ES6 à l'origine). Cette version est une pierre angulaire énorme mais nécessaire qui prend en charge la future gestion annuelle de version JavaScript. Il contient de nombreuses fonctionnalités que de nombreux développeurs aiment aujourd'hui beaucoup, comme:
es2015 est la première version qui suit le processus TC39 , un modèle basé sur la proposition pour discuter et adopter des fonctionnalités linguistiques.
TC39 Processus
Il doit passer par cinq étapes avant que la proposition ne soit acceptée dans la prochaine version ECMAScript.
Il s'agit d'une étape pratique qui permet la soumission d'idées à la spécification. Tout le monde peut faire des suggestions de fonctionnalités - c'est des membres TC39 et des non-membres enregistrés en tant que contributeurs.
La première phase de formalisation de la proposition. Doit:
Une personne en charge doit être sélectionnée pour adopter et faire avancer la proposition. Cette personne doit être un membre du TC39. Étape 2: Draft (Draft)
Ici, la plupart des technologies de contenu et de support de la proposition ont été développées, mais des commentaires supplémentaires des utilisateurs et des implémenteurs (tels que les fabricants de navigateurs). Une fois acquis et que des mesures sont prises, le résumé et les détails de spécification seront finalisés et signés par le réviseur désigné et l'éditeur désigné. Étant donné que cette étape nécessite une implémentation cohérente, seuls les changements critiques seront acceptés par la suite.
Cette proposition a été acceptée et peut être ajoutée à ECMAScript. Par conséquent, il est intrinsèquement:
La documentation de contribution de base de code ci-dessus détaille les détails de l'utilisation des problèmes de github et des demandes de traction pour gérer l'ajout de langues.
Dans l'attente de
Après avoir terminé le processus de gestion et de mise à jour de la version JavaScript pour ES2015 et établi TC39, les versions ultérieures sont publiées en juin, la proposition étant incluse pendant un an. Au moment de la rédaction du moment de la rédaction, il y a déjà trois nouvelles spécifications.
Également connu sous le nom d'ES7, il s'agit de la première version incrémentielle plus petite d'ECMAScript. Outre les corrections de bogues, il ajoute uniquement deux fonctionnalités.
Cet exemple de méthode simplifie le fonctionnement de la recherche de valeurs dans un tableau:
// ES2016 之前: const hasBob = names.indexOf('bob') > -1; // ES2016: const hasBob = names.includes('bob');
Avant ES2016, le fonctionnement des exposants peut être effectué à l'aide de Math.Pow (base, exposant). Cette version présente un opérateur (**) qui a sa propre priorité:
// ES2016 之前 Math.pow(5, 3); // => 125 // ES2016 5 ** 3; // => 125
es2017 (aka es8) est une version légèrement plus grande qui contient des méthodes et des structures de syntaxe utiles.
Promise nous a sauvés de l'enfer de rappel, mais leurs API sont toujours verbeuses. Les fonctions asynchrones les abstraitent en utilisant des codes synchrones très similaires aux codes synchrones:
// Promise const getProfile = name => { return fetch(`https://some-api/people/${name}`) .then(res => res.json()) .then(({ profile }) => profile); // 从解析的对象中解构 `profile` }; // async/await const getProfile = async name => { const res = await fetch(`https://some-api/people/${name}`); const { profile } = await res.json(); return profile; };
string.prototype.padstart (Longueur, Padder) et Padend (Longueur, Padder) ajouteront à plusieurs reprises Padder au début et à la fin de la chaîne (ceci est facultatif, par défaut aux espaces) jusqu'à ce que les caractères de longueur soient atteints:
'foo'.padStart(6); // => ' foo'; 'foo'.padEnd(6); // => 'foo '; 'foo'.padStart(10, 'bar'); // => 'barbarbfoo'; 'foo'.padEnd(10, 'bar'); // => 'foobarbarb';
D'autres fonctionnalités incluent des virgules de fuite, des opérations de mémoire partagée et de atomique et des méthodes d'objet statique (object.entries (), object.values () et object.getownpropertyDescriptors ()).
Au moment de la rédaction, cette dernière version présente un petit nombre de nouvelles fonctionnalités puissantes.
tandis que Promise.all () vous permet d'attendre l'analyse de plusieurs promesses, dans certains cas, vous devrez peut-être itérer les valeurs récupérées de manière asynchrone. Vous pouvez maintenant attendre l'itérateur asynchrone avec le tableau des promesses:
// ES2016 之前: const hasBob = names.indexOf('bob') > -1; // ES2016: const hasBob = names.includes('bob');
En surface, ces deux améliorations de syntaxe sont devenues populaires parmi les développeurs JavaScript en raison de la disponibilité de compilateurs tels que Babel. L'expansion des objets et les propriétés résiduelles sont similaires à l'expansion du tableau et aux propriétés résiduelles et permettent une copie peu profonde et un regroupement de déconstruction des propriétés des objets:
// ES2016 之前 Math.pow(5, 3); // => 125 // ES2016 5 ** 3; // => 125
D'autres propositions acceptées incluent promesse.prototype.finalement (), ainsi que des améliorations des expressions régulières et des littéraux de modèle.
Conclusion
JavaScript s'est considérablement développé en très peu de temps. Bien que cela soit dû à l'excellent travail de la norme ECMAScript et de TC39, c'était initialement un voyage ardu en raison du manque de stabilité et de cohésion dans la gestion et le développement de la version JavaScript précédente.
Parce que le processus de proposition est relativement mature, la langue ne peut être améliorée que de manière pragmatique et contrôlable. C'est le moment idéal pour les développeurs Web!
FAQ sur la gestion de la version JavaScript: ES6 et ES2015
ES6 et ES2015 sont essentiellement les mêmes. ES6 est la sixième édition du langage de programmation ECMAScript standardisé à l'échelle internationale par ECMA. ES2015 n'est que le nouveau nom pour ES6, reflétant l'année où elle a été publiée. Les renoms sont censés refléter l'année de sortie et se débarrasser du numéro de version, ce qui peut être déroutant.
renommé ES6 à ES2015 pour refléter son année de sortie et se débarrasser du numéro de version. Cette décision consiste à éviter la confusion et à démontrer que JavaScript est un langage dynamique qui est constamment mis à jour et amélioré. Les nouvelles conventions de dénomination aident également à indiquer la régularité des mises à jour et des améliorations linguistiques.
ES6 / ES2015 introduit de nombreuses nouvelles fonctionnalités pour JavaScript, y compris let
et const
pour les déclarations variables, les fonctions de flèche pour la syntaxe de la fonction plus courte, les littéraux de modèle pour l'interpolation de chaîne, pour les classes de programmation orientées objet, prometteur pour la programmation asynchrone, pour la programmation asynchronique, Modules pour l'organisation du code, etc.
ES6 / ES2015 Améliore le codage JavaScript de diverses manières. Il introduit de nouvelles syntaxes et fonctionnalités qui rendent la langue plus puissante et plus facile à utiliser. Par exemple, les fonctions Arrow fournissent une syntaxe plus propre pour l'écriture des fonctions, tandis que la promesse facilite la gestion des opérations asynchrones. L'introduction de modules aide également à mieux organiser le code, ce qui facilite la gestion et le maintien.
Pour commencer la fonctionnalité ES6 / ES2015 dans le code JavaScript, vous pouvez utiliser un traducteur comme Babel qui convertit le code ES6 en code ES5 qui peut s'exécuter dans le navigateur actuel. Vous pouvez également utiliser un packer de module comme WebPack pour gérer et regrouper vos modules JavaScript.
Bien que la plupart des caractéristiques de ES6 / ES2015 soient prises en charge par la plupart des navigateurs modernes, il peut y avoir des problèmes de compatibilité avec les navigateurs plus âgés. Pour garantir la compatibilité, vous pouvez utiliser Polyfill, qui offre des fonctionnalités que vous attendez du support natif de votre navigateur.
JavaScript est un langage de programmation développé à l'origine par Netscape. ECMascript est une version standard JavaScript qui est normalisée à l'échelle internationale par ECMA. JavaScript implémente ECMAScript, ce qui signifie qu'il suit les règles et structures définies dans la norme ECMAScript.
Après ES6 / ES2015, JavaScript continuera d'évoluer, avec de nouvelles versions publiées chaque année, et chaque version introduit de nouvelles fonctionnalités et améliorations. L'avenir de JavaScript peut voir des fonctionnalités plus solides, de meilleures performances et une compatibilité plus élevée sur différentes plates-formes et appareils.
TypeScript est un superset de JavaScript qui ajoute des types statiques à la langue. Il prend en charge toutes les fonctionnalités de ES6 / ES2015, et même certaines fonctionnalités supplémentaires que l'on trouve dans JavaScript. Le code TypeScript est traduit en JavaScript, il peut donc s'exécuter dans n'importe quel environnement JavaScript.
L'utilisation d'ES6 / ES2015 offre de nombreux avantages par rapport aux versions antérieures de JavaScript. Il introduit de nouvelles syntaxes et fonctionnalités qui rendent la langue plus puissante et plus facile à utiliser. Il améliore également l'organisation et la maintenabilité du code et fournit une meilleure prise en charge des applications complexes et des bases de code importantes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!