Dies ist eine spezielle Einschränkung, die von Entwicklern der Create-React-App hinzugefügt wurde. Es wird implementiert, ModuleScopePlugin
um sicherzustellen, dass sich Dateien in befinden src/
. Dieses Plugin stellt sicher, dass relative Importe aus dem Quellverzeichnis der App nicht außerhalb davon gelangen.
Sie können diese Funktion deaktivieren, jedoch erst nach dem eject
Ausführen des Projekts "App erstellen, reagieren, App".
Die meisten Funktionen und deren Updates sind in den Interna des Create-React-App-Systems verborgen. Wenn Sie machen, werden eject
Sie einige Funktionen und deren Update nicht mehr haben. Wenn Sie also nicht bereit sind, die mitgelieferte Anwendung zum Konfigurieren von Webpack usw. zu verwalten und zu konfigurieren, führen Sie keine eject
Operation aus.
Spielen Sie nach den bestehenden Regeln (gehen Sie zu src). Aber jetzt können Sie wissen , wie Einschränkung zu entfernen: tun , eject
und entfernen Sie ModuleScopePlugin
aus webpack Konfigurationsdatei .
Seit create-react-app v0.4.0 kann mit der NODE_PATH
Umgebungsvariablen ein Pfad für den absoluten Import angegeben werden. Und da v3.0.0 NODE_PATH
zugunsten der Einstellung baseUrl
in jsconfig.json
oder veraltet ist tsconfig.json
.
Beim absoluten Import kann import App from 'App'
stattdessen import App from './App'
relativ zum in der Basis-URL angegebenen Wert verwendet werden.
Diese Funktion ist besonders nützlich für Monorepos oder andere Konfigurationsfragen, jedoch nicht zum Importieren von Bildern oder anderen Elementen aus Ordnern public
.
Der Inhalt des public
Ordners wird im build
Ordner abgelegt und ist über die relative URL verfügbar. Außerdem wird alles, was importiert wird, per Webpack verarbeitet und auch in einem build
Ordner abgelegt .
Wenn Sie etwas aus einem public
Ordner importieren , wird dieses Ding wahrscheinlich im build
Ordner dupliziert und ist über zwei verschiedene URLs (oder mit verschiedenen Möglichkeiten zum Laden) verfügbar, was letztendlich die Downloadgröße des Pakets verschlechtert.
Der Import aus dem src- Ordner ist vorzuziehen und hat Vorteile. Alles wird per Webpack in das Bündel gepackt, wobei die Brocken die optimale Größe und die beste Ladeeffizienz aufweisen .
Es gibt Zwischenlösungen, nämlich das Rewire- System, mit dem Sie die Webpack-Konfiguration programmgesteuert ändern können. Das Entfernen des ModuleScopePlugin
Plugins ist jedoch keine gute Lösung. Es ist besser, voll funktionsfähige zusätzliche Verzeichnisse hinzuzufügen, die denen ähneln src
.
Derzeit werden create-react-app
keine weiteren Verzeichnisse als src
im Stammordner unterstützt. Dies kann mit dem React-App-Rewire-Alias erfolgen
../public/images/logo_2016.png
zweimal nach oben gegangen sein, zuerst aus dem Komponentenordner, dann aus dem src-Ordner.