rust使用sauron实现web界面交互-kb88凯时官网登录

来自:
时间:2024-03-26
阅读:
免费资源网,https://freexyz.cn/

 

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

架构

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

  • 模型 - 应用程序的状态
  • 视图 - 一种将状态转换为 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-server

wasm-pack 默认会使用 wasm-opt 工具进行大小优化,而这个工具也是运行时下载安装的。下载 wasm-opt 使用的是 github 链接,国内环境大概率是下载失败的,可以参考 手动下载 wasm-opt.exe 后放到 .cargo\bin路径下。

创建项目

创建一个名为 hello 的新项目:

cargo new --lib hello

在 cargo.toml 中指定这个 crate 需要编译为 cdylib():

[lib]
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! {
            

"hello"

} } fn update(&mut self, _msg: ()) -> cmd { cmd::none() } } //函数应该在加载 wasm 模块时自动启动,类似于 main 函数 #[wasm_bindgen(start)] 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:


  
    
    
  
  
    
  
  • 使用的是

    注意上面的 import init, { add } from ,add 函数在使用前需要导入,否则会调用失败。

    运行项目

    编译库文件:

    wasm-pack build --release --target=web
    

    启动静态站点:

    basic-http-server
    

    访问 查看效果:
    rust使用sauron实现web界面交互

    免费资源网,https://freexyz.cn/
返回顶部
顶部
网站地图