菜单

核心API

相关源文件

核心 API 是 Tauri JavaScript API 的基础,它提供了前端(JavaScript)和后端(Rust)之间通信的基本机制。它提供了驱动所有其他 Tauri API 的基础 IPC(进程间通信)能力、序列化实用工具和资源管理。

本页介绍了核心 JavaScript API,它允许基于 Web 的 UI 与 Tauri 的 Rust 后端进行交互。有关窗口 API 的信息,请参阅 窗口 API,有关应用管理的信息,请参阅 App API

概述

核心 API 由几个关键的原始类型组成,这些类型能够实现 JavaScript 前端和 Rust 后端之间安全高效的通信。

来源: packages/api/src/core.ts1-334 crates/tauri/src/app/plugin.rs1-131 crates/tauri/scripts/core.js1-90

核心功能

Invoke System

invoke 函数是 JavaScript 调用 Rust 命令的主要方法。它提供了一个基于 Promise 的接口,用于将请求发送到后端并接收响应。

invoke 系统会自动处理 JavaScript 和 Rust 之间的数据序列化,包括复杂类型和二进制数据。

来源: packages/api/src/core.ts241-247 crates/tauri/scripts/core.js56-88

通道 API

Channel API 提供了一个双向通信机制,用于在 JavaScript 和 Rust 之间流式传输数据。它维护消息顺序,并在通道关闭时妥善处理清理工作。

Channel 类用于创建和管理这些双向流。

通道确保消息按正确的顺序处理,即使它们乱序到达。

来源: packages/api/src/core.ts76-153 packages/api/CHANGELOG.md5-22

资源管理

Resource 类提供了一个对存储在 Rust 后端的资源的句柄。这些资源在主进程中持久存在,并且在不再需要时需要显式关闭。

资源通常由插件命令创建,然后通过其各自的 API 进行操作。

来源: packages/api/src/core.ts288-300

序列化

核心 API 提供特殊的序列化机制,可将 JavaScript 对象正确转换为可以安全传递给 Rust 的格式。

SERIALIZE_TO_IPC_FN

SERIALIZE_TO_IPC_FN 符号用作自定义类型可以实现的成员名称,以控制它们在跨 IPC 边界传递时如何被序列化。

这允许创建与 Rust 枚举变体清晰映射的 JavaScript 对象。

来源: packages/api/src/core.ts12-59 crates/tauri/scripts/process-ipc-message-fn.js1-46

插件集成

核心 API 提供了与 Tauri 插件系统集成的工具。

插件监听器

addPluginListener 函数将事件监听器附加到插件,从而实现事件驱动的通信。

来源: packages/api/src/core.ts155-190

权限系统

核心 API 包含用于检查和请求插件权限的函数。

这允许插件实现安全的权限处理。

来源: packages/api/src/core.ts192-210

实用函数

convertFileSrc

convertFileSrc 函数将本地文件路径转换为可在 Webview 中使用的 URL。

这对于在应用 UI 中安全地加载本地文件至关重要。

来源: packages/api/src/core.ts252-281 crates/tauri/scripts/core.js13-20

transformCallback

transformCallback 函数将 JavaScript 回调转换为可以传递给 Rust 后端的标识符。

这主要由核心 API 内部使用,用于实现 Channel API 等功能。

来源: packages/api/src/core.ts69-74 crates/tauri/scripts/core.js22-41

核心 API 与插件架构

核心 API 是 Tauri 插件架构的基础,支持模块化和可扩展的功能。

所有 Tauri 插件和 API 都基于核心 API 的 IPC 和序列化能力来创建更高级的功能。

来源: crates/tauri/build.rs16-219 examples/api/src-tauri/tauri.conf.json1-100 examples/api/src-tauri/capabilities/run-app.json1-69

与运行时集成

核心 API 与 Tauri 的运行时紧密协作,提供前端和后端之间的无缝连接。

核心 API 抽象了跨平台通信的复杂性,允许开发人员使用与底层平台无关的一致 API。

来源: crates/tauri-runtime/src/lib.rs1-449 crates/tauri/src/window/mod.rs1-100 crates/tauri/src/test/mock_runtime.rs1-100

结论

核心 API 提供了构建 Tauri 应用的基础工具,可将 Web 技术与原生功能无缝桥接。通过理解这些核心组件,开发人员可以有效地利用所有其他 Tauri API 并创建自己的集成。