ECMAScript / JavaScript
Erleichtert die Entwicklung komplexer, robuster Webanwendungen
In den vergangenen Jahren ist das Ökosystem um JavaScript schier explodiert. Mit ECMAScript 2017 holt die Sprache als solche immer weiter auf. Ein natives Modulsystem ermöglicht die saubere Strukturierung auch größerer Anwendungen, während diverse Neuerungen wie async / await die Entwicklung an allen Ecken und Enden abrunden. All diese Erweiterungen erfordern eine neue Herangehensweise an die JavaScript-Entwicklung. Ein Transpiler sowie viele weitere Werkzeuge sind heutzutage feste Bestandteile eines Build-Prozesses. ECMAScript ist eine objektorientierte, dynamisch typisierte, aber klassenlose Skriptsprache mit viel Potential.
Der Aufwand lohnt sich: So können JavaScript-Anwendungen moderne Sprachfeatures nutzen und trotzdem in älteren Umgebungen ausgeführt werden.
Grundlagen JavaScript
- Scope und Funktionen
- Funktionsscope
- Lexikalischer Scope
- Hoisting von Variablen und Funktionen
- Verschiedene Arten von Funktionen
- Funktionen höherer Ordnung
- Closures
- Kapselung und echte Privatheit
- Das Schlüsselwort
this
- Kontextabhängige Bedeutung von
this
- Explizite Festlegung der
this
-Referenz - Erzeugung von Objektinstanzen mit
new
- Kontextabhängige Bedeutung von
- Prototypenbasiertes Design
- Einführung in Objekte und deren Prototypen
- Verkettung mehrerer Prototypen
- Nachbildung klassischer Vererbung
Einführung ECMAScript
Mit ECMAScript ist JavaScript erheblich erweitert und an vielen Stellen verbessert worden. Ein natives Modulsystem ermöglicht die saubere Strukturierung größerer Anwendungen, wohingegen viele kleinere Neuerungen die Arbeit erleichtern. Transpiler wie Babel oder TypeScript können neue Sprachkonstrukte so umschreiben, dass sie von allen gängigen Browsern verstanden werden: Das ist JavaScript von morgen schon heute.
- Natives Modulsystem, Importe und Exporte
- Klassen und Vererbung
- Arrow-Funktionen und lexikalisches
this
-Binding - Iteratoren und Iteration mit
for...of
- Generator-Funktionen als Zustandsautomaten
- Symbole als neuer primitiver Datentyp
Diverse syntaktische Neuerungen machen JavaScript ausdrucksstärker und erleichtern den alltäglichen Umgang mit Datentypen, Parametern und Variablendeklarationen.
- Block-Scoping von Konstanten und Variablen
- Destrukturierung von Objekten und Arrays
- Default-Werte für Funktionsparameter
- Arrow-Funktionen
- Konstanten und lexikalisches Scoping
- Klassen und Vererbung
Spezielle Sprachkonstrukte
- Erweiterte Funktionalität von Objekt-Literalen
- String-Interpolation und Template-Literale
- Rest- und Spread-Operatoren für Arrays
- Iteratoren und Iteration
- Natives Modulsystem
Standardbibliothek-Funktionalitäten und Netzwerk
- Nutzung der Standardbibliothek
- Native Promise-Implementierung
- Asynchrone Programmierung mit Promises
- Speichereffiziente Datenstrukturen / Maps und Sets sowie WeakMaps und WeakSets
- Neue Funktionen für Strings und Arrays
Werkzeuge
Damit moderne JavaScript-Anwendungen in allen gängigen Browsern ausgeführt werden können, wird ein Transpiler zum festen Bestandteil des Werkzeugkastens. Auch zum Bündeln und Laden nativer Module muss ein neues Werkzeug ins Repertoire.
- Babel als Transpiler-Plattform
- TypeScript als statisches Typsystem
- Strategien zum Bündeln und Laden nativer JavaScript-Module
- Polyfills und Shims für fehlende Features
- ESLint zur Codequalitätskontrolle
- Webpack zum Bündeln nativer Module
- Gulp als Task-Runner und Build-System
Erweitertes
- Asynchrone Funktionen mit
async
/await
- Rest- und Spread-Operatoren für Objekte
- Dekoratoren für Klassen und Properties
- Ein neuer Operator zum Potenzieren