Pertanyaan Menyiapkan dua direktori statis berbeda dalam kerangka kerja node.js Express


Apa itu mungkin? Saya ingin membuat dua direktori berbeda untuk melayani file statis. Katakanlah / publik dan / mnt


75
2018-05-12 04:53


asal


Jawaban:


Anda juga dapat mengatur jalur agar file statis akan disajikan ke web dari dengan menentukan parameter tambahan (pertama) ke use() seperti ini:

app.use("/public", express.static(__dirname + "/public"));
app.use("/public2", express.static(__dirname + "/public2"));

Dengan cara itu 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 untuk melayani file dari root server Anda, tetapi dari jalur yang lebih berkualitas.

HTH


122
2017-09-28 22:51



Ini tidak mungkin dengan satu injeksi middleware, tetapi Anda bisa menyuntikkannya static middleware beberapa kali:

app.configure('development', function(){
    app.use(express.static(__dirname + '/public1'));
    app.use(express.static(__dirname + '/public2'));
});

Penjelasan

Melihat hubungkan / lib / middleware / static.js # 143:

path = normalize(join(root, path));

Ada options.root adalah root statis, yang Anda definisikan express.static atau connect.static panggilan, dan path adalah jalur permintaan.

Lihatlah lebih jauh hubungkan / 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);

Path diperiksa hanya sekali, dan jika permintaan file tidak ditemukan dilewatkan ke middleware berikutnya.

Pembaruan untuk Connect 2.x

Tautan ke kode tidak berlaku untuk Connect 2.x, tetapi beberapa penggunaan middleware statis masih dapat dilakukan seperti sebelumnya.


39
2018-05-12 10:23



Anda juga dapat "menggabungkan" direktori ke dalam 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 maupun alternate_static akan disajikan seolah-olah mereka berada di direktori yang sama. Watch out untuk clobbers nama file, meskipun.


38
2018-02-12 19:34