Làm chủ HTML4: Bước tiến tiếp theo của siêu phương tiện

Cập nhật lần cuối: 09/29/2026
  • Chuyển đổi từ XMLHttpRequest sang API fetch() gốc để có hiệu suất tốt hơn và khả năng truyền dữ liệu nhanh hơn.
  • Chuyển sang kế thừa thuộc tính rõ ràng và quy ước đặt tên sự kiện được chuẩn hóa.
  • Giới thiệu về hoán đổi hình thái và thẻ hx-partial để cập nhật DOM phức tạp.
  • Cải tiến việc quản lý lịch sử bằng cách thay thế các bản sao lưu cục bộ bằng các yêu cầu máy chủ thực tế.

Sơ đồ màu HTML có sẵn trong một quần thể màu ordenador, đại diện cho nền tảng cơ bản về htmx có thể tương tác.

Nếu bạn đã hoạt động trong lĩnh vực phát triển web một thời gian, có lẽ bạn biết rằng htmx về cơ bản là một "thủ thuật" cho HTML của bạn. Nó cho phép bạn thực hiện những việc thường yêu cầu một framework JavaScript đồ sộ—như cập nhật trang mà không cần tải lại toàn bộ—chỉ bằng cách thêm một vài thuộc tính vào thẻ của bạn. Việc phát hành htmx 4 là một bước tiến lớn vì nó không chỉ bổ sung một vài tính năng mới; về cơ bản nó đã tái cấu trúc lại toàn bộ hệ thống để làm cho ứng dụng của bạn hoạt động nhanh hơn và đáng tin cậy hơn nhiều.

Triết lý cốt lõi vẫn giữ nguyên: giữ logic trên máy chủ và sử dụng Siêu văn bản làm động cơ của trạng thái ứng dụng (HATEOAS) . Thay vì trao đổi JSON qua lại, htmx 4 yêu cầu máy chủ cung cấp các đoạn HTML và chèn chúng trực tiếp vào DOM. Đó là một luồng gió mới cho bất kỳ ai đã mệt mỏi với sự phức tạp của các công cụ frontend hiện đại, tập trung vào tính cục bộ của hành vi để bạn thực sự có thể hiểu mã của mình đang làm gì chỉ bằng cách nhìn vào HTML.

Cuộc truy tìm vĩ đại

Không gian giao dịch hiện đại trong việc giải mã web với máy tính xách tay và các công nghệ công nghệ.

Thay đổi nội bộ quan trọng nhất là htmx cuối cùng đã loại bỏ XMLHttpRequest để chuyển sang sử dụng API fetch() gốc . Mặc dù điều này có vẻ như là một chi tiết nhỏ không mấy thú vị, nhưng thực chất nó là một bước ngoặt lớn. Việc sử dụng fetch giúp thư viện gọn nhẹ hơn và mở ra cánh cửa cho việc xử lý HTML truyền tải nâng cao . Tuy nhiên, điều này có nghĩa là các sự kiện dành riêng cho XHR đã bị loại bỏ, và bạn sẽ nhận thấy rằng thời gian chờ yêu cầu hiện mặc định là 60 giây thay vì treo vô thời hạn.

Phá bỏ thói quen thừa kế

Một trong những trở ngại lớn nhất khi chuyển từ phiên bản 2 sang 4 là cách các thuộc tính được truyền xuống các phần tử con. Trước đây, sự kế thừa diễn ra ngầm định—nếu bạn đặt một hộp thoại xác nhận trên một thẻ div, mọi nút bên trong nó đều nhận được hộp thoại đó. Giờ đây, bạn phải thể hiện rõ ràng bằng cách thêm từ khóa :inherited vào thuộc tính. Ví dụ, sử dụng hx-confirm:inherited cho htmx biết rằng hành vi này nên được truyền xuống cây DOM. Điều này giúp loại bỏ cảm giác khó chịu "tác vụ từ xa" và giúp việc gỡ lỗi giao diện người dùng dễ dàng hơn rất nhiều.

Trao đổi thông minh hơn và nhắm mục tiêu đa chiều

Chi tiết về thương hiệu HTML và một trình soạn thảo có sẵn với modo oscuro, lý tưởng để minh họa sự đơn giản hóa của htmx.

Việc hoán đổi nội dung là điểm mạnh thực sự của htmx, và phiên bản 4 giới thiệu Morph Swaps (innerMorph và outerMorph). Thay vì chỉ đơn thuần cắt bỏ một phần của trang và chèn HTML mới vào, việc hoán đổi sử dụng thuật toán idiomorph để hợp nhất các thay đổi. Điều này rất hữu ích để duy trì tiêu điểm nhập liệu hoặc giữ cho video tiếp tục phát trong khi phần còn lại của nội dung được cập nhật. Ngoài ra, thẻ <hx-partial> mới cho phép một phản hồi duy nhất từ ​​máy chủ cập nhật nhiều phần khác nhau của trang, mang lại cho bạn nhiều quyền kiểm soát hơn so với các phương pháp hoán đổi ngoài luồng (OOB) cũ.

