Diese Seite scheint zu sagen, dass es möglich ist, geht aber nicht viel detaillierter darauf ein.
Lauch
Antworten:
151
Sie können auch den Pfad festlegen, über den statische Dateien für das Web bereitgestellt werden, indem Sie einen zusätzlichen (ersten) Parameter angeben, der use()wie folgt aussieht :
Auf diese Weise erhalten Sie zwei verschiedene Verzeichnisse im Web, die Ihre lokalen Verzeichnisse widerspiegeln, und nicht einen URL-Pfad, der zwischen zwei lokalen Verzeichnissen ausfällt.
Mit anderen Worten das URL-Muster:
http://your.server.com/public/*
Serviert Dateien aus dem lokalen Verzeichnis, publicwährend:
http://your.server.com/public2/*
Serviert Dateien aus dem lokalen Verzeichnis public2.
Übrigens ist dies auch nützlich, wenn Sie nicht möchten, dass statische Dateien die Dateien vom Stammverzeichnis Ihres Servers aus bereitstellen, sondern von einem qualifizierteren Pfad.
Perfekt @facetcounter! Ich habe gerade ein Skript auf mein Verzeichnis verwiesen! Skript (src = "/ public2 / alertTest.js")
Cody
Bei der Verwendung von React und zu versuchen , dienen zwei separate Anwendungen, müssen Sie hinzufügen "homepage": "/public"und "homepage": "/public2"auf den jeweiligen reagiert App package.json. Weitere Informationen zur Verwendung von zwei Reaktions-Apps finden Sie in meiner Antwort hier stackoverflow.com/a/48569896/4746648
Danny Harding
Dies ist besonders dann sehr nützlich, wenn Sie einen sharedOrdner benötigen, damit Sie js-Dateien problemlos verwenden "./"und "./shared"boomen können: 3 Vielen Dank
Jaacko Torus
54
Sie können Verzeichnisse auch in einem einzigen sichtbaren Verzeichnis "zusammenführen"
Sowohl static als auch alternative_static werden so bereitgestellt, als ob sie sich im selben Verzeichnis befinden. Achten Sie jedoch auf Dateinamen-Clobber.
Wenn ich das richtig verstehe, treten keine Dateinamenkonflikte auf, da der Knoten die erste Version der gefundenen Datei verwendet. Wenn sie sieht main.jsin static/ihm nicht suchen in weiter alternate_static/.
RobW
2
Das ist immer noch ein Problem, wenn Sie damit gerechnet haben, dass die Datei alternate_staticjemals zugestellt wird .
Randolpho
41
Es ist nicht durch eine Middleware-Injektion möglich, aber Sie können staticMiddleware mehrmals injizieren :
Antworten:
Sie können auch den Pfad festlegen, über den statische Dateien für das Web bereitgestellt werden, indem Sie einen zusätzlichen (ersten) Parameter angeben, der
use()
wie folgt aussieht :Auf diese Weise erhalten Sie zwei verschiedene Verzeichnisse im Web, die Ihre lokalen Verzeichnisse widerspiegeln, und nicht einen URL-Pfad, der zwischen zwei lokalen Verzeichnissen ausfällt.
Mit anderen Worten das URL-Muster:
Serviert Dateien aus dem lokalen Verzeichnis,
public
während:Serviert Dateien aus dem lokalen Verzeichnis
public2
.Übrigens ist dies auch nützlich, wenn Sie nicht möchten, dass statische Dateien die Dateien vom Stammverzeichnis Ihres Servers aus bereitstellen, sondern von einem qualifizierteren Pfad.
HTH
quelle
"homepage": "/public"
und"homepage": "/public2"
auf den jeweiligen reagiert App package.json. Weitere Informationen zur Verwendung von zwei Reaktions-Apps finden Sie in meiner Antwort hier stackoverflow.com/a/48569896/4746648shared
Ordner benötigen, damit Sie js-Dateien problemlos verwenden"./"
und"./shared"
boomen können: 3 Vielen DankSie können Verzeichnisse auch in einem einzigen sichtbaren Verzeichnis "zusammenführen"
Verzeichnisaufbau
/static
/alternate_static
Code
Sowohl static als auch alternative_static werden so bereitgestellt, als ob sie sich im selben Verzeichnis befinden. Achten Sie jedoch auf Dateinamen-Clobber.
quelle
main.js
instatic/
ihm nicht suchen in weiteralternate_static/
.alternate_static
jemals zugestellt wird .Es ist nicht durch eine Middleware-Injektion möglich, aber Sie können
static
Middleware mehrmals injizieren :Erläuterung
Schauen Sie sich connect / lib / middleware / static.js # 143 an :
Es gibt
options.root
eine statische Wurzel, die Sie definierenexpress.static
oderconnect.static
aufrufen, und einenpath
Anforderungspfad.Weitere Informationen finden Sie unter connect / lib / middleware / static.js # 154 :
Der Pfad wurde nur einmal überprüft, und wenn die Datei nicht gefunden wurde, wurde die Anforderung an die nächste Middleware weitergeleitet.
Update für Connect 2.x.
Links zu Code sind für Connect 2.x inaktiv, aber die Verwendung mehrerer statischer Middleware ist nach wie vor möglich.
quelle
});
quelle