Ich habe öffentliche Exporte von ES6-Modulen auf beide Arten gesehen:
// method 1
export var getAnswer = function () { return 'forty two'; };
// method 2
export default function () { return 'forty two'; };
- Sind beide gültig?
- Wenn ja, warum existieren beide?
- Gibt es andere gültige Optionen für Modulexporte mit ES6-Syntax?
Ich bin überrascht, dass ich mit meinem GoogleFU keine Antwort gefunden habe. Ich beschäftige mich nur mit ES6-Modulen, nicht mit CommonJS, RequireJS, AMD, Node usw.
javascript
syntax
module
export
ecmascript-6
kdbanman
quelle
quelle
import x from y
vsimport {x} from y
Antworten:
Ein Jahr und einige später sind hier die besten Informationen, die ich zu diesem Thema gefunden habe.
Es gibt 4 Arten von Exporten. Hier sind jeweils Verwendungsbeispiele sowie einige Importe, die sie verwenden:
Syntax exportieren
Syntax importieren
Quelle.
quelle
Beide sind gültig.
Methode 1 liefert benannte Exporte . Der Schlüssel hier ist, dass Sie mehr als eine Sache exportieren können. Dies sollte verwendet werden, anstatt ein Objekt mit mehreren Eigenschaften zu exportieren. Verwenden Sie beim Importieren eines Moduls mit benannten Exporten
import {a, b} from c
.Methode 2 liefert den Standardexport . Es kann nur einen Standardexport geben. Dies wird hauptsächlich verwendet, wenn Sie eine einzelne Sache wie eine
class
oder eine einzelne exportierenfunction
, von der Sie erwarten, dass sie ohne zusätzliche Unterstützung verwendet wird. Verwenden Sie beim Importieren eines Moduls mit einem Standardexportimport d from c
.Beachten Sie, dass Sie beide verwenden können! Wenn Sie also eine wichtige primäre Funktion mit einer Handvoll gelegentlich verwendeter Helfer haben, können Sie
export
die Helfer undexport default
die primäre. Wenn Sie ein Modul importieren und beide Arten von Exporten benötigen, verwenden Sieimport d, {a, b} from c
.Eine andere Option ist, dass Sie benannte Exporte erhalten können, indem Sie sie am Ende Ihres Moduls auflisten, wie folgt :
export {a,b,c}
. Sie können sie auch umbenennenexport {a as $a, b as c}
.All dies habe ich aus diesem Artikel erhalten , der die beste Quelle für aktuelle Informationen zum es6-Modul ist, die ich finden konnte.
quelle
Nein,
export function () { return answer; };
ist ungültig. Entweder verwenden Sie die Standardeinstellung oder Sie fügen dieser Funktionsdeklaration einen Namen hinzu.Sie tun es nicht :)
Sie können viele gültige Optionen hier sehen: https://github.com/eslint/espree/pull/43
quelle