Chương này giới thiệu về framework Go Iris và cách xử lý các tệp tĩnh. Đôi khi trong dự án, có một số tệp tĩnh cần được phơi trực tiếp để người dùng truy cập. Làm thế nào để thiết lập điều này?

Iris Exposes Static Files

func main() {
    app := iris.New()
	// Đặt biểu tượng trang
    app.Favicon("./resources/favicon.ico")
	// Đặt đường dẫn cho tệp tĩnh và liên kết địa chỉ URL
    app.HandleDir("/assets", iris.Dir("./assets"))

    app.Listen(":8080")
}

Phương thức HandleDir chấp nhận một tham số tùy chọn thứ ba DirOptions:

type DirOptions struct {
    // Mặc định là "/index.html". Nếu đường dẫn yêu cầu kết thúc bằng **/*/$IndexName, nó sẽ chuyển hướng đến **/*(/),
    // dẫn đến một xử lý viên khác đang được phục vụ bởi framework được đăng ký tự động như xử lý viên chỉ mục
    // nếu người phát triển cuối không xử lý nó thủ công.
    IndexName string
    // PushTargets tên tệp (giá trị được ánh xạ) để phục vụ mà không cần yêu cầu khách hàng bổ sung (HTTP/2 Push) khi đường dẫn yêu cầu cụ thể (khóa của bản đồ mà không có tiền tố)
    // yêu cầu đường dẫn (khóa của bản đồ không có tiền tố) không phải là một thư mục (là một `IndexFile`) hoặc khi nên.
    //PushTargetsRegexp tương tự như `PushTargets` nhưng nó chấp nhận một biểu thức chính quy sẽ được so sánh với tất cả các tệp trong thư mục (theo cách đệ quy).
    // `IndexName` nên được đặt.
    // Ví dụ
    // "/": regexp.MustCompile("((.*).js|(.*).css|(.*).ico)$")
    // Xem thêm `iris.MatchCommonAssets`.
    PushTargetsRegexp map[string]*regexp.Regexp

    // Bộ nhớ đệm để bật bộ nhớ đệm trong bộ nhớ và tệp được nén trước.
    Cache DirCacheOptions
    // Khi tệp nên được phục vụ ở trạng thái nén.
    Compress bool

    // Liệt kê các tệp trong thư mục yêu cầu hiện tại nếu `IndexName` không được tìm thấy.
    ShowList bool
    // Nếu `ShowList` là true, thì hàm này sẽ được sử dụng để hiển thị danh sách tệp của thư mục yêu cầu hiện tại (dir)
    // thay vì hàm mặc định.
    DirList DirListFunc

    // Tải và lưu vào tệp cục bộ. 
    Attachments Attachments

    // Trình xác thực tùy chọn để sử dụng để lặp lại qua mỗi nguồn của yêu cầu.
    AssetValidator func(ctx *context.Context, name string) bool
}