Thông thường, bạn không muốn tiết lộ bất kỳ đường dẫn nội bộ nào về cách máy chủ của bạn được cấu trúc với thế giới bên ngoài. Những gì bạn có thể là tạo một /scripts
tuyến tĩnh trong máy chủ của mình để tìm nạp các tệp của nó từ bất kỳ thư mục nào mà chúng xảy ra để cư trú. Vì vậy, nếu các tệp của bạn nằm trong "./node_modules/bootstrap/dist/"
. Sau đó, thẻ script trong các trang của bạn trông giống như thế này:
<script src="/scripts/bootstrap.min.js"></script>
Nếu bạn đang sử dụng express với nodejs, một tuyến tĩnh cũng đơn giản như sau:
app.use('/scripts', express.static(__dirname + '/node_modules/bootstrap/dist/'));
Sau đó, mọi yêu cầu trình duyệt từ /scripts/xxx.js
sẽ tự động được tải từ dist
thư mục của bạn tại __dirname + /node_modules/bootstrap/dist/xxx.js
.
Lưu ý: Các phiên bản NPM mới hơn đặt nhiều thứ hơn ở cấp cao nhất, không được lồng quá sâu, vì vậy nếu bạn đang sử dụng phiên bản NPM mới hơn, thì tên đường dẫn sẽ khác với chỉ định trong câu hỏi của OP và trong câu trả lời hiện tại. Nhưng, khái niệm vẫn giống nhau. Bạn tìm ra nơi các tập tin có thể chất nằm trên ổ đĩa máy chủ của bạn và bạn thực hiện app.use()
với express.static()
để thực hiện một pseudo-đường dẫn đến các tập tin, do đó bạn không được phơi bày việc tổ chức hệ thống tập tin máy chủ thực sự cho khách hàng.
Nếu bạn không muốn tạo một tuyến tĩnh như thế này, thì có lẽ tốt hơn hết bạn chỉ nên sao chép các tập lệnh công khai vào một đường dẫn mà máy chủ web của bạn coi là /scripts
hoặc bất kỳ chỉ định cấp cao nhất nào bạn muốn sử dụng. Thông thường, bạn có thể biến phần sao chép này trong quá trình xây dựng / triển khai của mình.
Nếu bạn muốn chỉ công khai một tệp cụ thể trong một thư mục và không phải mọi thứ được tìm thấy trong thư mục đó, thì bạn có thể tự tạo các tuyến riêng lẻ cho mỗi tệp thay vì sử dụng express.static()
như:
<script src="/bootstrap.min.js"></script>
Và mã để tạo ra một tuyến đường cho điều đó
app.get('/bootstrap.min.js', function(req, res) {
res.sendFile(__dirname + '/node_modules/bootstrap/dist/bootstrap.min.js');
});
Hoặc, nếu bạn vẫn muốn phân định các tuyến đường cho các tập lệnh với /scripts
, bạn có thể làm điều này:
<script src="/scripts/bootstrap.min.js"></script>
Và mã để tạo ra một tuyến đường cho điều đó
app.get('/scripts/bootstrap.min.js', function(req, res) {
res.sendFile(__dirname + '/node_modules/bootstrap/dist/bootstrap.min.js');
});