欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > tauri2项目使用Opener来实现实现打开默认url或文件文件夹等原理

tauri2项目使用Opener来实现实现打开默认url或文件文件夹等原理

2025/6/22 6:10:46 来源:https://blog.csdn.net/weixin_44786530/article/details/148761264  浏览:    关键词:tauri2项目使用Opener来实现实现打开默认url或文件文件夹等原理

opener查看的开源地址:https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/opener/package.json

其实我们看一下底层的依赖文件:

在 Rust 项目中,这些依赖项各自有不同的用途。以下是每个依赖项的简要说明:

1. serde

serde = { workspace = true }
  • 用途:一个强大的序列化和反序列化框架
  • 功能
    • 提供将 Rust 数据结构序列化为多种格式(如 JSON、YAML 等)的能力
    • 支持派生宏(#[derive(Serialize, Deserialize)])来自动实现序列化/反序列化逻辑
    • 是 Rust 生态中最常用的序列化库

2. serde_json

serde_json = { workspace = true }
  • 用途:JSON 格式的支持库
  • 功能
    • 专门处理 JSON 数据的序列化和反序列化
    • 与 serde 配合使用,提供 JSON 解析和生成功能
    • 包含 JSON 值的运行时表示(serde_json::Value

3. tauri

tauri = { workspace = true }
  • 用途:构建跨平台桌面应用程序的框架
  • 功能
    • 类似 Electron 但更轻量(使用系统 WebView 而不是打包 Chromium)
    • 允许用 HTML/CSS/JS 构建界面,用 Rust 实现后端逻辑
    • 提供系统 API 访问(文件系统、窗口管理等)
    • 支持构建独立应用程序

4. thiserror

thiserror = { workspace = true }
  • 用途:简化自定义错误类型的定义
  • 功能
    • 通过派生宏自动实现 std::error::Error trait
    • 方便地为错误类型添加友好的错误信息
    • 特别适合库作者定义自己的错误类型

5. open

open = { version = "5", features = ["shellexecute-on-windows"] }
  • 用途:跨平台打开文件、URL 或程序的工具
  • 功能
    • 在用户默认应用中打开文件或 URL
    • 特定功能 shellexecute-on-windows 确保在 Windows 上使用 ShellExecute API
    • 类似在命令行中执行 start (Windows) 或 open (macOS)

6. glob

glob = { workspace = true }
  • 用途:文件路径模式匹配
  • 功能
    • 支持 Unix 风格的 glob 模式(如 *.txt 或 **/*.rs
    • 用于查找匹配特定模式的文件路径
    • 常用于构建工具或需要文件系统遍历的场景

总结

这些依赖项组合在一起,表明这个项目可能是一个:

  1. 使用 Tauri 构建的桌面应用程序
  2. 需要处理 JSON 配置或数据(serde + serde_json)
  3. 有自定义错误处理需求(thiserror)
  4. 需要打开外部文件/URL(open)
  5. 需要文件系统操作和模式匹配(glob)

workspace = true 表示这些依赖项的版本由工作区根目录的 Cargo.toml 统一管理,而不是在每个包的 Cargo.toml 中单独指定版本。

这里主要用到的就是open这个依赖,用于打开文件或url地址的,然后在底层封装了一个tauri::command,然后通过注入js来实现调用这个函数,中间加了权限校验等功能:

权限校验:

注入的js实现api调用:

 

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词