3 điểm bởi GN⁺ 2024-10-07 | 1 bình luận | Chia sẻ qua WhatsApp
  • Khi phát triển web bằng Rust, có vấn đề là không có framework kiểu như Django nên phải tự làm rất nhiều việc
  • Để tận dụng các ưu điểm của Rust như hệ thống kiểu, hiệu năng và thời gian build, cần có một framework giúp việc phát triển web trở nên dễ dàng hơn

Các tính năng cần thiết

  • Định tuyến/handler: Cần có chức năng kết nối request tới handler sẽ xử lý nó
  • Template: Phải có khả năng tạo ra nội dung như HTML và JSON
  • Phục vụ tệp tĩnh: Cần có chức năng cung cấp các tài sản như tệp CSS
  • Đăng nhập: Cần có chức năng đăng nhập cho ứng dụng nhiều người dùng
  • Quản lý quyền hạn: Phải có khả năng quản lý quyền truy cập theo từng người dùng
  • Giao diện cơ sở dữ liệu: Cần có chức năng lưu trữ và quản lý dữ liệu
  • Công cụ quản trị: Cần có công cụ hỗ trợ các tác vụ quản trị cơ bản
  • WebSocket: Cần có chức năng WebSocket để truyền dữ liệu thời gian thực
  • Hot reloading: Cần có chức năng phản ánh thay đổi mã ngay lập tức

Các tính năng bổ sung cần có

  • Tác vụ nền: Cần có chức năng thực hiện tác vụ theo lịch
  • Giám sát/quan sát: Cần có chức năng theo dõi trạng thái hệ thống
  • Caching: Cần có chức năng caching để cải thiện hiệu năng
  • Email và thông báo: Cần có chức năng thông báo để hỗ trợ các tính năng như đặt lại mật khẩu
  • Công cụ triển khai: Cần có một phương thức triển khai nhất quán
  • Bundling CSS/JS: Cần có chức năng quản lý hiệu quả các tệp CSS và JS

Hệ sinh thái hiện có

  • Web framework: Đã có các framework cung cấp chức năng tối thiểu như actix-web, axum
  • Bộ sưu tập thư viện: Có nhiều thư viện cho template, đăng nhập, quản lý quyền hạn, v.v. nhưng còn thiếu một giải pháp tích hợp

Bộ công cụ web mới

  • nicole's web toolkit (newt): Đang phát triển một bộ công cụ web tích hợp nhiều tính năng
  • Mục tiêu: Hỗ trợ khởi động nhanh một ứng dụng web mới
  • Kế hoạch: Dự định sử dụng các building block hiện có để cung cấp một giải pháp tích hợp

Tổng hợp của GN⁺

  • Nhấn mạnh sự cần thiết của một web framework tích hợp để giúp việc phát triển web bằng Rust trở nên dễ dàng hơn
  • Giới thiệu một nỗ lực nhằm vượt qua các giới hạn của những web framework và thư viện hiện có
  • Muốn cải thiện trải nghiệm lập trình viên bằng cách tích hợp nhiều tính năng thông qua nicole's web toolkit (newt)
  • Nỗ lực đưa các ưu điểm của framework như Django vào hệ sinh thái Rust là điều đáng chú ý
  • Các dự án khác cung cấp tính năng tương tự gồm có actix-web, axum

1 bình luận

 
GN⁺ 2024-10-07
Ý kiến trên Hacker News
  • Đây là ý kiến của một người thích làm ra những thứ thú vị với ít công sức nhất khi dùng Rust. Rust rất mạnh về hiệu năng và quản lý bộ nhớ, nhưng với phát triển web thì Go hoặc Django phù hợp hơn

  • Rust mang lại tính an toàn, giúp lập trình viên giảm bớt sai sót, đồng thời có ưu điểm là có thể viết code chỉ với những công cụ đơn giản như Notepad

  • Với vai trò framework web, Rocket được cho là framework tốt nhất dành cho "lập trình viên lười"

  • Nếu tận dụng tính năng pattern matching của Rust thì không cần router, và xác thực không phải là vấn đề của ngôn ngữ hay framework

  • Các công cụ CSS/JS không phù hợp với framework frontend Rust, và Rust đã đủ trưởng thành cho cả web frontend

  • Có người ngạc nhiên vì Rocket không được nhắc tới; Rocket hướng tới mục tiêu trở thành một framework "kèm đủ pin"

  • Làm web bằng Rust là ổn, nhưng có vấn đề về concurrency, và việc chọn thư viện component là điều khó khăn

  • Có người đang dùng Flutter để cải thiện UX, và hài lòng vì việc tích hợp với Rust khá dễ dàng

  • Flutter không tôn trọng DOM, nhưng hấp dẫn vì giúp dễ dàng tạo UX có thể triển khai ở mọi nơi

  • Poem tương tự FastAPI, nhưng cần khá nhiều boilerplate ở giai đoạn thiết lập ban đầu

  • Từ "lười" được dùng với ý nghĩa muốn framework web xử lý các tác vụ phổ biến thay mình, nhưng trên thực tế vẫn cần làm khá nhiều việc

  • Các dự án như loco-rs, poem, rocket đã cung cấp trải nghiệm "kèm đủ pin", và CLI sẽ hướng dẫn điều đó

  • F# cung cấp hệ thống kiểu và công cụ tương tự Rust, nhưng xử lý bất đồng bộ và quản lý bộ nhớ ít phức tạp hơn

  • Tác giả cho rằng họ muốn một framework kiểu Spring Boot dành cho Rust