9 điểm bởi GN⁺ 2024-12-05 | 7 bình luận | Chia sẻ qua WhatsApp
  • Năm nay, sau khi thực hiện một dự án cá nhân bằng Go, HTMX và Templ, tôi đã quyết định từ bỏ việc dùng React
    • Có thể tìm thấy nhiều lập luận thuyết phục trên trang web chính thức của HTMX về việc từ bỏ React để chọn HTMX, nhưng tôi cảm thấy không nhiều người nói về sự mệt mỏi khi quản lý phụ thuộc
  • "Mệt mỏi với việc quản lý phụ thuộc" là gì?
    • Trong dự án cá nhân cuối cùng dùng React của tôi (một từ điển tiếng Catalunya tương tác), tôi nhận ra mình đã dành quá nhiều thời gian chủ yếu cho việc cập nhật các phụ thuộc của gói React
    • Khi cập nhật các gói lên bản phát hành mới nhất, những thay đổi lớn trong API xuất hiện và tôi phải dành thời gian để refactor mã
    • Vì ứng dụng web đã được triển khai công khai trên một instance EC2, tôi muốn tiếp tục duy trì việc cập nhật phụ thuộc
  • Liệu các bản phát hành major mới có thực sự cần thiết?
    • Các gói như wouter (gói router cho React) và TanStackQuery (được dùng để lấy dữ liệu từ backend, cache và quản lý trạng thái) đã làm ứng dụng web hỏng nghiêm trọng do các bản cập nhật major
    • Khi bản cập nhật major đầu tiên làm ứng dụng bị hỏng, tôi đã refactor mã mà không thắc mắc gì, nhưng đến lần thứ hai thì tôi bắt đầu đặt câu hỏi
    • Tôi tự hỏi ứng dụng web thực sự nhận được lợi ích gì từ các bản phát hành major, ngoài các bản vá bảo mật
    • Tôi tự hỏi việc phá vỡ API của các thành phần cốt lõi tới 5 lần có thật sự cần thiết hay không
    • Tôi suy nghĩ về việc đã đánh mất bao nhiêu thời gian đáng lẽ có thể dùng để phát hành tính năng mới hoặc ra mắt sản phẩm khác
  • Vấn đề thiếu thời gian
    • Vì tôi không có nhiều thời gian dành cho các dự án lập trình cá nhân, tôi không muốn lãng phí thời gian refactor mã sau các bản cập nhật major của phụ thuộc
    • Nếu bạn đang xây dựng sản phẩm cho khách hàng và dự định tính phí cho công việc bảo trì trong tương lai, thì việc dùng nhiều phụ thuộc không ổn định cũng không sao
    • Tuy nhiên, nếu muốn tạo ra một sản phẩm chỉ cần bảo trì ở mức tối thiểu, tôi sẽ tránh xa hệ sinh thái JS
  • Dùng Go+HTMX+Templ
    • Lý do chính tôi dùng Go+HTMX+Templ cho các dự án cá nhân là vì các dự án Go cho phép tôi tập trung vào việc phát hành tính năng mà vẫn không bỏ qua các bản cập nhật phụ thuộc/bảo mật thông thường
    • Bản thân ngôn ngữ Go vẫn duy trì thư viện chuẩn và đặc tả ngôn ngữ ổn định.

7 bình luận

 
bbulbum 2024-12-09

HTMX có vẻ đang nhận được khá nhiều đánh giá tích cực.
Có lẽ nhiều người đang tìm đến HTMX như một giải pháp bổ trợ cho các ứng dụng dựa trên SSR.
Chắc tôi cũng nên thử một lần trong dự án phụ.

 
savvykang 2024-12-06

Tôi không chọn các thư viện TanStack vì chúng phức tạp quá mức cần thiết và chất lượng tài liệu trong vài năm gần đây cũng kém. Ngoài ra, chu kỳ thay thế của các gói npm quá ngắn nên tôi cũng thấy không nhất thiết lúc nào cũng phải cố bám vào phiên bản mới nhất.

Tuy vậy, khi làm việc ở công ty thì có lẽ không thể bỏ React được. Còn nếu là dự án cá nhân thì dùng gì cũng không quan trọng.

 
dohyun682 2024-12-06

Nếu chỉ cần không nâng cấp các bản cập nhật major version thì vấn đề phụ thuộc cũng đâu quá lớn...?

 
aer0700 2024-12-07

