Risposte:
È inoltre possibile impostare il percorso da cui verranno pubblicati i file statici sul Web specificando un (primo) parametro aggiuntivo in questo use()
modo:
app.use("/public", express.static(__dirname + "/public"));
app.use("/public2", express.static(__dirname + "/public2"));
In questo modo si ottengono due directory diverse sul Web che rispecchiano le directory locali, non un percorso URL che esegue il failover tra due directory locali.
In altre parole, il pattern URL:
http://your.server.com/public/*
Fornisce file dalla directory locale public
mentre:
http://your.server.com/public2/*
Fornisce file dalla directory locale public2
.
A proposito, questo è anche utile se non vuoi che static serva i file dalla radice del tuo server ma piuttosto da un percorso più qualificato.
HTH
"homepage": "/public"
e "homepage": "/public2"
al package.json della rispettiva app react. Per maggiori informazioni sull'utilizzo di due app di reazione, vedere la mia risposta qui stackoverflow.com/a/48569896/4746648
shared
cartella in modo che è possibile utilizzare "./"
e "./shared"
e boma si può facilmente js di condivisione file: 3 Thank You
Puoi anche "unire" directory in un'unica directory visibile
Struttura delle directory
/static
/alternate_static
Codice
app.use("/static", express.static(__dirname + "/static"));
app.use("/static", express.static(__dirname + "/alternate_static"));
Sia static che alternate_static verranno serviti come se fossero nella stessa directory. Attenzione però ai clobbers dei nomi dei file.
main.js
dentro static/
, non continuerà a guardare dentro alternate_static/
.
alternate_static
venisse mai servito.
Non è possibile tramite un'iniezione di middleware, ma puoi iniettare il static
middleware più volte:
app.configure('development', function(){
app.use(express.static(__dirname + '/public1'));
app.use(express.static(__dirname + '/public2'));
});
Spiegazione
Guarda connect / lib / middleware / static.js # 143 :
path = normalize(join(root, path));
C'è options.root
una radice statica, che definisci express.static
o connect.static
chiami, ed path
è il percorso della richiesta.
Guarda di più su connect / lib / middleware / static.js # 154 :
fs.stat(path, function(err, stat){
// ignore ENOENT
if (err) {
if (fn) return fn(err);
return ('ENOENT' == err.code || 'ENAMETOOLONG' == err.code)
? next()
: next(err);
Il percorso è stato verificato solo una volta e, se il file non è stato trovato, la richiesta è passata al middleware successivo.
Aggiornamento per Connect 2.x
I collegamenti al codice non sono effettivi per Connect 2.x, ma è ancora possibile utilizzare più middleware statico come prima.
const express = require('express');
const path = require('path');
const pagesPath = path.join(__dirname, '/cheatsheet');
const cssPath = path.join(__dirname, '/stylesheet');
const port = process.env.PORT || 3000;
var app = express();
app.use("/cheatsheet" ,express.static(pagesPath));
app.use("/stylesheet",express.static(cssPath));
app.get('/',(request,response)=>{
response.send('Hello CSS!!!');
});
app.get('/bad',(request,response)=>{
response.send({error: 'Bad Request'});
});
app.listen(port, ()=> {
console.log(`Server is running on Port ${port}` );
console.log(__dirname);
});
// folder structure
/cheatsheet/index.html
/stylesheet/style.css