-
Phát hành Dioxus 0.6
- Dioxus là một framework dựa trên Rust cho phép xây dựng ứng dụng web, desktop và di động từ một codebase duy nhất
- Mục tiêu là trở thành framework tốt hơn Flutter
- Tập trung vào hỗ trợ web full-stack và giao tiếp server/client an toàn kiểu dữ liệu, đồng thời chú trọng hiệu năng cao và cải thiện trải nghiệm lập trình viên
- Bản phát hành 0.6 lần này tập trung vào việc giúp Dioxus dễ sử dụng hơn, cải thiện trải nghiệm lập trình viên và sửa lỗi
-
Cải tiến tính năng chính
- Hỗ trợ trình giả lập di động: Bổ sung khả năng chạy ứng dụng trên trình giả lập và thiết bị Android, iOS.
- Magic hot reloading: Hỗ trợ hot reloading cho chuỗi đã định dạng, thuộc tính và
rsx!{} lồng nhau.
- CLI tương tác: Viết lại Dioxus CLI với UX mới để cải thiện khả năng sử dụng.
- Inline stack trace: Ghi lại panic và log của WASM trực tiếp vào terminal.
- Native server function: Hỗ trợ server RPC nội tuyến cho ứng dụng desktop và di động.
-
Cải thiện trải nghiệm lập trình viên
- Toast và màn hình loading: Thêm toast và màn hình loading mới khi phát triển ứng dụng web.
- Cải thiện autocomplete: Nâng cấp đáng kể tính năng autocomplete của RSX.
- Ổn định hóa hệ thống asset: Ổn định hóa hệ thống asset dựa trên liên kết được tích hợp cho ứng dụng native.
- Streaming HTML: Hỗ trợ stream suspense và error boundary từ server đến client.
- SSG và ISG: Hỗ trợ static site generation và incremental static regeneration.
- Xử lý lỗi: Xử lý lỗi bằng
? trong event handler, task và component.
- Phần tử meta: Thêm các phần tử Head, Title, Meta và Link mới để thiết lập thuộc tính tài liệu.
prevent_default đồng bộ: Xử lý sự kiện đồng bộ trên mọi nền tảng.
- Event handler
onresize: Theo dõi kích thước phần tử mà không cần IntersectionObserver.
- Event handler
onvisible: Theo dõi khả năng hiển thị của phần tử mà không cần IntersectionObserver.
- Tích hợp WGPU: Render Dioxus như lớp overlay trên bề mặt WGPU và cửa sổ con.
dx bundle: Hỗ trợ đầy đủ dx bundle cho web, iOS và Android.
- Chế độ JSON: Xuất thông điệp CLI dưới dạng JSON để dùng với công cụ bên thứ ba và pipeline CI/CD.
- Template mới: Ba template khởi đầu mới cho ứng dụng đa nền tảng.
- Tutorial và guide hằng đêm: Tutorial và guide mới cho Dioxus 0.6 trở lên.
- Nguyên mẫu binary patching: Nguyên mẫu cho engine hot reloading mới thuần Rust.
-
Thông tin phát hành
- Dioxus 0.6 là bản phát hành lớn nhất với hơn 350 pull request được merge và hàng trăm issue đã được giải quyết.
- Mục tiêu là cải thiện mạnh chất lượng của hot reloading, autocomplete và asset bundling.
- Mục tiêu là làm cho Dioxus CLI vững chắc hơn và dễ sử dụng hơn.
- Mục tiêu là tích hợp công cụ di động trực tiếp vào dioxus CLI để cung cấp hỗ trợ di động hạng nhất.
-
Công cụ dòng lệnh tương tác
- Dioxus 0.6 mang đến trải nghiệm CLI được cải tổ hoàn toàn.
- CLI mới hỗ trợ thanh tiến trình trực tiếp, animation, hệ thống filter tương tác và khả năng thay đổi log level theo thời gian thực.
-
Hỗ trợ Android và iOS
- Trong Dioxus 0.6, dioxus CLI mặc định hỗ trợ
dx serve --platform ios/android.
- Cung cấp hỗ trợ hạng nhất cho nền tảng di động, và target trình giả lập Android và iOS hỗ trợ cùng tính năng như desktop.
-
Cải tổ engine hot reloading
- Đưa vào những cải tiến lớn cho engine hot reloading của Dioxus.
- Hỗ trợ hot reloading cho chuỗi đã định dạng, khối
rsx lồng nhau, thuộc tính component và các biểu thức Rust đơn giản.
-
Cải tổ tính năng autocomplete
- Cải thiện mạnh mẽ tính năng autocomplete của
rsx! {}.
- Cải thiện tích hợp với Rust-analyzer để mang lại trải nghiệm autocomplete tốt hơn.
-
Inline WASM stack trace và tích hợp tracing
- Cung cấp tích hợp tracing cho ứng dụng WASM để ghi lại panic và log rồi gửi đến terminal.
-
Toast và màn hình loading
- Cung cấp màn hình loading hiển thị tiến độ build và toast cho biết trạng thái build trong quá trình phát triển ứng dụng web.
-
Full-stack desktop và di động
- Tích hợp ứng dụng native với server function để server function hoạt động mặc định trên target desktop và di động.
-
Ổn định hóa hệ thống asset Manganis
- Ổn định hóa hệ thống asset mới Manganis và khắc phục nhiều lỗi cùng vấn đề hiệu năng.
-
Suspense và HTML streaming
- Giới thiệu suspense boundary, primitive lõi mới cho UI bất đồng bộ.
- Dioxus full-stack stream từng suspense boundary từ server, cho phép stream từng chunk mà không cần chờ toàn bộ trang tải xong.
-
Static site generation và ISG
- Cải thiện SEO và rút ngắn thời gian tải của người dùng nhờ hỗ trợ static site generation và incremental static generation.
-
Phần tử tài liệu: Title {}, Link {}, Stylesheet, Meta {}
- Cung cấp các phần tử đặc biệt có thể tương tác với đối tượng tài liệu HTML để thiết lập thuộc tính tài liệu mà không cần JavaScript bổ sung.
-
Xử lý lỗi bằng dấu hỏi
Element nay chuyển từ Option sang Result, cho phép dùng cơ chế xử lý lỗi thông thường của Rust trong component.
-
prevent_default đồng bộ
- Được cải thiện để mọi xử lý sự kiện có thể diễn ra đồng bộ, không còn cần thuộc tính
dioxus_prevent_default.
-
Event handler onresize và onvisible
- Cung cấp các handler đặc biệt có thể theo dõi kích thước và khả năng hiển thị của phần tử, cho phép triển khai tương tác phong phú mà không cần JavaScript.
-
Hybrid WGPU overlay
- Thông qua tính năng "cửa sổ con" của Dioxus desktop, có thể tích hợp ứng dụng Dioxus native như một lớp overlay vào cửa sổ hiện có.
-
Hỗ trợ bundle cho web, iOS và Android
- Bổ sung hỗ trợ web và di động cho
dx bundle, cho phép đóng gói cho nhiều target khác nhau.
-
Xuất JSON cho CI / CLI
- Cung cấp chế độ xuất JSON cho CLI để có thể nhận log ở định dạng JSON.
-
Template khởi đầu mới
- Cung cấp ba template khởi đầu mới cho ứng dụng đa nền tảng.
-
Tài liệu hằng đêm, tutorial và guide mới
- Đại tu tài liệu và tutorial để bao quát nội dung cơ bản và tập trung hơn vào triển khai.
-
Xem trước in-place binary patching
- Đang tiến hành thử nghiệm để bổ sung hot reloading cho mã Rust.
-
Những thay đổi nhỏ
- Bao gồm nhiều thay đổi nhỏ như hỗ trợ system tray, event loop tùy chỉnh, tách
dioxus-document và dioxus-history, đơn giản hóa API eval, v.v.
-
Nâng cấp từ 0.5 lên 0.6
- Có một vài thay đổi API, nhưng trong đa số trường hợp có thể sửa khá dễ dàng.
-
Kết luận
- Bản phát hành này giải quyết nhiều vấn đề và cải thiện nhiều tính năng, khiến Dioxus 0.6 trở thành bản phát hành hoàn thiện nhất.
- Trong thời gian tới, kế hoạch là tập trung vào làm video tutorial, viết tài liệu, sửa lỗi, cải thiện hiệu năng và hợp tác với cộng đồng hơn là bổ sung tính năng mới.
3 bình luận
Gần đây tôi đang dùng tauri, cái này chắc cũng phải thử một lần mới được.
Dioxus - Thư viện UI đa nền tảng cho Rust lấy cảm hứng từ React
Dioxus 0.5 - Phát triển ứng dụng web, desktop và di động bằng Rust
Ý kiến trên Hacker News
Một người dùng chia sẻ trải nghiệm thử bản phát hành mới: họ tạo dự án bằng
cargo installvà chạydx serve, nhưng gặp lỗi trình biên dịch. Họ cho rằng nếu dùng quy trình làm việc Rust tiêu chuẩn thì việc gỡ lỗi có lẽ sẽ dễ hơn. Có thể nhấnvđể bật nhật ký chi tiết, nhưng không có thêm thông tin rõ ràng nào.Một người dùng khác cho biết cứ mỗi 6 tháng họ lại thử các framework GUI của Rust, nhưng lại gặp lỗi khi tải demo hoặc playground. Họ cho rằng cần cân nhắc kỹ trước khi quyết định đầu tư dài hạn.
Có ý kiến cho rằng Dioxus là công cụ công nghệ nền tảng web duy nhất có thể cung cấp khả năng đa nền tảng trong khi chỉ dùng JavaScript ở mức tối thiểu. Họ đánh giá tích cực sự phát triển của ngăn xếp kết xuất WGPU.
Có ý kiến nói rằng hệ sinh thái của Dioxus còn thiếu thốn và không có thư viện component. Họ cũng chưa thực sự tin tưởng virtual DOM. Hiện họ đang theo dõi và sử dụng đối thủ Leptos.
Một người dùng cho biết họ đang sử dụng Dioxus ở phía máy chủ và đánh giá cách viết component cũng như trải nghiệm nhà phát triển là rất tốt.
Sau khi phát hiện và áp dụng Lustre, có người nói rằng ngoài The Elm Architecture ra thì họ không có ý định dùng thứ gì khác. Họ đang xây dựng bản mẫu trình biên tập kịch bản bằng Iced của Rust, và tin tưởng nó vì System76 đang dùng nó để xây dựng Cosmic.
Có ý kiến đánh giá đây là framework công nghệ mới hứa hẹn nhất, và nếu thành công thì có thể thay thế mọi framework khác. Nó tập trung vào hiệu năng, còn Rust cung cấp nền tảng cho bảo mật và hiệu năng.
Một người dùng nhắc rằng Dioxus đã gọi được vốn đầu tư mạo hiểm, vì vậy nên cẩn trọng trước khi đặt cược tương lai vào nó. Họ cho rằng còn thiếu thông tin về việc có yêu cầu chuyển nhượng bản quyền hay CLA hay không, cũng như có bao nhiêu người đóng góp đang được trả lương.
Có ý kiến đề xuất rằng độ tương phản của tiêu đề bài viết có thể được cải thiện để phù hợp hơn với nền trang. Họ cũng hỏi về sự so sánh với vị thế hiện tại của Qt, khả năng tiếp cận và cách xử lý màn hình HiDPI. Họ cảm thấy thiếu các binding chất lượng cho những ngôn ngữ ngoài C++ và Python, và cho rằng nếu có binding cùng công cụ tốt hơn thì nó sẽ phổ biến hơn.
Có ý kiến đánh giá tính năng hot reloading mới thật đáng kinh ngạc, và việc phải chờ UI cập nhật trong các framework web Rust khác từng là một vấn đề lớn.