精滂软 发表于 2025-6-5 14:41:59

Rust使用Sauron实现Web界面交互

目录

[*]简介

[*]架构
[*]Application 和组件

[*]简单入门示例

[*]先决条件
[*]创建项目
[*]编译库文件
[*]引用库文件
[*]运行项目

[*]界面交互示例

[*]创建项目
[*]编译库文件
[*]实现应用函数
[*]引用库文件
[*]运行项目

[*]参考资料

简介

Sauron 是一个多功能的 Web 框架和库,用于构建客户端和/或服务器端 Web 应用程序,重点关注人体工程学、简单性和优雅性。这使您可以编写尽可能少的代码,并更多地关注业务逻辑而不是框架的内部细节。
github:https://github.com/ivanceras/sauron
文档:https://sauron-rs.github.io/
架构

Sauron 遵循模型-视图-更新架构(也称为 Elm 架构),它总是分为三个部分:

[*]模型 - 应用程序的状态
[*]视图 - 一种将状态转换为 HTML 的方法
[*]更新 - 一种根据消息更新状态的方法
Application 和组件

为了使模型在 Sauron 程序中运行,它必须实现 Application trait,然后定义下面两个函数:

[*]view 函数:该函数告诉程序如何显示模型。
[*]update 函数:该函数描述如何根据消息更新模型状态。
简单入门示例

先决条件

确保已安装所有必备组件:

[*]rust and cargo:Rust基础环境和工具。
[*]wasm-pack:将 rust 代码编译到 webassembly 中,然后放入 ./pkg 目录中。
[*]basic-http-server:在本地提供静态文件。
执行以下命令安装wasm-pack:
cargo install wasm-pack执行以下命令安装basic-http-server:
cargo install basic-http-serverwasm-pack 默认会使用 wasm-opt 工具进行大小优化,而这个工具也是运行时下载安装的。下载 wasm-opt 使用的是 github 链接,国内环境大概率是下载失败的,可以参考 如何安装WASM-OPT? 手动下载 wasm-opt.exe 后放到 .cargo\bin路径下。
创建项目

创建一个名为 hello 的新项目:
cargo new --lib hello在 Cargo.toml 中指定这个 crate 需要编译为 cdylib(动态系统库):

crate-type = ["cdylib"]执行以下命令,添加sauron作为项目的依赖项。
cargo add sauron编译库文件

修改 src/lib.rs代码,在段落中显示“hello”文本:
use sauron::{node, wasm_bindgen, Application, Cmd, Node, Program};

struct App;

impl Application<()> for App {
    fn view(&self) -> Node<()> {
      node! {
            <p>
                "hello"
            </p>
      }
    }

    fn update(&mut self, _msg: ()) -> Cmd<Self, ()> {
      Cmd::none()
    }
}

//函数应该在加载 wasm 模块时自动启动,类似于 main 函数
#
pub fn main() {
    Program::mount_to_body(App::new());
}

[*]view 方法中使用 node! 宏,采用类似 html 的语法来显示应用程序。
[*]为 App 实现 Application 特征,实现必要的方法来告诉 sauron 应用程序的行为。
[*]这里的 main 函数在加载 wasm 模块时自动启动,函数可以任意命名,只要配置 start 即可。
执行以下命令进行编译:
wasm-pack build --release --target=web编译时间稍微有点长,wasm-pack 会在项目中创建一个文件夹 ./pkg,里面包含生成的编译文件,只需要关注其中 2 个文件:
hello.js
hello_bg.wasm它们的名称派生自给定的包名称 .js 和 _bg.wasm。
引用库文件

在项目的根目录中创建 index.html:
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
</head>
<body>
   
</body>
</html><ul>使用的是       注意上面的 import init, { add } from ,add 函数在使用前需要导入,否则会调用失败。
运行项目

编译库文件:
wasm-pack build --release --target=web启动静态站点:
basic-http-server访问 http://127.0.0.1:4000 查看效果:

参考资料


[*]如何安装WASM-OPT?
[*]国内网络环境下配置 wasm 开发环境
[*]使用Rust和WebAssembly整花活儿(一)——快速开始

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: Rust使用Sauron实现Web界面交互