Xử lý lỗi và lịch sử

Trong các phiên bản trước, htmx thường bỏ qua các phản hồi lỗi 400 hoặc 500. Nhưng giờ thì khác rồi. htmx 4 mặc định hoán đổi các phản hồi lỗi , điều này rất tuyệt vời để hiển thị các lỗi xác thực phía máy chủ. Để quản lý điều này, bạn có thể sử dụng thuộc tính hx-status để định tuyến các mã cụ thể (như 422) đến một div lỗi chuyên dụng. Về lịch sử, thư viện đã ngừng lưu ảnh chụp nhanh DOM vào localStorage. Giờ đây, khi người dùng nhấn nút quay lại, htmx chỉ đơn giản là tải lại trang từ máy chủ , đảm bảo trạng thái luôn mới và không phải là bản sao cũ kỹ của phiên trước.

Sự kiện, Tiện ích mở rộng và Kịch bản

Trang tổng quan web hiện đại và tối ưu với dữ liệu thực tế, minh họa kết quả trực quan về một ứng dụng xây dựng với htmx.

Hệ thống sự kiện đã được tinh chỉnh hoàn toàn để tuân theo mô hình htmx:phase:action . Tính nhất quán này giúp việc can thiệp vào vòng đời của một yêu cầu trở nên dễ dàng hơn nhiều. Về mặt mở rộng, hiện tại chúng tôi đã hỗ trợ đầy đủ các tính năng SSE (Server-Sent Events), WebSockets và phản hồi đa phần/hỗn hợp , giúp việc xây dựng bảng điều khiển thời gian thực trở nên dễ dàng hơn. Đối với những người cần khả năng phản hồi phía máy khách, hx-live cung cấp giải pháp lập trình dựa trên DOM, mang lại cảm giác như sự kết hợp giữa Alpine.js và jQuery, cho phép bạn thao tác các phần tử bằng bộ chọn q() đơn giản.

Đường dẫn cài đặt và nâng cấp

Nếu bạn đang bắt đầu một dự án mới, chỉ cần tải phiên bản 4 mới nhất thông qua CDN hoặc NPM. Đối với các ứng dụng hiện có, nhóm đã cung cấp một công cụ nâng cấp dòng lệnh (thông qua npx) để quét các mẫu của bạn tìm các thuộc tính lỗi thời và tên sự kiện cũ. Nếu bạn chưa sẵn sàng cho một bước chuyển đổi hoàn toàn, tiện ích mở rộng htmx-2-compat có thể tạm thời khôi phục các hành vi cũ. Điều đáng lưu ý là phiên bản 2 vẫn được hỗ trợ và sẽ giữ nguyên thẻ 'mới nhất' trên NPM cho đến đầu năm 2027 để tránh vô tình làm hỏng hàng triệu trang web sử dụng các liên kết CDN không có phiên bản.

Bảo mật và các phương pháp hay nhất

Vì htmx cho phép bạn chèn HTML trực tiếp, việc mã hóa nội dung người dùng là điều bắt buộc để ngăn chặn các cuộc tấn công XSS. Thuộc tính hx-ignore là một công cụ tuyệt vời ở đây; nó cho htmx biết bỏ qua hoàn toàn việc xử lý bất kỳ thuộc tính nào bên trong một vùng chứa cụ thể, điều này rất lý tưởng để hiển thị nội dung thô do người dùng tạo ra một cách an toàn. Đối với các môi trường bảo mật cao, tiện ích mở rộng hx-csp giúp tích hợp với các Chính sách Bảo mật Nội dung nghiêm ngặt bằng cách quản lý nonce và giới hạn nơi các yêu cầu có thể được gửi đến.

Sự phát triển này của htmx đã biến thư viện từ một công cụ tiện ích thông minh thành một nền tảng vững chắc cho các dịch vụ web lâu dài. Bằng cách tận dụng API fetch, làm rõ cách các thuộc tính được kế thừa và giới thiệu các tính năng biến đổi và cập nhật từng phần tinh vi, nó loại bỏ sự cản trở giữa máy chủ và trình duyệt. Cho dù bạn đang xây dựng một ứng dụng CRUD đơn giản hay một giao diện thời gian thực phức tạp, sự kết hợp giữa hệ thống sự kiện được đơn giản hóa và các tiện ích mở rộng truyền phát mạnh mẽ giúp việc tạo ra trải nghiệm động trở nên dễ dàng hơn bao giờ hết mà không cần rời khỏi môi trường HTML quen thuộc.

bài viết liên quan: