0

Cách tạo Web Apps trong Rust thuần túy

TinyWeb cho phép xây dựng các ứng dụng phía khách hàng trong Rust thuần túy, tương tự như các ứng dụng phía backend, tận dụng hệ thống kiểu dữ liệu chặt chẽ của ngôn ngữ và công cụ tích hợp mạnh mẽ.

TinyWeb có kích thước rất nhỏ với dưới 800 dòng mã, không cần bước xây dựng và không có phụ thuộc bên ngoài. Tuy nhiên, nó hỗ trợ các ứng dụng web đầy đủ tính năng!

Lựa chọn 1: Sử dụng dự án khởi động

Fork dự án tinyweb-starter

git clone https://github.com/LiveDuo/tinyweb-starter

Lựa chọn 2. Tạo một dự án mới

1. Tạo một dự án Rust mới

Tạo một dự án Rust mới với lệnh:

cargo new tinyweb-example --lib

Thêm dòng crate-type =["cdylib"] vào tệp Cargo.toml và cài đặt crate với lệnh:

cargo add tinyweb --git https://github.com/LiveDuo/tinyweb

2. Thêm mã mẫu

Cập nhật tệp src/lib.rs:

use tinyweb::element::El;
use tinyweb::invoke::Js;

fn component() -> El {
    El::new("div")
        .child(El::new("button").text("print").on("click", move |_| {
            Js::invoke("alert('hello browser')", &[]);
        }))
}

#[no_mangle]
pub fn main() {
    let body = Js::invoke("return document.querySelector('body')", &[]).to_ref().unwrap();
    component().mount(&body);
}

3. Tải wasm trong HTML

Tạo một tệp index.html trong một thư mục public mới:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <script src="https://cdn.jsdelivr.net/gh/LiveDuo/tinyweb/src/js/main.js"></script>
        <script type="application/wasm" src="client.wasm"></script>
    </head>
    <body></body>
</html>

4. Xây dựng wasm

Xây dựng dự án với lệnh:

cargo build --target wasm32-unknown-unknown -r

Sau đó, sao chép tệp .wasm vào đúng vị trí với lệnh:

cp target/wasm32-unknown-unknown/release/*.wasm public/client.wasm

Cuối cùng, phục vụ thư mục public với bất kỳ máy chủ HTTP tĩnh nào.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí