0


【一起学Rust | 框架篇 | Tauri2.0框架】tauri中rust和前端的相互调用(rust调用前端)

在 Tauri 2.0 框架中,Rust 和前端之间的相互调用是一个重要的功能。对于 Rust 调用前端的操作,可以通过 Tauri 的事件系统来实现。以下是具体的步骤和示例代码:

  1. 触发全局事件:在 Rust 中,你可以使用 AppHandle 的 emit 方法来触发一个全局事件,该事件可以被前端中的所有 Webview 监听到。例如,你可以定义一个命令,使用 #[tauri::command] 属性,并在该命令中调用 emit 方法来发送事件和数据给前端 2。
    use tauri::{AppHandle, Emitter};

#[tauri::command]
fn login(app: AppHandle, user: String, password: String) {
let authenticated = user == "tauri-apps" && password == "tauri";
let result = if authenticated { "loggedIn" } else { "invalidCredentials" };
app.emit("login", result).unwrap();
}

  1. 触发指定 Webview 的事件:如果你想触发特定 Webview 的事件,可以使用 emit_to 方法,并指定 Webview 的 ID 或标签。例如,你可以使用 EventTarget 枚举来指定目标 2。
  2. 前端监听事件:在前端,你可以使用 Tauri API 提供的 listen 函数来监听 Rust 发出的事件。你可以指定事件的类型,并提供一个回调函数来处理事件 2。
    import { listen } from '@tauri-apps/api/event';

listen<string>('login', (event) => {
console.log(Login result: ${event.payload});
});

  1. 执行 JavaScript 代码:除了事件系统,Rust 也可以直接在 Webview 中执行 JavaScript 代码,使用 eval 方法。这可以用来实现更复杂的交互或自动化任务 2。
    use tauri::Manager;

tauri::Builder::default()
.setup(|app| {
let webview = app.get_webview_window("main").unwrap();
webview.eval("console.log('hello from Rust')")?;
Ok(())
});

通过这些方法,你可以实现 Rust 和前端之间的有效通信,无论是发送事件、监听事件还是执行 JavaScript 代码。这些功能在 Tauri 2.0 框架中得到了很好的支持和文档化,你可以参考官方文档获取更多详细信息 3。


本文转载自: https://blog.csdn.net/2401_86844068/article/details/141435804
版权归原作者 Ruber. 所有, 如有侵权,请联系我们删除。

“【一起学Rust | 框架篇 | Tauri2.0框架】tauri中rust和前端的相互调用(rust调用前端)”的评论:

还没有评论