33 votes

Babel est-il encore nécessaire en 2018 ?

J'apprends le JavaScript en ce moment et certains m'ont dit qu'après avoir appris le HTML et le CSS et le Javascript vanille, je dois avoir des connaissances sur ES6/ES2015. Quand je regarde des tutoriels sur Youtube, il est dit que nous avons besoin de Babel ou quelque chose comme ça pour que le navigateur le lise. Je me demande donc, car cette vidéo n'est pas si vieille (mais quand même vieille). Est-il toujours nécessaire d'avoir Babel ou dois-je laisser tomber cette histoire de Babel ?

2 votes

En fait, le babel est un transpilateur et un transpilateur devra toujours utiliser des fonctionnalités de pointe car tous les fournisseurs de navigateurs ne mettent pas en œuvre toutes les fonctionnalités du langage simultanément.

2 votes

Babel rend votre code brillant compréhensible par des navigateurs obsolètes. Continuez à écrire de nouvelles syntaxes et faites-les passer par Babel. Vous n'avez pas besoin de comprendre ou d'apprendre Babel. Il vous suffit de faire passer votre code par Babel.

2 votes

Haha, cette situation quand l'Alpha commente les Alpha_Bords. Mais en fait, vous n'avez pas besoin de Babel jusqu'à ce que vous remarquiez que quelque chose ne fonctionne pas dans certains navigateurs. Jusqu'à ce moment-là, je l'ignore complètement.

36voto

T.J. Crowder Points 285826

Babel est un compilateur JavaScript-to-JavaScript, parfois appelé un transpondeur qui convertit le code écrit avec un ensemble de fonctionnalités (par exemple, celles de l'ES2015 et des versions ultérieures) en code qui peut être exécuté dans un environnement JavaScript qui ne prend pas en charge ces fonctionnalités. (Il en existe d'autres, Babel n'en est qu'un assez populaire).

La décision d'utiliser Babel pour transposer votre code ES2015+ vers ES5 vous appartient entièrement, et dépend des environnements cibles que vous souhaitez prendre en charge. Si vous souhaitez prendre en charge toutes les versions d'IE (y compris IE11), par exemple, vous devrez transpiler. Si vous souhaitez uniquement prendre en charge les versions les plus récentes de Chrome, Firefox et Edge, ou d'autres environnements dans lesquels vous pouvez compter sur la présence des fonctionnalités que vous utilisez (comme des installations Node.js à jour), vous n'avez pas besoin de le faire.

Kangax dispose d'un ensemble de tableaux pratiques pour savoir quels moteurs JavaScript et/ou navigateurs prennent en charge les fonctionnalités les plus modernes de JavaScript (pas seulement ES2015, mais ES2016, ES2017, etc.).

L'utilité de Babel (et des outils similaires) va au-delà de la simple utilisation des fonctionnalités les plus récemment standardisées, et ce de deux manières au moins :

  1. Vous pouvez utiliser Babel (et d'autres outils similaires) pour tirer parti de fonctionnalités qui seront probablement bientôt normalisées, même si elles ne sont pas encore bien supportées. Par exemple, les bases des champs publics de classe n'ont pas changé depuis longtemps, mais la proposition dans laquelle ils se trouvent est toujours (au moment où nous écrivons ces lignes, en juin 2018) au stade 3 (et a fait des allers-retours entre le stade 2 et le stade 3 à plusieurs reprises) pour des raisons sans rapport avec les champs de classe publics, et même les navigateurs de pointe comme Chrome, Firefox et Edge ne prennent pas encore en charge les champs de classe publics. Mais il est courant, de nos jours, d'utiliser des champs de classe via un transpilateur.

  2. Vous pouvez écrire votre propre transformation Babel (ou similaire) pour ajouter vos propres fonctionnalités à JavaScript pour votre propre projet (ou utiliser celles que d'autres ont écrites), même si ces fonctionnalités ne feront jamais partie de JavaScript ou ne seront pas utilisées en dehors de votre projet.

2 votes

Concernant vos commentaires " Si vous voulez supporter n'importe quelle version d'IE (y compris IE11), par exemple, vous devrez transpiler. Si vous avez uniquement besoin de prendre en charge les versions de pointe de Chrome, Firefox et Edge, ou d'autres environnements où vous pouvez compter sur la présence des fonctionnalités que vous utilisez (comme les installations Node.js à jour), vous n'en avez pas besoin." Veuillez noter que quelques jours plus tôt, Microsoft a annoncé l'abandon d'IE et le déploiement d'une nouvelle version du navigateur dont le noyau de base sera basé sur Chrome, donc techniquement, sous Windows avec IE (basé sur Chrome), vous n'aurez plus besoin de Babel à l'avenir. Merci

0 votes

Voici l'annonce sur Windows central : windowscentral.com/

4 votes

@DineshNagari - Vous confondez IE et Edge. IE ne sera jamais basé sur Chromium, et si vous devez supporter IE (même le vieillissant "dernier", IE11), vous devez transpiler. Bordure (qui possède déjà un moteur JS très moderne) est remplacé par un système basé sur Chromium. Ce dont nous sommes sûrs, c'est qu'Anaheim (le nouveau Edge) utilisera Blink (le moteur de rendu de Chrome). Nous n'avons pas la confirmation de Microsoft qu'il utilisera V8 (le moteur JavaScript de Chrome) plutôt que Chakra (celui de MS), bien que le fait que le personnel de Microsoft ait fait des commits sur le projet v8/v8 suggère que ce sera le cas.

20voto

Babak Points 647

Sans vouloir m'écarter du sujet, je recommande aux débutants de ne pas s'intéresser aux outils et aux configurations. Cela peut être accablant, surtout au pays des JS. Concentrez-vous sur l'apprentissage, les outils viendront plus tard. Vous pouvez commencer à utiliser ES6 tout de suite sans aucun outil.

L'un des moyens consiste à utiliser un REPL ou un terrain de jeu en ligne. Un outil que j'aime bien est https://stackblitz.com ce site web vous permet de vous familiariser avec l'importation de modules à partir de l'UE. npm pour aider votre code. Si vous êtes sur Chrome, vous pouvez ouvrir la console du développeur et voir les messages que vous envoyez du terrain de jeu à la console du développeur.

https://developer.chrome.com/devtools

Voici un terrain de jeu que j'ai réalisé pour vous aider à démarrer.

https://stackblitz.com/edit/react-t3wxth?file=index.js

4 votes

Peut-être que c'est du chipotage mais je dirais qu'un tel REPL/playground est un outil de toute façon, et s'il supporte ES2015+ et d'autres fonctionnalités non supportées alors il fait plus ou moins la même chose que babel. De même, si quelqu'un pense sérieusement au développement, il devrait s'entraîner à être débordé, jusqu'à ce que - finalement - être débordé commence à être normal.

0 votes

D'après ma propre expérience d'apprentissage. À un moment donné, j'ai commencé à réaliser que babel, en tant qu'outil, permettait de réfléchir sur ce qu'est javascript et comment il fonctionne. Ce qui fait qu'il vaut la peine de s'engager avec

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X