实验性 Tauri Verso 集成

本文介绍了实验性的 Tauri 与 Verso 的集成。

页面内容概览

实验性 Tauri Verso 集成

2025 年 3 月 17 日

Tony

Tony

Tauri 开发

什么是 Verso?

首先,什么是 VersoVerso 是一个基于 Servo 的浏览器。Servo 是一个用 Rust 编写的 Web 浏览器渲染引擎。

为什么直接使用 Verso 而不是 Servo?

我相信很多人都考虑过使用 Servo,但被复杂的 API 吓倒并放弃了,坦率地说,我也是其中之一,所以构建 Verso webview 的目标是使其足够易于理解和使用,以便人们真正开始试验和使用它。

与其它浏览器相比,Servo 本身相对容易嵌入,但 API 仍然太底层,使用起来非常令人生畏。可以看一看使用 Winit 运行 Servo 的最小示例 (请注意,这甚至不是一个功能完整的示例):https://github.com/servo/servo/blob/8d39d7706aee50971e848a5e31fc6bfd7ef552c1/components/servo/examples/winit_minimal.rs

与此相比,Verso 的 API 如下所示,使用起来更容易、更符合人体工程学:

use std::env::current_exe;
use std::thread::sleep;
use std::time::Duration;
use url::Url;
use verso::VersoBuilder;

fn main() {
    let versoview_path = current_exe().unwrap().parent().unwrap().join("versoview");
    let controller = VersoBuilder::new()
        .with_panel(true)
        .maximized(true)
        .build(versoview_path, Url::parse("https://example.com").unwrap());

    loop {
        sleep(Duration::MAX);
    }
}

https://github.com/versotile-org/verso/blob/2e853d4f3f4cb88274daa211b7a2eb3bd1517115/verso/src/main.rs

这并不是说 Servo 的 API 不好,因为他们需要支持更多的用例,而我们只需要它来构建 Tauri 应用程序。

tauri-runtime-verso

现在让我们来讨论与 Tauri 的集成!

这次我们选择通过一个新的自定义运行时 tauri-runtime-verso 将 Verso 和 Tauri 集成,这类似于我们的默认运行时 tauri-runtime-wry

使用这种方法,您可以轻松地更换运行时并像往常一样使用 Tauri:

use tauri_runtime_verso::{
    INVOKE_SYSTEM_SCRIPTS, VersoRuntime, set_verso_path, set_verso_resource_directory,
};

fn main() {
    // 你需要在使用任何 webview 窗口之前,将其设置为 versoview 可执行文件的路径
    set_verso_path("../verso/target/debug/versoview");
    // 在创建任何 webview 窗口之前,将其设置为 verso/servo 的 resources 目录
    // 这是可选的,但建议这样做,此目录将包含非常重要的内容
    // 例如用户代理样式表
    set_verso_resource_directory("../verso/resources");

    tauri::Builder::<VersoRuntime>::new()
        // 确保这样做,否则某些命令将无法使用
        .invoke_system(INVOKE_SYSTEM_SCRIPTS.to_owned())
        .run(tauri::generate_context!())
        .unwrap();
}

请注意,它不像 Tauri 在生产环境中使用的当前后端那样功能丰富和强大,但它仍然有很多优点,并且我们构建了一个示例来展示它:https://github.com/versotile-org/tauri-runtime-verso/tree/main/examples/api

从视频中可以看到的功能:

未来的工作

目前,Verso 和 tauri-runtime-verso 仍在积极开发中,所以我们需要边走边看,但我们确实计划接下来要做的事情。

预构建的 Verso 可执行文件

发布一个易于使用的预构建 Verso 可执行文件,以帮助人们更快更轻松地开始使用它,因为目前您需要自己编译 Verso 才能开始使用。

如果可能的话,作为一个长期的目标,我们希望有一个常青共享的 Verso,类似于 Windows 上的 WebView2,您可以将其放置在系统中,它会自动更新,并在多个应用程序之间共享,这样您就不必将浏览器打包在应用程序中,从而显著减小捆绑包的大小。

更多窗口和 webview 功能支持

我们目前仅支持 Tauri 中的一小部分功能,我们希望将其扩展到包括更多内容,并且我们目前计划支持窗口装饰、窗口标题和透明度。

无需临时文件的初始化脚本

目前,Servo 只能使用一个用户脚本目录在文档启动时运行,这还可以,但对于 Tauri 的用例,我们希望以编程方式执行此操作,而无需文件的帮助,因为这可能会导致我们从未清理过的遗留临时文件。

我们几天前在 Servo 中合并了一个 PR,我们只需要在 Verso 中使用它,然后在 tarui-runtime-verso 中使用,所以这即将推出!

Verso 运行时独有的定制

Tauri 主要是在底层 webview 库的假设下构建的,所以现在几乎没有办法使用许多 Verso 特定的特性,例如,设置 verso 可执行文件路径和资源目录是通过全局变量完成的,这对于窗口特定功能 (例如设置圆角) 来说并不真正适用,所以我们希望接下来添加对其的支持。

感谢

最后,我们要感谢 NLNet 通过资助使其成为可能!

Tauri 2.0 稳定版发布

编辑页面

最后更新:2025 年 3 月 30 日

上一篇 所有文章 下一篇 Tauri 2.0 稳定版发布

© 2025 Tauri 贡献者。CC-BY / MIT