Tranh cãi nổ ra về tuyên bố hiệu suất của RubyUI khi cộng đồng Ruby đón nhận thiết kế dựa trên component

BigGo Editorial Team
Tranh cãi nổ ra về tuyên bố hiệu suất của RubyUI khi cộng đồng Ruby đón nhận thiết kế dựa trên component

Cộng đồng phát triển web Ruby đang thể hiện sự quan tâm đáng kể đến RubyUI (trước đây là PhlexUI), một bộ sưu tập các thành phần UI có thể tái sử dụng được xây dựng trên công cụ render Phlex. Tuy nhiên, bên cạnh những lời khen ngợi về trải nghiệm phát triển, một cuộc tranh luận gay gắt đã nổ ra liên quan đến tuyên bố về hiệu suất của dự án.

RubyUI tự giới thiệu như một giải pháp cho các nhà phát triển Rails đang tìm kiếm cách xây dựng các thành phần UI đẹp, có tổ chức và có thể dễ dàng sao chép và tùy chỉnh. Khác với các thư viện thành phần truyền thống, RubyUI khuyến khích các nhà phát triển làm chủ mã nguồn bằng cách sao chép các thành phần trực tiếp vào dự án của họ.

Tuyên bố về hiệu suất bị xem xét kỹ lưỡng

Một trong những khía cạnh gây tranh cãi nhất của RubyUI là tuyên bố rằng nó nhanh hơn đến 12 lần so với các template Rails ERB truyền thống. Nhận định này đã làm dấy lên cuộc tranh luận đáng kể trong cộng đồng, với nhiều nhà phát triển thách thức tính chính xác của nó.

Một cuộc trao đổi đặc biệt sâu sắc trong cộng đồng đã làm nổi bật sự tinh tế đằng sau những tuyên bố về hiệu suất này. Một nhà phát triển chỉ ra rằng mặc dù Phlex (công cụ cung cấp năng lượng cho RubyUI) có thể vượt trội hơn ActionView trong các kịch bản cụ thể với nhiều thành phần nhỏ, nhưng nó không phải lúc nào cũng nhanh hơn ERB. Joel Drapper, một nhân vật quan trọng trong hệ sinh thái Phlex, đã thừa nhận sự khác biệt này:

Theo kinh nghiệm của tôi, việc render hàng nghìn thành phần trong một view duy nhất không phải là một kịch bản cực đoan... ActionView trở nên rất chậm khi bạn xây dựng các view như vậy bằng cách kết hợp hàng nghìn partial — và đối với những người muốn xây dựng view theo cách đó, điều này rất quan trọng.

Lời giải thích này cho thấy rằng lợi ích về hiệu suất phụ thuộc vào ngữ cảnh và đáng chú ý nhất trong các ứng dụng có các view được chia thành nhiều thành phần.

Các tính năng chính của RubyUI

  • Được xây dựng trên công cụ render Phlex
  • Các thành phần UI có thể tùy chỉnh
  • Phương pháp triển khai copy-and-paste
  • Phụ thuộc tối thiểu bằng cách sử dụng các bộ điều khiển Stimulus.js tùy chỉnh
  • Cài đặt thông qua Ruby gem

So sánh hiệu suất (theo tuyên bố của dự án)

  • Phlex: Cơ sở
  • ViewComponent: Chậm hơn khoảng 1,5 lần
  • ERB Templates: Chậm hơn khoảng 5 lần

Các dự án nổi bật sử dụng Phlex

  • Clearscope: 454+ thành phần
  • MagicNotes.ai
  • Baheth.ieasybooks.com

Trải nghiệm phát triển thúc đẩy việc áp dụng

Mặc dù có cuộc tranh luận về hiệu suất, nhiều nhà phát triển đang đón nhận RubyUI và Phlex chủ yếu vì trải nghiệm phát triển được cải thiện. Khả năng viết các thành phần UI bằng Ruby thuần thay vì chuyển đổi giữa Ruby và các template ERB dường như là một điểm thu hút đáng kể.

Các thành viên cộng đồng báo cáo rằng việc sử dụng các phương thức private như partials đã là một bước đột phá cho việc tái cấu trúc UI, và một số nhà phát triển đề cập rằng họ đã sử dụng Phlex trong các ứng dụng sản xuất. Trang GitHub của dự án liệt kê Clearscope là ứng dụng lớn nhất sử dụng độc quyền các view Phlex, với hơn 450 thành phần.

Cân nhắc về kiến trúc thành phần

Cách tiếp cận của RubyUI khuyến khích một cấu trúc thành phần chi tiết cao, nơi các nhà phát triển có thể tạo ra các thành phần riêng biệt không chỉ cho các phần chính của trang như header, mà còn cho từng mục điều hướng và thậm chí là các biểu tượng. Mức độ trừu tượng hóa này thể hiện một sự thay đổi trong cách các ứng dụng Rails cấu trúc view của họ.

Mặc dù một số nhà phát triển đánh giá cao sự chi tiết này, những người khác đã đặt ra câu hỏi về các cân nhắc thực tế như quản lý không gian tên và tổ chức thành phần. Cộng đồng vẫn đang thiết lập các quy ước xung quanh các mẫu kiến trúc này, với một nhà phát triển lưu ý rằng vì nó còn mới, có ít quy ước hơn, vì vậy bạn phải tự đưa ra và duy trì tính nhất quán.

Khi RubyUI tiếp tục thu hút sự chú ý, cộng đồng Ruby có thể sẽ phát triển các mẫu thiết lập hơn để sử dụng hiệu quả cách tiếp cận dựa trên thành phần này. Hiện tại, dự án đại diện cho một sự phát triển thú vị trong phát triển frontend Rails, ưu tiên trải nghiệm của nhà phát triển trong khi đẩy các ranh giới của hiệu suất render view.

Tham khảo: RubyUI (trước đây là PhlexUI)