Mümkün mü? Statik dosyaları sunmak için iki farklı dizin oluşturmak istiyorum. Diyelim ki / public ve / mnt
Yanıtlar:
Ayrıca, use()
hoşunuza giden ek (ilk) bir parametre belirleyerek, statik dosyaların web'e sunulacağı yolu da ayarlayabilirsiniz :
app.use("/public", express.static(__dirname + "/public"));
app.use("/public2", express.static(__dirname + "/public2"));
Bu şekilde, iki yerel dizin arasında başarısız olan tek bir url yolu değil, yerel dizinlerinizi yansıtan iki farklı dizin elde edersiniz.
Başka bir deyişle, URL kalıbı:
http://your.server.com/public/*
Dosyaları yerel dizinden public
sunarken:
http://your.server.com/public2/*
Dosyaları yerel dizinden sunar public2
.
BTW, statik dosyaların sunucunuzun kökünden değil, daha nitelikli bir yoldan sunulmasını istemiyorsanız da yararlıdır.
HTH
"homepage": "/public"
ve eklemeniz gerekir "homepage": "/public2"
. İki react uygulamasını kullanma hakkında daha fazla bilgi için
shared
kullanabilirsiniz böylece klasör "./"
ve "./shared"
3 teşekkür ederiz: ve kolayca paylaşmak js dosyaları bom
Ayrıca dizinleri tek bir görünür dizinde "birleştirebilirsiniz"
Dizin Yapısı
/static
/alternate_static
Kod
app.use("/static", express.static(__dirname + "/static"));
app.use("/static", express.static(__dirname + "/alternate_static"));
Hem statik hem de alternate_static aynı dizindeymiş gibi sunulacaktır. Yine de dosya adı yoncalarına dikkat edin.
main.js
, static/
bakmaya devam etmez alternate_static/
.
alternate_static
teslim edilmesini bekliyor olsaydınız, bu hala bir tıkanıklıktır .
Tek bir ara katman yazılımı enjeksiyonu ile mümkün değildir, ancak static
ara katman yazılımını birden çok kez enjekte edebilirsiniz :
app.configure('development', function(){
app.use(express.static(__dirname + '/public1'));
app.use(express.static(__dirname + '/public2'));
});
Açıklama
Bak bağlantı / lib / katman / static.js # 143 :
path = normalize(join(root, path));
İçinde options.root
tanımladığınız express.static
veya connect.static
çağırdığınız statik kök vardır ve path
istek yolu vardır.
Connect / lib / middleware / static.js # 154'e daha fazla bakın :
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);
Yol yalnızca bir kez kontrol edildi ve dosya bulunamazsa istek sonraki ara yazılıma iletildi.
Connect 2.x için güncelleme
Connect 2.x için koda bağlantılar gerçek değildir, ancak daha önce olduğu gibi çoklu statik ara yazılım kullanımı hala mümkündür.
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