- Gumroad đã cân nhắc htmx khi bắt đầu dự án mới Helper.
- Họ muốn dùng htmx để tránh sự phức tạp của React, nhưng trong nội bộ nhóm đã có ý kiến trái chiều.
- Ban đầu, htmx có vẻ đầy hứa hẹn cho việc bổ sung các tương tác đơn giản.
Giới hạn của htmx
- Tính trực quan và trải nghiệm lập trình viên: Làm việc với htmx không trực quan bằng Next.js. Khi triển khai các biểu mẫu phức tạp và kiểm tra hợp lệ động, logic phía máy chủ trở nên phức tạp hơn.
- Hạn chế về UX: htmx về cơ bản đi theo cách tiếp cận Rails/CRUD nên trải nghiệm người dùng trở nên đơn điệu hơn. Việc triển khai giao diện kéo và thả khó hơn so với React.
- Hỗ trợ AI và công cụ: Next.js thân thiện với các công cụ AI hơn, còn htmx thì không. Điều này ảnh hưởng đến tốc độ phát triển và xử lý vấn đề.
- Vấn đề mở rộng: Khi dự án trở nên phức tạp hơn, htmx không còn theo kịp các yêu cầu. Khi bổ sung cộng tác thời gian thực và các tính năng trực quan hóa dữ liệu phức tạp, việc quản lý trạng thái trở nên khó khăn.
- Cộng đồng và hệ sinh thái: Hệ sinh thái React/Next.js đã trưởng thành và cung cấp nhiều giải pháp đa dạng, còn htmx thì không.
Quyết định cuối cùng: chuyển sang React/Next.js
- React/Next.js phù hợp hơn để xây dựng UX phức tạp.
- Họ đã tận dụng các lợi thế của React trong kéo thả, quản lý trạng thái phức tạp, tạo biểu mẫu động, cộng tác thời gian thực và tối ưu hiệu năng.
- Họ chuyển sang React để vượt qua các giới hạn của htmx, và điều này hỗ trợ tầm nhìn dài hạn của dự án.
- Họ hài lòng với quyết định này và hiện tại có thể tiến nhanh hơn, tạo ra trải nghiệm người dùng hấp dẫn hơn, đồng thời tận dụng các công cụ và thư viện sẵn có.
Bài học rút ra từ trải nghiệm
- Việc cân nhắc các lựa chọn thay thế gọn nhẹ là quan trọng, nhưng chọn công nghệ có thể phát triển cùng dự án và hỗ trợ tầm nhìn dài hạn cũng quan trọng không kém.
- Với Helper, React và Next.js đã chứng minh là lựa chọn như vậy, và sau khi chuyển sang, họ đã có thể nâng cấp đáng kể trải nghiệm người dùng của ứng dụng dành cho khách hàng cốt lõi.
Tổng kết của GN⁺
- Trải nghiệm của Gumroad cho thấy việc cân nhắc các lựa chọn nhẹ hơn là quan trọng, nhưng quan trọng hơn là chọn công nghệ có thể hỗ trợ sự phát triển của dự án và tầm nhìn dài hạn.
- htmx có thể phù hợp với các mô hình tương tác đơn giản hoặc các ứng dụng render phía máy chủ hiện có.
- Với giao diện phức tạp dựa trên trạng thái của Helper, React và Next.js là lựa chọn tốt hơn.
- Stack công nghệ có thể được đánh giá lại theo nhu cầu, và điều quan trọng là duy trì sự linh hoạt mỗi khi công nghệ mới xuất hiện.
1 bình luận
Ý kiến trên Hacker News
CEO của Gumroad đã chia sẻ trải nghiệm thử dùng htmx rồi chuyển sang NextJS. Đây là thông tin hữu ích cho những ai đang tìm kiếm trải nghiệm không tích cực với htmx
Khi tạo các biểu mẫu phức tạp, logic phía máy chủ trở nên phức tạp và khó hơn công việc phía khách trong React
Họ đã cố giữ frontend nhẹ với htmx, nhưng cuối cùng lại phải dùng thư viện bên thứ ba để xử lý UI/UX phức tạp và quản lý trạng thái
Việc triển khai giao diện kéo thả bằng htmx khá khó, còn với thư viện React thì có thể có được trải nghiệm mượt hơn
htmx.onLoadđể tìm markup có thuộc tính trong nội dung đã tải và gắn kết chúngCó vẻ nhóm quen với phát triển frontend hơn và gặp khó khăn trong việc giao tiếp với backend
Có ý kiến cho rằng quá trình phát triển với Next.js diễn ra tự nhiên hơn
Có ý kiến cho rằng việc HTMX chia sẻ trải nghiệm như vậy là thú vị, và có những dự án mà chỉ riêng HTMX là không đủ
Có lời khen dành cho việc HTMX.org lưu trữ những bài viết kiểu này
Có lo ngại rằng công cụ AI có thể khiến việc chấp nhận framework hoặc ngôn ngữ lập trình mới trở nên khó khăn hơn