Verwenden von Klammern mit Javascript-Import-Syntax
Stieß ich auf eine javascript-Bibliothek, verwendet die folgende syntax zum importieren von Bibliotheken:
import React, { Component, PropTypes } from 'react';
Was ist der Unterschied zwischen der obigen Methode und der folgenden?
import React, Component, PropTypes from 'react';
InformationsquelleAutor der Frage fox | 2015-06-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser sagt:
Diese verbindet die beiden gemeinsame Syntax, die Sie haben wahrscheinlich gesehen
Die erste wird verwendet, um zu importieren und name der Standard-export, die zweite zum importieren der angegebenen Namen exportiert.
Als eine Allgemeine Regel, bei den meisten Modulen wird Ihnen entweder ein Einzel -, Standard zu exportieren oder eine Liste mit den Namen der Exporte. Es ist etwas weniger üblich für ein Modul sowohl eine Standard-export - und namens exportiert. Jedoch in dem Fall, wo es ein Merkmal, das am häufigsten importiert, sondern auch weitere sub-Funktionen, es ist eine gültige design zu exportieren die erste als Standard, und die restlichen können als namens-Exporte. Es ist in solchen Fällen verwenden Sie die
import
syntax, die Sie finden.Die anderen Antworten sind irgendwo zwischen falsch und verwirrend, vielleicht, weil die MDN-Dokumente an der Zeit diese Frage gestellt wurde, waren falsch und verwirrend. MDN zeigte das Beispiel
und sagte
name
ist der "name des Objekts, erhalten die importierten Werte." Aber das ist irreführend und falsch, zuerst von allen, es ist nur eine import Wert, die "empfangen" (warum nicht einfach sagen, "zugewiesen" oder "siehe")name
und der import-Wert in diesem Fall ist die Standard-export aus dem Modul.Einem anderen Weg zu erklären, dies ist zu beachten, dass die oben importieren ist genau identisch mit
und die OP ' s Beispiel ist genau identisch mit
Den MDN-Dokumentation ging auf, um zu zeigen, das Beispiel
und behauptet, dass es bedeutet,
Was MDN hier gesagt, und was andere Antworten, basierend auf die falsche MDN-Dokumentation, ist absolut falsch und beruht möglicherweise auf einer früheren version der spec. Was dies tatsächlich tut, ist
(Das Standard-Modul, export-Wert-Export mit der
export default
syntax, die auch inexport {foo as default}
.)Den MDN-Dokumentation Autoren bekommen verwechseln mit der folgenden form:
Diese Importe alle Exporte von
my-module
und macht Sie zugänglich unter Namen wieMyModule.name
. Der Standard-export ist auch zugänglich wieMyModule.default
da die Standard-export ist wirklich nichts mehr als eine weitere namens export mit dem Namendefault
. In dieser syntax, es gibt keine Möglichkeit zu importieren, die nur einen Teil des namens Exporte, obwohl man könnte den import der Standard-export, wenn es einer ist, zusammen mit den Namen Export,InformationsquelleAutor der Antwort
Diese greifen, werden die exportierten
{ Component, PropTypes }
Mitglieder aus der'react'
Modul, und ordnen Sie SieComponent
undPropTypes
bzw.React
wird gleich das Moduldefault
exportieren.Wie bereits von torazaburo untendas ist das gleiche wie
ist die Kurzform für
Hier ist ein weiteres Beispiel (link zu gist):
Getestet habe ich das zweite Beispiel mit babel:
sich und bekam einen syntax-Fehler.
Referenz, Lesen Sie auf der neuen
import
Dokumentation von MDN. Allerdings ist es offenbar in der Notwendigkeit der technischen überprüfung. Dr. Axel Rauschmayer blog-post ist eine bessere Referenz für jetzt.InformationsquelleAutor der Antwort royhowie