Meine Frage ist: Was ist der Unterschied zwischen babel-preset-stage-0
, babel-preset-stage-1
, babel-preset-stage-2
und babel-preset-stage-3
, und was ist die beste Wahl , wenn wir mit der Entwicklung ES6
?
quelle
Meine Frage ist: Was ist der Unterschied zwischen babel-preset-stage-0
, babel-preset-stage-1
, babel-preset-stage-2
und babel-preset-stage-3
, und was ist die beste Wahl , wenn wir mit der Entwicklung ES6
?
Babels Bühnenvoreinstellungen entsprechen dem TC39-Prozess und den verschiedenen Zuständen jedes Vorschlags für einen möglichen Sprachwechsel. Sie enthalten Implementierungen und Polyfills für alle vorgeschlagenen Änderungen in dieser Phase.
Alles, was sich derzeit Stage-0
befindet, ist Strawman, nicht ES6. Es ist zukünftiges Javascript und absolut nicht sicher, ob es jemals in eine offizielle ECMAScript-Spezifikation aufgenommen wird.
Bitte stellen Sie nicht nur ein,stage-0
damit es funktioniert, ohne die Konsequenzen zu verstehen, die dies haben wird.
Das Babel-Preset, das nur ES6-Funktionen enthält, ist preset-es2015
stage-1
? Ist es sicher zu bedienen? Können einigestage-1
Funktionen in Zukunft veraltet und APIs geändert werden?stage-0
aber keineswegs völlig sicher vor Änderungen oder sogar völliger Ablehnung (siehe Aufrufkonstruktor-Vorschlag, der nach Stufe 1 zurückgezogen wurde). Das Gleiche gilt jedoch für jede andere Stufe als Stufe 4 (dh abgeschlossen).preset-es2015
mitbabel-preset-node6
diesen Tagen, wenn Knoten 6 oder besser ausgeführt werden .babel-preset-env
das kann auf jede Umgebung abzielen!babel-preset-env
STATTbabel-preset-es2015
.babel-preset-es2015
ist fast veraltetWie meistens durch andere Antworten herausgearbeitet. Stufe 4 ist am stabilsten und Stufe 0 am gefährlichsten. Hier ist eine kleine Aufschlüsselung auf hohem Niveau für die 5 Stufen aus den vorherigen Antworten und der Dokumentation. Ich füge dies hinzu, weil ich, als ich dazu kam, eine allgemeinere Aufschlüsselung der einzelnen Phasen erwartet hatte:
Stufe 4: Fertig
Bereit zur Aufnahme in den ECMAScript-Standard, hat die Tests bestanden und wird Teil der nächsten Überarbeitung sein
Stufe 3: Kandidat
Enthält einen vollständigen Spezifikationstext und Plugins, die größtenteils getestet und mit Feedback versehen wurden. Die Lösung ist vollständig und alle weiteren Änderungen basieren auf der Implementierungserfahrung.
Stufe 2: Entwurf
Weitere Unterstützung für Plugins wurde so weit wie möglich abgeschlossen. Die Anforderungen hierfür werden meist nur mit inkrementellen Änderungen auf dem Weg erfüllt. Semantik und API werden voraussichtlich vollständig sein. Es wird höchstwahrscheinlich Teil der Spezifikation werden.
Stufe 1: Vorschlag Ein Konzept, das entdeckt und ausgewählt wurde, um in dieser Phase untersucht zu werden, wird hauptsächlich von Poly-Fills und Demos erwartet.
Stufe 0: Strawman Dieser Name brachte mich laut TC-39 zum Lachen. Er hat keinerlei Grenzen, aber angesichts des Kontexts ist er die Kategorie für Konzepte, die nicht ausgewählt wurden, um weiterverfolgt oder untersucht zu werden.
Jedes Level ist inklusive, während 4 beinhaltet 3 beinhaltet 2 und so weiter ... Ich hoffe, dass diese Summe jemandem in der Zukunft hilft.
quelle
Die Stufen stellen die Stufen dar, wie sie durch den TC39-Prozess definiert wurden, der Funktionen von verrückten, aber nützlichen Ideen in akzeptierte Standards wie ES6 umwandelt. Der Prozess dauert einige Zeit, da jeder Eckfall besprochen, überlegt, getestet, polygefüllt, weiter diskutiert usw. werden muss. Das heißt, es handelt sich um eine Normungsorganisation. Das Ziel ist, dass das Sagen von "ES6" eine vollständige Bedeutung hat, ähnlich wie das Sagen von "ES5".
In der Praxis können Ihre Projektanforderungen vom Bleiben über das Bewährte bis zum Herumspielen mit ach so praktischen, wenn auch nebulösen Sprachfunktionen reichen. Sie möchten wahrscheinlich mit diesen Links beginnen:
Die TC39-Prozessübersicht : Dazu gehört ein übersichtliches Diagramm, was die Stufen bedeuten und wie sich die Funktionen von Stufe zu Stufe entwickeln. Darunter befindet sich eine Übersicht über TC39.
Die aktiven Vorschläge : Ein kurzer Überblick über die Phase, in der sich bestimmte Vorschläge befinden. Sie enthält auch Links zu den Vorschlägen "Fertig", "Inaktiv" und "Phase 0". Heute, im April 2017, befindet sich Public Class Fields in Phase 2, dh es wird genau beschrieben und die Prüfer wurden zugewiesen, aber nicht vollständig geprüft.
Das Babel-Voreinstellungspaket für Stufe 3 : Die Plug-In-Seite mit Links zu Git und NPM für alle Vorschläge für Stufe 3. Grundsätzlich zieht dieses Plug-In die Sammlung von Paketen ein, die theoretisch die aktuellen Vorschläge in TC39 Stufe 3 polyfill füllen. In der Praxis können Fehler auftreten. Ähnliches finden Sie auch. In ähnlicher Weise wird auf die Plug-In-Seiten für Stufe 2 und darunter verwiesen. Diese Seiten enthalten Links zu Paketen, die sowohl Vorschläge der Stufe 3 als auch weniger stabile Vorschläge enthalten.
Babel-Voreinstellung 'env' : Diese Babel-Voreinstellung unterstützt abgeschlossene Vorschläge und wählt die richtigen Pakete aus, die zur Unterstützung dieser Funktionen in einer bekannten Umgebung erforderlich sind. Beispielsweise
node
benötigt eine lokale ausführbare Datei weniger Plugins als ein älterer Browser. Man kann sich das 'Stage-4'-Plugin vorstellen, das genehmigte zukünftige Funktionen unterstützt.Zusammenfassend müssen Sie sich mit diesen Vorabversionsfunktionen nur befassen, wenn Sie sie verwenden. Wenn Sie sie verwenden müssen, wählen Sie die höchste Anzahl von Stufen aus, die das haben, was Sie benötigen. Wenn Sie nur eine Spielzeuginstallation mit verrückten Funktionen rund um den Wasserkühler diskutieren möchten, greifen Sie zu Stufe 0.
quelle
Dies ist der beste Ausgangspunkt, um zu verstehen. Was sind Babel Presets?
Ein Auszug aus dem Link:
Stufe 0 - Strawman: Nur eine Idee, mögliches Babel-Plugin.
Stufe 1 - Vorschlag: Es lohnt sich, daran zu arbeiten.
Stufe 2 - Entwurf: erste Spezifikation
Stufe 3 - Kandidat: Vollständige Spezifikation und erste Browser-Implementierungen.
Stufe 4 - Fertig: Wird zur nächsten jährlichen Veröffentlichung hinzugefügt
Gesamtbild :
preset
in babel ausgedrückt als a bezeichnet wird. Und jedes Preset enthält Plugins aus verschiedenen Risikostufen.preset-0
Dies bedeutet, dass es Plugins für Funktionen gibt, die sehr experimentell sind und daher ein hohes Risiko haben, die endgültige Spezifikation zu erreichen. Es ist wie eine Idee, die einem Entwickler einfiel, dass Javascript eine bestimmte Funktion haben sollte, und er hat einige Arbeit geleistet, um es zum TC-39-Vorschlagsprozess zu bringen.preset-1
Es enthält die Plugins für die vom TC-39 akzeptierten Funktionsideen, und es lohnt sich, daran zu arbeiten.preset-2
Plugins für Features, bei denen ein erster Entwurf für das Feature bereitsteht. Und es geht weiter ..Es kann also vorkommen, dass ein Feature in Stufe 0 in einiger Zeit Stufe 2 erreicht und einige Zeit später in der nächsten Version von Javascript erscheint.
Daher können Sie mit jeder Version dieser Babel-Voreinstellungen unterschiedliche Plugins finden. Es kann auch vorkommen, dass ein Feature in Stufe 0 einige Änderungen durchlaufen hat und Änderungen an seiner Funktionsweise vorgenommen hat. Und es erreichte, sagen wir Stufe 2 mit einer völlig anderen API. Entwickler müssen also sicherstellen, dass sie beim Aktualisieren dieser Plugins die erforderlichen Änderungen an ihrem Code vornehmen.
quelle
Die ursprüngliche Frage lautet: "Was ist der Unterschied zwischen Babel-Preset-Stufe-0, Babel-Preset-Stufe-1, Babel-Preset-Stufe-2 und Babel-Preset-Stufe-3?" zwischen TC39 Stufe-0, Stufe-1 .. Terminologie "werden abgestimmt, während die einzige relevante (wenn auch nicht genaue) herabgestimmt wird. Um von babel site zu zitieren:
Die Kernidee ist "die darüber". Ich beantworte die zweite Hälfte nicht, da die obigen Antworten in diesem Punkt sehr gut sind.
quelle
Ich hab's. Ihr könnt auf https://babeljs.io/docs/plugins/preset-stage-0/ verweisen.
Kurz gesagt,
preset-stage-0
enthält alle Funktionen,preset-stage-1
die vorhanden sind, undpreset-stage-1
enthält alle Funktionen,preset-stage-2
die vorhanden sind, und so weiter ...Die niedrigere Ziffer ist stärker. Wenn Sie sich in Ihrem Projekt nicht mit Problemen beschäftigen, stellen Sie einfach
stage-0
...quelle
stage-0
usw. eigentlich ist? Da Sie sagen "Niedrigere Ziffer ist stärker.", Glaube ich nicht.stage
mit verwechseltES6
, @RGraham hat darauf hingewiesenThe Babel Preset which contains only ES6 features is preset-es2015
. Vielen Dank!babel-preset-stage-0
umfasst alle Plugins, die vonstage-0
zustage-3
. Es bedeutet, dass ich alle vorgeschlagenen Funktionen haben möchte, egal ob sie es zum Vorschlag schaffen oder nicht.