Odpowiedzi:
Możesz również ustawić ścieżkę, z której pliki statyczne będą dostarczane do sieci, określając dodatkowy (pierwszy) parametr, aby use()
:
app.use("/public", express.static(__dirname + "/public"));
app.use("/public2", express.static(__dirname + "/public2"));
W ten sposób otrzymujesz dwa różne katalogi w sieci WWW, które odzwierciedlają katalogi lokalne, a nie jedną ścieżkę URL, która przełącza się awaryjnie między dwoma lokalnymi katalogami.
Innymi słowy, wzorzec adresu URL:
http://your.server.com/public/*
Obsługuje pliki z katalogu lokalnego, public
podczas gdy:
http://your.server.com/public2/*
Obsługuje pliki z katalogu lokalnego public2
.
BTW jest to również przydatne, jeśli nie chcesz, aby statyczne pliki były obsługiwane z katalogu głównego twojego serwera, ale raczej z bardziej kwalifikowanej ścieżki.
HTH
"homepage": "/public"
i "homepage": "/public2"
do pliku package.json odpowiedniej aplikacji. Aby uzyskać więcej informacji na temat korzystania z dwóch aplikacji React, zobacz moją odpowiedź tutaj stackoverflow.com/a/48569896/4746648
shared
folder, aby móc używać "./"
i "./shared"
bum, możesz łatwo udostępniać pliki js: 3 Dziękuję
Możesz także „scalić” katalogi w jeden widoczny katalog
Struktura katalogów
/static
/alternate_static
Kod
app.use("/static", express.static(__dirname + "/static"));
app.use("/static", express.static(__dirname + "/alternate_static"));
Zarówno static, jak i alternate_static będą obsługiwane tak, jakby znajdowały się w tym samym katalogu. Uważaj jednak na łamacze nazw plików.
main.js
w static/
nim nie będzie nadal szukać w alternate_static/
.
alternate_static
zostanie kiedykolwiek doręczony.
Nie jest to możliwe przez jedno wstrzyknięcie oprogramowania pośredniego, ale można wstrzyknąć static
oprogramowanie pośrednie wiele razy:
app.configure('development', function(){
app.use(express.static(__dirname + '/public1'));
app.use(express.static(__dirname + '/public2'));
});
Wyjaśnienie
Spójrz na connect / lib / middleware / static.js # 143 :
path = normalize(join(root, path));
Istnieje options.root
statyczny root, który definiujesz express.static
lub connect.static
wywołujesz, i path
jest to ścieżka żądania.
Więcej informacji na temat 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);
Ścieżka sprawdzana tylko raz, a jeśli nie znaleziono pliku, żądanie jest przekazywane do następnego oprogramowania pośredniego.
Aktualizacja dla Connect 2.x
Linki do kodu są nieaktualne dla Connect 2.x, ale użycie wielu statycznych programów pośrednich jest nadal możliwe, jak poprzednio.
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