Dies ist eine zweiteilige Frage.Webpack Alias und ES6 Importe/Exporte
Ich habe einen Webpack-Alias mit dem Namen controls
für eine bestimmte Datei eingerichtet, die alle meine geteilten React-Komponenten enthält. Diese Datei ist einfach eine index.js-Datei, die alle gewünschten Komponenten (etwa 30 gemeinsam genutzten Komponenten) und dann exportiert sie wie Importe:
export { Button, Tabs, ProgressBar, Carousel, … }
Die Komponenten sind aus verschiedenen Orten (Bibliotheken, mine, etc) . Mein Verständnis von Importen ist, dass wenn ich
import { Button } from ‘controls';
überall in meinem Projekt schreiben, wo ich will Button
verwenden, Button
nur in meinen Abhängigkeitsbaum gezogen werden sollte - nicht jede Ausfuhr von ‚Kontrollen/index.js‘ .
Erste Frage: ist mein Verständnis der Art und Weise wie Importe/Exporte hier genau arbeiten sollen?
Jetzt für das Problem: alle Komponenten, ob sie in einem bestimmten Bundle oder nicht verwendet werden, werden in jedes Bündel gezogen. Ich bin mir ziemlich sicher, dass dies aufgrund meines Webpack-Alias geschieht.
Zweite Frage: Wer irgendwelche Ratschläge, wie kann ich noch sauber mehrere gemeinsam genutzte Komponenten auf einer einzigen Zeile wie
import { Button, Tabs, InitialsAvatar } from 'controls';
importieren, aber nicht alle meine Kontrollen ziehen (auch bekannt als Reagieren Komponenten geteilt) in den Abhängigkeitsbaum?
Ich habe mit Webpack der rumgespielt moduleDirectores
und root
, aber diese haben mir erlaubt, nicht mehrere Komponenten auf einer einzigen Zeile und nicht gestatten Sie mir, eine einzige index.js Datei zu verwenden, importieren alle meine gemeinsam genutzten Komponenten Haus .
webpack v1 lässt keinen Baum zittern, wenn Sie das gedacht haben. –
@FelixKling ok, also ist das Problem zumindest teilweise (wenn nicht vollständig) mit dem Webpack 1, aber ES6s Import/Export hat ein natives Verhalten bis ** nur ** importiert das benötigte Segment des Moduls oder ist das Verhalten hängt völlig von Ihrem Modul Builder ab (Webpack 1, Webpack 2, Systemjs, usw.) –
Es hängt vom Modul Bundler ab. ES6 erwartet, dass das gesamte Modul ausgewertet wird, wenn ein Export importiert wird. –