67

0

Tauri

使用 Web 前端构建更小、更快、更安全的桌面应用程序。

Tauri 是一个框架,用于为所有主要桌面平台构建微小、极快的二进制文件。开发人员可以集成任何可编译为 HTML、JS 和 CSS 的前端框架来构建他们的用户界面。应用程序的后端是一个来自 rust 的二进制文件,带有一个前端可以与之交互的 API。

Tauri 应用程序中的用户界面目前tao在 macOS 和 Windows 上用作窗口处理库,gtk在 Linux 上通过Tauri 团队孵化和维护的WRY,它创建了系统 web 视图(以及其他好东西,如菜单和任务栏)的统一界面,在 macOS 上利用 WebKit,在 Windows 上利用 WebView2,在 Linux 上利用 WebKitGTK。

要了解有关所有这些部分如何组合在一起的详细信息,请参阅此ARCHITECTURE.md文档。

开始使用

如果您有兴趣制作 tauri 应用程序,请访问文档网站。本 README 面向有兴趣为核心库做出贡献的人。但是,如果您只想快速了解 tauri其发展的位置,这里有一个快速的燃点:

平台

Tauri 目前支持以下平台的开发和分发:

平台 版本
Windows 7 及以上
macOS 10.15 及以上
Linux 见下文
iOS/iPadOS(即将推出)
安卓(即将推出)

Linux 支持

如需开发Tauri 应用程序,请参阅tauri.app 上的入门指南

对于运行Tauri 应用程序,我们支持以下配置(这些配置会自动添加为 .deb 的依赖项并与 AppImage 捆绑在一起,因此您的用户无需手动安装它们):

  • 安装了以下软件包的 Debian(Ubuntu 18.04 及更高版本或同等版本):
    • libwebkit2gtk-4.0-37libgtk-3-0libayatana-appindicator3-1^1^
  • Arch 安装了以下软件包:
    • webkit2gtkgtk3libayatana-appindicator^1^
  • 安装了以下软件包的 Fedora(最新 2 个版本):
    • webkit2gtk3gtk3libappindicator-gtk3^1^

^^appindicator仅当使用系统托盘时才需要1

应用程序包

  • [X] 应用程序图标
  • [X] 在 macOS 上构建(.app、.dmg)
  • [X] 在 Linux 上构建(.deb、AppImage)
  • [X] 在 Windows 上构建(.exe、.msi)
  • [X] 复制缓冲区
  • [X] 设备通知(toast)
  • [X] 自我更新器
  • [X] 应用签名
  • [X] 无框模式
  • [X] 透明模式
  • [X] 多窗口模式
  • [X] 托盘
  • [ ] 深度链接 RPC(进行中)
  • [ ] 一次性命令(即将推出)

安全功能

  • [X] 本地主机免费(🔥)
  • [X] 安全模式的自定义协议
  • [X] 动态提前编译 (dAoT) 与功能性 tree-shaking
  • [X] 功能地址空间布局随机化
  • [X] 在运行时对函数名称和消息进行 OTP 加盐
  • [X] CSP 注入

实用程序

  • [X] 用于为所有平台创建二进制文件的 GH 操作
  • [X] VS 代码扩展
  • [X] Tauri 核心插件
  • [X] 从命令行自动更新核心依赖项
  • [X] 基于 Rust 的 CLI

Tauri 和 Electron 的比较

Detail tauri Electron
安装程序大小 Linux 3.1 MB 52.1 MB
内存消耗 Linux 180 MB 462 MB
启动时间 Linux 0.39s 0.80s
接口服务提供者 WRY Chromium
后端绑定 Rust Node.js (ECMAScript)
底层引擎 Rust V8 (C/C++)
FLOSS 是的
多线程 是的 是的
字节码交付 是的
多个窗口 是的 是的
自动更新程序 是的 是的^1^
自定义应用程序图标 是的 是的
Windows 二进制 是的 是的
macOS 二进制 是的 是的
Linux 二进制 是的 是的
iOS 二进制 很快
安卓二进制 很快
桌面托盘 是的 是的
边车二进制文件 是的

笔记

  1. Electron 在 Linux 上没有本机自动更新程序,但由 electron-packager 提供

发展

Tauri 是一个由许多运动部件组成的系统:

基础设施

  • 用于代码管理的 Git
  • 用于项目管理的 GitHub
  • CI 和 CD 的 GitHub 操作
  • 不和谐的讨论
  • Netlify 托管的文档网站
  • DigitalOcean Meilisearch 实例

主要运行时

  • 用于运行 CLI 的 Node.js(deno 和 pure rust 在路线图上)
  • Cargo 用于测试、运行开发服务、构建二进制文件以及作为 webview 的运行时工具

主要语言

  • 用于 CLI 的 Rust
  • 与 Rust API 的 ECMAScript 绑定,用 typescript 编写
  • Rust 用于绑定,API 的 rust 方面,线束
  • Tauri 后端的 Rust 插件

操作系统

Tauri 内核可以在 Mac、Linux 和 Windows 上开发,但我们鼓励您使用最新的操作系统并为您的操作系统构建工具。

贡献

在开始处理某事之前,最好先检查是否存在现有问题。在 Discord 服务器旁停下来并与团队确认它是否有意义或者其他人是否已经在处理它也是一个好主意。

在提出拉取请求之前,请务必阅读贡献指南。

感谢所有为 Tauri 做出贡献的人!

文档

多语言系统中的文档是一个棘手的命题。为此,我们更喜欢在 typescript / javascript 代码中使用 Rust 代码和 JSDoc 的内联文档。我们使用 Docusaurus v2 和 netlify 自动收集并发布它们。这是文档站点的托管存储库:https ://github.com/tauri-apps/tauri-docs

测试和整理

测试所有的东西!我们有许多测试套件,但一直在寻求提高我们的覆盖范围:

  • Rust ( cargo test) => 源自内联 #[cfg(test)]声明
  • TS ( jest) => 通过规范文件
  • 冒烟测试(合并到最新版本时运行)
  • eslint, 剪辑

CI/CD

我们建议您阅读本文以更好地了解我们如何运行管道:https ://www.jacobbolda.com/setting-up-ci-and-cd-for-tauri/

组织

Tauri 旨在成为一个可持续发展的集体,基于指导可持续自由和开放软件社区的原则。为此,它已成为Commons Conservancy内的一项计划,您可以通过Open Collective进行财务捐助。

伺服器

tauri遵循Semantic Versioning 2.0

许可证

代码:(c) 2015 - 2021 - The Commons Conservancy 内的 Tauri 计划。

MIT 或 MIT/Apache 2.0(如适用)。

标志:CC-BY-NC-ND

福萨状态