菜单

JavaScript API

相关源文件

JavaScript API 提供了一个接口,Web 应用程序(使用 HTML、CSS 和 JavaScript 构建)可以通过该接口与 Tauri 的 Rust 后端进行通信。本文档解释了 Tauri JavaScript API 的结构、架构和用法模式,重点介绍了前端代码如何通过 Tauri 的安全桥接与操作系统原生功能进行交互。

有关支撑此 API 的进程间通信 (IPC) 系统的详细信息,请参阅 IPC 和通信

架构概述

JavaScript API 组织为一组模块,可以从 @tauri-apps/api 包中导入。这些模块提供了对各种 Tauri 功能的访问,包括窗口管理、文件系统访问和应用程序控制。

来源

包结构与模块

JavaScript API 作为 npm 包 (@tauri-apps/api) 分发,其模块化组织允许开发人员仅导入他们需要的功能。

来源

核心API组件

核心 API 提供了 JavaScript 和 Rust 之间通信的基础机制。

Invoke 函数

invoke 函数是使用 JavaScript 执行 Rust 命令的主要方法。

此函数接受命令名称、可选参数,并将它们发送到 Rust 后端,返回一个解析了命令结果的 Promise。

通道 API

要实现 JavaScript 和 Rust 之间的数据流,API 提供了 Channel 类。

Channel 提供了一种处理 JavaScript 前端和 Rust 后端之间连续数据流的方法。

资源管理

Resource 类代表由 Rust 后端支持的资源。

资源引用存在于 Rust 进程中的数据,可以从 JavaScript 进行管理。

来源

IPC 机制

JavaScript API 使用一种特殊的 IPC 机制与 Rust 后端通信。这包括:

  1. 命令序列化和转换
  2. 异步操作的回调处理
  3. 响应反序列化

IPC 机制利用特殊的序列化协议来处理复杂数据类型。

对象可以通过实现自定义序列化方法来控制它们在 IPC 边界上的传递方式。

来源

API 模块详情

核心模块

核心模块提供 IPC 通信的基本功能。

函数/类描述
invoke()向 Rust 后端发送命令
convertFileSrc()将文件路径转换为可在 webview 中使用的 URL
渠道实现双向流式通信
资源代表由 Rust 后端管理的资源
transformCallback()用于处理回调函数的内部实用程序

来源

App 模块

App 模块提供对应用程序元数据和控制的访问。

功能描述
getVersion()返回应用程序版本
getName()返回应用程序名称
getTauriVersion()返回 Tauri 框架版本
getIdentifier()返回应用程序标识符
show()显示应用程序(macOS)
hide()隐藏应用程序(macOS)
setTheme()设置应用程序主题
setDockVisibility()控制 Dock 可见性(macOS)

来源

Window 模块

提供对窗口管理功能的访问。

类/函数描述
窗口代表应用程序窗口
WebviewWindow创建和管理应用程序窗口
getCurrent()获取当前窗口
getAll()获取所有应用程序窗口
LogicalSize/PhysicalSize窗口大小实用程序
LogicalPosition/PhysicalPosition窗口位置实用程序

来源

权限系统

JavaScript API 与 Tauri 的权限系统交互,该系统控制对原生功能的访问。

在通过以下方式调用命令时执行权限检查:

  • checkPermissions(plugin):检查是否授予了权限。
  • requestPermissions(plugin):向用户请求权限。

来源

API 初始化流程

Tauri JavaScript API 通过一个引导过程进行初始化。

  1. Tauri runtime 将 __TAURI_INTERNALS__ 注入到 window 对象中。
  2. 核心 JavaScript 文件被注入到 webview 中。
  3. JavaScript 和 Rust 之间的桥梁建立起来。
  4. 应用程序随后可以通过导入或全局对象来使用 API。

来源

使用示例流程

下图说明了 JavaScript API 的典型使用流程。

来源

高级特性

Asset 协议

JavaScript API 提供了一种使用 asset 协议安全访问本地文件的机制。

这会将本地文件路径转换为可在 webview 中使用的 URL,同时通过 Tauri 的 asset 协议确保安全性。

用于流式传输数据的 Channel

为了处理连续数据流或多个响应,Channel API 提供了双向通信。

这允许 JavaScript 和 Rust 之间进行实时通信。

来源

结论

Tauri JavaScript API 提供了连接 Web 技术和原生功能的功能齐全的桥梁。通过利用 invoke 机制、Channel 和资源,JavaScript 应用程序可以安全地与 Rust 代码通信以访问系统功能,同时保持 Tauri 提供的安全保障。

模块化结构允许开发人员仅导入他们需要的功能,从而减小包大小并提高性能。权限系统确保对原生功能的访问受到控制和保护。