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 publicsementara:
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
sharedfolder 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_staticKode
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.jsdi static/dalamnya tidak akan terus mencari alternate_static/.
alternate_staticakan pernah disajikan.
Ini tidak mungkin dilakukan dengan satu injeksi middleware, tetapi Anda dapat menginjeksi staticmiddleware 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.rootroot statis, yang Anda definisikan express.staticatau connect.staticpanggil, dan pathmerupakan 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