„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie geht Babel 6 anders mit Standardexporten um?

Wie geht Babel 6 anders mit Standardexporten um?

Veröffentlicht am 14.11.2024
Durchsuche:896

How Does Babel 6 Handle Default Exports Differently?

Breaking Change: Babel 6-Export-Standardverhalten

Mit der Veröffentlichung von Babel 6 wurden wesentliche Änderungen in der Handhabung von Standardexporten implementiert . Während Babel zuvor die Zeile module.exports = exports["default"] hinzugefügt hat, wurde diese Funktionalität entfernt.

Diese Änderung erfordert eine Änderung der Modulimportsyntax. Bisher wurde Code mit der alten Syntax verwendet:

var foo = require('./foo');
// use foo

Muss jetzt die folgende Syntax verwenden:

var foo = require('./foo').default;
// use foo

Obwohl diese Anpassung geringfügig erscheinen mag, kann sie für Projekte mit erheblichen Codeabhängigkeiten vom vorherigen Exportmechanismus eine Herausforderung darstellen.

Problemumgehung

Wenn das Legacy-Exportverhalten erforderlich ist, wird die direkte Verwendung von CommonJS empfohlen. Alternativ kann ein benutzerdefiniertes Plugin verwendet werden, um die gewünschte Kompatibilität bereitzustellen. Die Funktionalität dieses Plugins würde wahrscheinlich das in Babel 6 entfernte Verhalten widerspiegeln und die Zeile module.exports = exports["default"] zur transpilierten Ausgabe hinzufügen.

Auswirkungen benannter Exporte

Es ist erwähnenswert, dass die Entfernung der automatischen module.exports-Zuweisung die ES6-Semantik verbessert und mögliche Verwirrung verhindert. Benannte Exporte verhalten sich jetzt wie erwartet, ohne versehentliche Zuweisungen zum Standardexport.

Beispiel

Der folgende Code zeigt den Unterschied zwischen dem Exportverhalten von Babel 5 und Babel 6:

// Input
const foo = {}
export default foo

Babel 5 Output

"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
var foo = {};
exports["default"] = foo;
module.exports = exports["default"];

Babel 6 Output

"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
var foo = {};
exports["default"] = foo;

Wie zu beobachten ist, ist der einzige Unterschied in der Ausgabe das Fehlen von module.exports = exports["default"] in Babel 6.

Freigabeerklärung Dieser Artikel wird unter folgender Adresse abgedruckt: 1729644858 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3