Was ist Babel und wozu wird es benötigt?
\n\nBabel ist ein leistungsstarker Transpiler (Compiler) für JavaScript, der es Entwicklern ermöglicht, Code in den modernsten Versionen von ECMAScript (ES6, ES7, ES8, ES9, ES10, ES11, ES12 und höher) zu schreiben und ihn in abwärtskompatibles JavaScript umzuwandeln, das in älteren Browsern und Laufzeitumgebungen (z. B. Node.js-Versionen unter 12) ausgeführt werden kann.
\n\nDas Hauptproblem, das Babel löst, ist die Kluft zwischen neuen Sprachfunktionen (Pfeilfunktionen, async/await, Destrukturierung, Klassen, Module, optionale Verkettung usw.) und der Unterstützung dieser Funktionen in realen Laufzeitumgebungen. Babel fungiert als Brücke und ermöglicht es Entwicklern, alle Vorteile von modernem JavaScript zu nutzen, ohne darauf warten zu müssen, dass alle Browser aktualisiert werden.
\n\nBabel besteht aus drei Hauptkomponenten:
\n- \n
- Kern (@babel/core) — die Haupt-Engine, die Code parst, transformiert und neuen Code generiert. \n
- Plugins — separate Module, die jeweils für die Transformation einer bestimmten syntaktischen Konstruktion verantwortlich sind (z. B. ein Plugin für Pfeilfunktionen, für async/await). \n
- Presets — vorkonfigurierte Sammlungen von Plugins (z. B. @babel/preset-env, @babel/preset-react). \n
Babel wird auch für die Transpilierung von TypeScript, JSX (React), Flow und anderen JavaScript-Erweiterungen verwendet.
\n\nInstallation von Babel
\n\nBabel wird über npm (Node Package Manager) installiert. Für den Einstieg benötigen Sie Node.js Version 12 oder höher.
\n\nErstellen Sie ein neues Projekt und initialisieren Sie es:
\nmkdir my-babel-project\ncd my-babel-project\nnpm init -y\n\nInstallieren Sie die grundlegenden Babel-Pakete:
\nnpm install --save-dev @babel/core @babel/cli @babel/preset-env\n\nLassen Sie uns erklären, was wir installiert haben:
\n- \n
- @babel/core — der Kern von Babel. Ohne ihn funktioniert nichts. \n
- @babel/cli — die Befehlszeilenschnittstelle, mit der Sie Babel vom Terminal aus ausführen können. \n
- @babel/preset-env — das wichtigste Preset, das automatisch ermittelt, welche Plugins basierend auf den Ziel-Laufzeitumgebungen (Browser oder Node.js-Versionen) benötigt werden. \n
Für die Arbeit mit React installieren Sie zusätzlich:
\nnpm install --save-dev @babel/preset-react\n\nFür TypeScript:
\nnpm install --save-dev @babel/preset-typescript\n\nSchnellstart mit einem Codebeispiel
\n\nErstellen Sie eine Babel-Konfigurationsdatei (babel.config.json oder .babelrc) im Projektstammverzeichnis:
\n{\n "presets": [\n ["@babel/preset-env", {\n "targets": {\n "node": "current"\n }\n }]\n ]\n}\n\nErstellen Sie eine Datei src/index.js mit modernem Code:
// src/index.js\nconst greet = (name) => {\n return `Hello, ${name}!`;\n};\n\nconst users = ['Alice', 'Bob', 'Charlie'];\nconst greetings = users.map(user => greet(user));\n\nconsole.log(greetings);\n\n// Verwenden von async/await\nconst fetchData = async () => {\n const data = await Promise.resolve({ message: 'Success' });\n console.log(data.message);\n};\n\nfetchData();\n\nKompilieren Sie nun den Code mit Babel:
\nnpx babel src --out-dir dist\n\nNach der Ausführung des Befehls erscheint im Ordner dist die Datei index.js mit dem transformierten Code:
// dist/index.js\n"use strict";\n\nvar greet = function greet(name) {\n return "Hello, ".concat(name, "!");\n};\n\nvar users = ['Alice', 'Bob', 'Charlie'];\nvar greetings = users.map(function (user) {\n return greet(user);\n});\n\nconsole.log(greetings);\n\nvar fetchData = async function fetchData() {\n var data = await Promise.resolve({ message: 'Success' });\n console.log(data.message);\n};\n\nfetchData();\n\nBeachten
Auch in der Bibliothek
JWT-Tokens in C# (.NET): Vollständiger Leitfaden mit Beispielen
Event Bus und das Observer-Muster in C++: Implementierung und Beispiele
gRPC für JavaScript (Node.js): Bibliotheken und Codebeispiele