Jawaban:
Anda juga dapat menyetel jalur tempat file statis akan disajikan ke web dari dengan menentukan parameter tambahan (pertama) untuk use()
menyukainya:
app.use("/public", express.static(__dirname + "/public"));
app.use("/public2", express.static(__dirname + "/public2"));
Dengan begitu Anda mendapatkan dua direktori berbeda di web yang mencerminkan direktori lokal Anda, bukan satu jalur url yang gagal di antara dua direktori lokal.
Dengan kata lain pola URL:
http://your.server.com/public/*
Melayani file dari direktori lokal public
sementara:
http://your.server.com/public2/*
Melayani file dari direktori lokal public2
.
BTW ini juga berguna jika Anda tidak ingin statis menyajikan file dari root server Anda, tetapi dari jalur yang lebih berkualitas.
HTH
"homepage": "/public"
dan "homepage": "/public2"
ke package.json aplikasi react masing-masing. Untuk info lebih lanjut tentang menggunakan dua aplikasi reaksi, lihat jawaban saya di sini stackoverflow.com/a/48569896/4746648
shared
folder sehingga Anda dapat menggunakan "./"
dan "./shared"
dan booming Anda dapat dengan mudah berbagi file js: 3 Terima kasih
Anda juga dapat "menggabungkan" direktori menjadi satu direktori yang terlihat
Struktur Direktori
/static
/alternate_static
Kode
app.use("/static", express.static(__dirname + "/static"));
app.use("/static", express.static(__dirname + "/alternate_static"));
Baik static dan alternate_static akan ditampilkan seolah-olah berada di direktori yang sama. Hati-hati dengan clobbers nama file.
main.js
di static/
dalamnya tidak akan terus mencari alternate_static/
.
alternate_static
akan pernah disajikan.
Ini tidak mungkin dilakukan dengan satu injeksi middleware, tetapi Anda dapat menginjeksi static
middleware beberapa kali:
app.configure('development', function(){
app.use(express.static(__dirname + '/public1'));
app.use(express.static(__dirname + '/public2'));
});
Penjelasan
Lihat connect / lib / middleware / static.js # 143 :
path = normalize(join(root, path));
Ada options.root
root statis, yang Anda definisikan express.static
atau connect.static
panggil, dan path
merupakan jalur permintaan.
Lihat lebih lanjut di 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);
Lokasi diperiksa hanya sekali, dan jika file tidak ditemukan, permintaan diteruskan ke middleware berikutnya.
Pembaruan untuk Connect 2.x
Tautan ke kode tidak sebenarnya untuk Connect 2.x, tetapi beberapa penggunaan middleware statis masih memungkinkan seperti sebelumnya.
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