6 điểm bởi GN⁺ 2024-10-04 | 1 bình luận | Chia sẻ qua WhatsApp
  • 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

 
GN⁺ 2024-10-04
Ý 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

    • Các công cụ AI quen thuộc với Next.js nhưng không quen với htmx. Điều này đưa ra một dự báo quan trọng về tương lai của công cụ phát triển
    • Có dự đoán rằng LLMs sẽ củng cố cấu trúc kẻ thắng lấy hết hiện có và khuyến khích việc sử dụng các công cụ mã nguồn mở
  • 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

    • Có một meme nhấn mạnh rằng vẫn phải triển khai kiểm tra tính hợp lệ ở phía máy chủ
  • 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

    • Có ý kiến cho rằng làm việc trong React dễ hơn là vì đã sử dụng thư viện bên thứ ba
    • Nếu phải quản lý trạng thái phức tạp và render, thì có lẽ htmx ngay từ đầu đã không phải là lựa chọn tốt
  • 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

    • Với htmx, tốt hơn là chỉ dùng đúng lượng frontend bundle cần thiết
    • Có thể tận dụng sự kiện htmx.onLoad để tìm markup có thuộc tính trong nội dung đã tải và gắn kết chúng
  • Có 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

    • Họ cũng thừa nhận ưu điểm của component React cũng như việc dễ tìm tài liệu và trợ giúp
  • 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ũng có ý kiến rằng cú pháp ReactJS không tự nhiê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 đủ

    • Nhấn mạnh rằng kiểm tra tính hợp lệ của biểu mẫu vẫn cần ở backend
    • Trường hợp một đội ngũ ngày càng phụ thuộc vào công cụ AI là điều đáng chú ý
    • Có ý kiến cho rằng cần các plugin để bù đắp giới hạn của HTMX
  • 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

    • Người ta hình dung khả năng nó sẽ ảnh hưởng đến công cụ phát triển theo cách tương tự SEO