Cách đây không lâu, tôi thấy có một tác vụ lập lịch chạy nội bộ công ty vẫn đang chạy bằng Python 2, và thật sự ngột ngạt.
Sau khi cân nhắc, tôi quyết định cứ để nguyên vì hiện tại nó vẫn chạy tốt. Nhưng chắc chắn không thể cầm cự mãi mà không cập nhật được.

 
aer0700 2024-12-06

Sự mệt mỏi vì quản lý dependency VS sự ngán ngẩm khi phải tự phát minh lại bánh xe
Đây là một cuộc tranh luận đã có từ lâu. Đúng là không nên dùng những bánh xe không cần thiết, nhưng thứ hôm nay chưa cần liệu ngày mai cũng sẽ không cần...
Tôi chưa từng dùng GO, nhưng dạo này thấy khá nhiều server được làm bằng GO. Dù chưa dùng ngay, có lẽ tôi cũng nên thử đụng vào một lần.

 
clickin 2024-12-05

Có lẽ vì HTMX đang đi đầu trong nhóm công nghệ hợp thời nên cũng có khá nhiều người thử áp dụng, nhưng tôi nghĩ biết đâu hướng như go + vecty + gox lại còn tốt hơn.

 
GN⁺ 2024-12-05
Ý kiến Hacker News
  • Chia sẻ trải nghiệm từ bỏ các thư viện như React và phát triển ứng dụng web bằng Actix, Tera, HTMX; cho rằng stack này dễ bảo trì và được người dùng đón nhận tốt

    • Mô tả trải nghiệm nhanh chóng phát triển một ứng dụng web mới rồi triển khai cho người dùng thử nghiệm
    • Do không có "sự mệt mỏi vì quản lý phụ thuộc", họ có thể hiểu sâu hơn về các công cụ
  • Đánh giá các thư viện của Tanner có nhiều tính năng nhưng thiết kế API còn thiếu sót

    • React Table và React Query rất mạnh, nhưng ranh giới được thiết lập chưa đúng nên gây ra vấn đề
    • Ưu điểm của React là nó không phải framework, và dừng lại ở những ranh giới được thiết kế tốt
    • Cố gắng chỉ chọn những thư viện đáp ứng được tiêu chí đó
  • Cảm thấy các ví dụ về HTMX chỉ chuyển sự phức tạp sang chỗ khác, và mô tả JSX là một cách thanh lịch để tránh dùng template

    • Vẫn còn nhiều vấn đề cần giải quyết như routing, quản lý trạng thái, xác thực...
  • Cảm thấy việc nói rằng từ bỏ React là điều kỳ lạ, và cho rằng vấn đề không nằm ở React mà ở các phụ thuộc khác

    • Việc chọn viết backend bằng Go thì lúc nào cũng có thể làm được
  • Nhấn mạnh rằng khi cập nhật lên major version tiếp theo của một gói thì phải dự đoán trước sẽ có thay đổi

    • Lấy ví dụ Remix để giải thích cách áp dụng thay đổi theo từng bước
    • Cho rằng các gói tốt đòi hỏi nhiều công sức
  • Chia sẻ trải nghiệm migrate một dự án SPA sang Django và HTMX, đồng thời cho biết đã giảm đáng kể sự phụ thuộc vào JavaScript

    • Mô tả SPA giống như một quả bom hẹn giờ
  • Cho rằng React không phải chịu trách nhiệm cho các gói bên thứ ba được bảo trì kém

    • Giải thích rằng không nhất thiết phải cần router hay công cụ quản lý trạng thái như Redux
  • Nghĩ rằng v5 của react-query lẽ ra phải tương thích với API của v3, nhưng cũng nói rằng việc migrate dễ và không bắt buộc

    • Cảm thấy "sự mệt mỏi vì quản lý phụ thuộc" đã bị phóng đại, và khuyên chỉ nên duy trì số lượng phụ thuộc ở mức hợp lý
  • Đặt câu hỏi vì sao lại nâng cấp dù ứng dụng web không nhận thêm lợi ích nào

    • Giải thích rằng việc nâng cấp lên phiên bản mới nhất không mang lại lợi ích gì
  • Cho biết sau khi từ bỏ React và nextjs để chuyển sang stack khác, mức độ căng thẳng giảm xuống và các bản cập nhật không còn gây cảm giác chán nản nữa