Tôi có tập tin địa điểm sau:Làm cách nào để phân phối tệp tĩnh thông qua Node.js cục bộ?
file:///Users/MyName/Developer/sitename/scripts (contains all .js files..)
file:///Users/MyName/Developer/sitename/css (contains all .css files..)
file:///Users/MyName/Developer/sitename/images (contains all .jpg/png/etc. files..)
file:///Users/MyName/Developer/sitename/sitename.html
file:///Users/MyName/Developer/sitename/server.js
Bên sitename.html
tôi tải tất cả các file cần thiết như sau ví dụ:
<html>
<head>
<script src="scripts/somefile.js"></script>
</head>
...
</html>
Vì vậy, bất cứ khi nào tôi mở ra file:///Users/MyName/Developer/sitename/sitename.html
tất cả mọi thứ hoạt động tốt.
Tuy nhiên, bất cứ khi nào tôi cố gắng để tải file:///Users/MyName/Developer/sitename/sitename.html
qua một máy chủ Node.js địa phương mà tôi đã thiết lập (file máy chủ vị trí: file:///Users/MyName/Developer/sitename/server.js
) như sau:
var http = require("http");
var fs = require("fs");
fs.readFile('./sitename.html', function (err, html)
{
if (err) throw err;
http.createServer(function (request,response)
{
// serve site
if (request.url === "/")
{
response.writeHeader(200, {"Content-Type": "text/html"});
response.write(html);
}
response.end();
}).listen(8080);
});
sitename.html
được tìm thấy và tải nhưng tất cả các khác các tệp được cho là tải thông qua nó không tải được vì tất cả chúng đều có tiền tố http://localhost:8080/
(http://localhost:8080/scripts/somefile.js
không phải là đường dẫn tệp hợp lệ). Có vẻ như ngay sau khi máy chủ được tạo ra (bên trong http.createServer(.....);
) thay đổi ngữ cảnh và thư mục mẹ bây giờ trở thành http://localhost:8080/
thay vì file:///Users/MyName/Developer/sitename/
, điều này có ý nghĩa nhưng không hữu ích khi sử dụng các tệp vẫn được lưu trữ cục bộ.
Làm cách nào để giải quyết vấn đề này? Thực tế là tôi đang lưu trữ server.js
(chỉ trong thời gian này) trong cùng một thư mục làm cho mọi việc trở nên khó hiểu hơn?
Cảm ơn!
Xin cảm ơn rất nhiều vì đã trả lời của bạn. Tôi sẽ xem xét 2 tùy chọn bạn đã đề xuất. Nhưng chỉ vì tôi mới làm điều này, bạn có thể vui lòng xây dựng thêm một chút không: Vì vậy, bất cứ khi nào ai đó xây dựng một ứng dụng web và sử dụng Node.js để phục vụ ứng dụng và ứng dụng có nhiều tệp tĩnh (hiển nhiên), điều đó có nghĩa là họ luôn cần sử dụng "plugin" giống như plugin bạn đã đề xuất khi thử nghiệm ứng dụng của họ tại địa phương? Có vẻ hơi lạ một chút, Node không có tùy chọn mặc định để chỉ định vị trí thư mục mẹ cho tất cả các tệp tĩnh sẽ được phân phát.? Cảm ơn một lần nữa vì sự giúp đỡ của bạn! –
Node cung cấp cho bạn các công cụ để phục vụ các tệp đó, bạn chỉ cần thực hiện nó. Đó là lý do tại sao rất nhiều mô-đun tồn tại, bởi vì chức năng chỉ không đi ra khỏi hộp. Bạn chắc chắn có thể phục vụ tệp với Node.js nhưng bạn sẽ phải triển khai một tuyến đường trong máy chủ của bạn nhận ra yêu cầu cho "/style.css" và đọc tệp đó từ đĩa. –
Cảm ơn rất nhiều vì đã làm rõ rằng Jeff –