Câu trả lời:
Bạn cũng có thể đặt đường dẫn mà các tệp tĩnh sẽ được phân phát tới web bằng cách chỉ định một tham số bổ sung (đầu tiên) use()
như vậy:
app.use("/public", express.static(__dirname + "/public"));
app.use("/public2", express.static(__dirname + "/public2"));
Bằng cách đó, bạn nhận được hai thư mục khác nhau trên web sao chép các thư mục cục bộ của bạn, chứ không phải một đường dẫn url bị lỗi giữa hai thư mục cục bộ.
Nói cách khác, mẫu URL:
http://your.server.com/public/*
Cung cấp tệp từ thư mục cục bộ public
trong khi:
http://your.server.com/public2/*
Cung cấp các tệp từ thư mục cục bộ public2
.
BTW điều này cũng hữu ích nếu bạn không muốn tĩnh phân phát các tệp từ thư mục gốc của máy chủ mà từ một đường dẫn đủ điều kiện hơn.
HTH
"homepage": "/public"
và "homepage": "/public2"
vào package.json của ứng dụng phản ứng tương ứng. Để biết thêm thông tin về cách sử dụng hai ứng dụng phản ứng, hãy xem câu trả lời của tôi tại đây stackoverflow.com/a/48569896/4746648
shared
thư mục để bạn có thể sử dụng "./"
và "./shared"
và bùng nổ, bạn có thể dễ dàng chia sẻ tệp js: 3 Cảm ơn bạn
Bạn cũng có thể "hợp nhất" các thư mục thành một thư mục hiển thị duy nhất
Cấu trúc thư mục
/static
/alternate_static
Mã
app.use("/static", express.static(__dirname + "/static"));
app.use("/static", express.static(__dirname + "/alternate_static"));
Cả static và alternate_static sẽ được phục vụ như thể chúng nằm trong cùng một thư mục. Tuy nhiên, hãy chú ý đến những phần mềm làm nghẽn tên tệp.
main.js
trong static/
nó sẽ không tiếp tục nhìn vào alternate_static/
.
alternate_static
sẽ được phục vụ.
Không thể thực hiện bằng một lần tiêm phần mềm trung gian, nhưng bạn có thể tiêm static
phần mềm trung gian nhiều lần:
app.configure('development', function(){
app.use(express.static(__dirname + '/public1'));
app.use(express.static(__dirname + '/public2'));
});
Giải trình
Xem kết nối / lib / middleware / static.js # 143 :
path = normalize(join(root, path));
Có một options.root
gốc tĩnh, mà bạn xác định trong express.static
hoặc connect.static
gọi, và path
là đường dẫn yêu cầu.
Xem thêm tại 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);
Đường dẫn chỉ được kiểm tra một lần và nếu không tìm thấy tệp, yêu cầu được chuyển đến phần mềm trung gian tiếp theo.
Cập nhật cho Connect 2.x
Các liên kết tới mã không thực tế đối với Connect 2.x, nhưng việc sử dụng nhiều phần mềm trung gian tĩnh vẫn có thể xảy ra như trước đây.
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