5 khung công tác lắp ráp web gỉ cho ứng dụng tiếp theo của bạn
WebAssembly (WASM) là một định dạng mã nhị phân cấp thấp, di động chạy trên các trình duyệt hiện đại, giống như JavaScript. Trên thực tế, WebAssembly cũng có thể tương tác với JavaScript. Bạn có thể chuyển phần lớn mã nguồn chương trình xuống WebAssembly và chạy nó trên trình duyệt có hoặc không có JavaScript.
Rust nhanh chóng, làm cho ngôn ngữ này trở thành một lựa chọn khả thi để xây dựng các chương trình WebAssembly. Có nhiều thư viện và khuôn khổ Rust để trợ giúp, với sự hỗ trợ cho các công cụ bạn sử dụng để xây dựng ứng dụng web.
Mục Lục
1. Thư viện Sycamore
Sycamore là một khung phản ứng giống SolidJS nhanh chóng, tiện dụng và trực quan. Bạn có thể sử dụng nó để xây dựng các ứng dụng web trong Rust nhằm tận dụng sức mạnh của WebAssembly. Sycamore cung cấp hầu hết các chức năng bạn cần để tạo giao diện ứng dụng web trong Rust, vì vậy bạn sẽ không cần viết JavaScript.
Sycamore cũng cung cấp một bộ định tuyến và khả năng tương tác JavaScript qua Wasm-Bindgen bằng cách sử dụng JS-sys hoặc Web-Sys. Dự án dự định sẽ sớm phát hành thử nghiệm và chức năng CSS.
Để sử dụng Sycamore, bạn sẽ cần một phiên bản gần đây của Rust — wasm32-chưa-biết-không-biết Mục tiêu. Bạn cũng sẽ cần Trunk để xây dựng và đóng gói ứng dụng của mình. Vì Sycamore là phiên bản mới, sẽ rất rủi ro khi sử dụng thư viện nhánh chính trong quá trình sản xuất, ngoại trừ trường hợp bạn sử dụng bản phát hành trước đó.
2. Khung Yew
Yew là một khung công tác Rust để xây dựng các ứng dụng web giao diện người dùng đa luồng bằng cách sử dụng WebAssembly. Nó cho phép bạn viết mã Rust và chuyển mã Rust của bạn sang WASM, có thể chạy trên bất kỳ thiết bị nào có hỗ trợ WASM. Yew có thể tương tác với JavaScript (bạn có thể sử dụng các gói npm của mình) và khung công tác cung cấp macro để tương tác với các phần tử HTML bằng Rust, như JSX trong React.
Bạn có thể bắt đầu với Yew bằng cách sử dụng gói ứng dụng Trunk hoặc WASMPack. Xem tài liệu để biết cách bắt đầu, tương tác với HTML và API DOM và chuyển mã Rust của bạn sang WebAssembly.
Dự án Yew rất nổi tiếng, với hơn 20 nghìn sao trên Github và 5 nghìn người dùng. Yew ổn định, nhưng dự án chưa sẵn sàng sản xuất và cơ sở mã đang thay đổi, vì vậy bạn có thể gặp lỗi và hỏng.
3. Thư viện Percy
Percy là một tập hợp các thư viện Rust để xây dựng các ứng dụng web giao diện người dùng được cung cấp bởi WebAssembly. Percy hỗ trợ kết xuất phía máy chủ tức thì. Dự án vượt trội trong việc xây dựng các ứng dụng trang đơn (SPA) thân thiện với công cụ tìm kiếm.
Percy cung cấp một html! macro để tạo DOM ảo. Bạn có thể kết xuất chúng thành các phần tử DOM trong giao diện người dùng hoặc sử dụng chúng cho các hoạt động trong phần phụ trợ của ứng dụng của bạn.
Percy vẫn còn rất mới, và mặc dù thư viện chưa sẵn sàng sản xuất, nhưng dự án này rất nổi tiếng, với hơn hai nghìn sao trên Github.
4. Khuôn khổ hạt giống
Seed là một khuôn khổ hỗ trợ WebAssembly đầy đủ, bao gồm pin để xây dựng các ứng dụng web nhanh trong Rust. Khuôn khổ Seed cung cấp một hệ thống tạo khuôn mẫu sử dụng cú pháp macro thay vì cú pháp giống JSX của Yew. Nó cũng có một hệ thống quản lý nhà nước tích hợp để nâng cao năng suất.
Hạt giống là mới và các thành phần được xây dựng sẵn như bộ chọn ngày là rất hiếm. Mặc dù Seed hiện không hỗ trợ hiển thị phía máy chủ, nhưng dự án có mục tiêu sớm đưa nó vào. Nếu không, Seed đã hoàn chỉnh về tính năng và bạn có thể xây dựng các ứng dụng web sẵn sàng sản xuất với nó. Seed cũng sử dụng kiến trúc Elm với cấu hình tối thiểu. Bạn có thể xây dựng và đóng gói các ứng dụng của mình bằng Trunk, Web Bundler hoặc Seeder.
Bạn cũng có thể sử dụng Seed cho phần phụ trợ của ứng dụng web của mình. Seed cung cấp chức năng xây dựng các API REST hoặc GraphQL với hỗ trợ định tuyến và xác thực cũng như tích hợp AuthO.
MoonZoon là một khung công tác hỗ trợ WebAssembly dễ sử dụng, đầy đủ, cho các ứng dụng giao diện người dùng và phụ trợ. Bạn có thể viết Rust mà không cần phải viết HTML, CSS và JavaScript trên giao diện người dùng hoặc REST, GraphQL hoặc SQL trên phụ trợ. MoonZoon nhanh, đơn giản, có thể mở rộng và thân thiện với SEO. Nó cung cấp một ứng dụng CLI để xây dựng các ứng dụng web dễ triển khai.
Triết lý của dự án MoonZoon là tạo ra một công cụ rất đơn giản, không có thuật ngữ đặc biệt, rào cản nhân tạo hay giáo điều. Sử dụng nó, bạn có thể tập trung vào việc xây dựng các ứng dụng web theo ý muốn. Bạn sẽ cần cài đặt WASM-Pack để xây dựng giao diện người dùng. Phần phụ trợ của ứng dụng MoonZoon chạy trên Actix-web và Warp, cả hai khung phụ trợ Rust phổ biến. MoonZoon cũng cung cấp chức năng xác thực.
Tài liệu MoonZoon hiện không được lưu trữ. Để sử dụng công cụ này, bạn có thể kiểm tra các tệp đánh dấu trong tài liệu thư mục thông qua kho lưu trữ GitHub của dự án.
Bạn có thể đã tương tác với WebAssembly
WebAssembly được phát hành lần đầu tiên vào năm 2017 và World Wide Web Consortium (W3C) đã biến WebAssembly trở thành tiêu chuẩn web vào năm 2019. Kể từ năm 2019, các công ty như Cloudflare, Google và Dropbox đã sử dụng công nghệ này trong sản xuất.
Google Earth sử dụng WebAssembly, Cloudflare sử dụng nó cho Cloudflare worker và Dropbox sử dụng WebAssembly cho một codec trên trang web của mình.