7. Express Framework
7.5.5 Truy cập file tĩnh trong express
Như các bạn đã biết mỗi đường dẫn để chúng ta truy cập ở trong server express đều được lắng nghe và điều hướng bởi router.
Chính vì thếkhi muốn ứng dụng của chúng ta có thể truy cập được các file tĩnh ở
trên server chúng ta cũng phải tạo ra router cho các file ấy.
Việc tạo router cho một vài file thì không có gì khó, nhưng bạn thử hình dụng xem trong ứng dụng của chúng ta có thể có tới hàng chục hàng trăm file tĩnh mà ứng dụng cần phải truy cập, thì việc tạo router thực sự rất khó khăn.
Hiểu thấu được sự khó khăn của các bạn nên express đã cung cấp thêm cho các
Phạm Đình Nam –Trường Caođẳng nghề Đà Lạt Trang 39
Cấu hình và sử dụng
Việc cấu hình để truy cập file tĩnh trong express khá đơn giản. Cú pháp
express.static(root, [options]) Mô tả tham số
expressthể hiện của express khi được yêu cầu.
rootđường dẫn gốc lưu trữ các file tĩnh
options các thiết lập khác
Ví dụ sau đây sẽ dùng để chia sẻ các tập tin tĩnh ở trong thư mục public.
var express = require('express'); var app = express();
app.use(express.static('public')) app.listen(3000)
Bây giờ các bạn có thể truy cập các file có trong thư mục public. http://localhost:3000/images/logo.jpg
http://localhost:3000/css/style.css http://localhost:3000/js/app.js http://localhost:3000/images/bg.png http://localhost:3000/hello.html
Express sẽ tìm kiếm các tệp liên quan đến thư mục chứa file tĩnh, vì vậy tên của thư mục chứa file sẽ không có trong URL.
Để sử dụng nhiều thư mục chứa file tĩnh. Bạn có thể thể gọi bằng express.static nhiều lần.
app.use(express.static('public')) app.use(express.static('files'))
Để tạo tiền tố đường dẫn ảo cho các tập tin được cung cấp bởi express.static chúng ta có thể chỉ định nó như ví dụ bên dưới.
app.use('/static', express.static('public'))
Lúc này các bạn có thể tải được các file trong thư mục public bằng tiền tố static.
Phạm Đình Nam –Trường Caođẳng nghề Đà Lạt Trang 40 http://localhost:3000/static/css/style.css http://localhost:3000/static/js/app.js http://localhost:3000/static/images/bg.png http://localhost:3000/static/hello.html Tham số options
Bảng sau đây mô tả các thuộc tính của optionsđối tượng. Xem thêm ví dụ bên
dưới .
Thuộc tính Miêu tả Kiểu Mặc định
dotfiles
Xác định cách dấu chấm (các tệp hoặc thư mục bắt đầu bằng dấu chấm “.”)
Được xử lý.Xem dấuchấmbên dưới. String “ignore”
etag
Bật hoặc tắt thế hệ etagLƯU Ý: express.staticluôn gửi cácthẻ
ETAG yếu. Boolean true
extensions
Đặt các hạn chế của tệp mở rộng: Nếu không tìm thấy tệp, hãy tìm kiếm tệp có các tiện ích mở rộng được chỉ định và
phân phát tệp đầu tiên được tìm thấy. Ví
dụ: ['html', 'htm'].
Mixed false
fallthrough
Hãy để lỗi khách hàng gặp phải là các yêu cầu chưa được giải quyết, nếu không thì sẽ chuyển tiếp lỗi máy khách.Xem fallthrough dưới đây.
Boolean true
immutable
Bật hoặc tắt immutablechỉ thị
trong Cache-Controltiêu đề phản hồi.Nếu
được bật, maxAgetùy chọn cũng phải
được chỉ định để bật bộ nhớ đệm. Các immutablechỉ thị sẽ ngăn chặn khách hàng được hỗ trợ những nhu cầu có điều kiện trong suốt cuộc đời của maxAgetùy chọn để kiểm tra xem các tập tin đã thay đổi.
Boolean false
index Gửi tệp chỉ mục thư mục được chỉ
Phạm Đình Nam –Trường Caođẳng nghề Đà Lạt Trang 41
Thuộc tính Miêu tả Kiểu Mặc định
lastModified Đặt Last-Modifiedtiêu đề cho ngày sửa
đổi cuối cùng của tệp trên hệ điều hành. Boolean true
maxAge
Đặt thuộc tính độ tuổi tối đa của tiêu
đề Bộ nhớ cache-Kiểm soát tính bằng
mili giây hoặc chuỗi theođịnh dạng ms .
Number 0
redirect Chuyển hướng đến dấu “/” khi tên
đường dẫn là một thư mục. Boolean true
setHeaders
Chức năng để đặt tiêu đề HTTP để
phân phối cùng với
tệp.Xem setHeaders dưới đây. Function