Tauri教程-底子篇-第二节 Tauri的核心概念上篇

打印 上一主题 下一主题

主题 902|帖子 902|积分 2706


   “假如结果不如你所愿,就在灰尘落定前奋力一搏。”——《夏目友人帐》
“有些事不是看到了希望才去对峙,而是由于对峙才会看到希望。”——《十宗罪》
“维持近况意味着空耗你的努力和生命。”——纪伯伦
    Tauri 技术教程 * 第四章 Tauri的底子教程  
  第二节 Tauri的核心概念(上篇)  前言

本章节阐述了Tauri技术中的核心概念内容,明白起来较为苦涩,但却为Taui应用的概念部分,相识这些概念后你将对Tauri的技术原理有一个较深的明白,为你后续开发应用和进行插件的开发奠定底子,初次明白较为困难,有肯定的编语言程底子,可较为轻松,本章节分为上下2个部分,分别阐述了Tauri的五个核心部分


  • 布局
  • 进程模子
  • App size
  • IPC
  • 安全
上部分介绍了Tauri的骨架布局、进程模子、应用大小配置,下部分介绍了Tauri的ipc(通信模子)和安全相关的概念和配置。
学习和明白建议:咋一看,若隐若现,再回眸,两不相识,相逢时,原是弹丸之丘!
推荐

Koi技术教程-Tauri底子教程-第二节 Tauri的核心概念 下
Koi技术教程-Tauri-第二章 Tauri的业务架构
Koi技术教程-Tauri-第三章 Tauri的搭建情况
一. 概述

Tauri的核心概念是开发职员利用Tauri进行编程的核心,相识Tauri的核心概念不光有助于我们更好的明白它的运行原理,也为我们在实际的业务开发中使用它提供支持。它的核心概念体系包含一下五个部分:


  • architecture 布局
  • process Model 流程模块处理
  • app size
  • IPC
  • security
官方文档:https://tauri.app/concept/
二. Architecture 布局

本章节我们将相识到Tauri的布局及生态体系。
Tauri 是一个多语言的通用工具包,它使得我们借助rust及webview来构建计算机步伐,它使用“wry”和“tao”来完成对操作体系进行体系调用的繁重工作,通过 js api和rust api来制作 WebView OS应用步伐。
1. Tauri 架构图


此图来自官方文档。
由图中内容,可以看到Tauri由2大内容构成“upstream crates” 和 “core ecosystem” 构成。下面我们来相识下它们的详细内容。
1. updtream crates

Tauri 应用的 updtream crates 主要包含2个构成部分,Tao 和 wry


  • TAO: 用于创建和管理应用窗体。它是RUST中跨平应用步伐窗口的创建库,支持:Windows、macOS、Linux、iOS 和 Android,是winit的一个分支,在tauri中进行了扩展,增长了菜单和体系托盘。
  • wry:作为接口,用于链接 webview和窗体;wry是Rust中的跨平台WebView渲染库,支持全部主流桌面平台,例如 Windows、macOS 和 Linux。Tauri 使用 WRY 作为抽象层,负责确定使用哪个 WebView(以及怎样进行交互)。抹平平台差异,袒露统一的上层 API。
2. core ecosystem

core 是Tauri的核心内容,它包含6个内容,分别如下:


  • tauri-runtime 它负责与较低级别的webview库之间交互的粘合层。
  • tauri-macros 将 upstream crate 作为上下文,处理步伐和铃木创建宏 tauri-codegen
  • tauri-utils 提供通用的工具,如:解析配置文件、检测平台三元组、注入 CSP 和管理资产等
  • tauri-runtime-wry 与wry通过接口直接进行体系级交互,例如打印、监督器检测和其他与窗口相关的任务
  • tauri-codegen 负责创建应用内容,如:应用步伐图标以及体系托盘,tauri.conf.json在编译时解析并生成 Config 布局。
  • tauri-build 应用构建
其中 tauri-runtime、tauri-macros、tauri-utils 构成了 tauri。
tauri 是将全部的内容最后那个何在一起的主要包。它将运行时、宏、实用步伐和 API 整合到一个最终产物中。它tauri.conf.json在编译时读取文件以引入功能并进行应用步伐的实际配置,它在运行时处理脚本注入(用于 polyfill/原型修订),托管用于体系交互的 API,甚至管理更新过程。
3. 常用的工具库和插件

工具库


  • api(javascript/typescript) 创建cjs或者esm端点供您导入到前端框架中,以便 Webview 可以调用和监听后端活动。
  • bundler(rust/shelle) 构建 Tauri 应用的库。现在支持 macOS、Windows 和 Linux 等
  • cli.rs(rust) Rust 可执行文件提供了 CLI 所需的全部必要活动的完整接口。
  • cli.js(javascript) 生成 npm 包的包装器
  • create-tauri-app(javascript) 创建应用
插件库:


  • tauri-action
  • tauri-vscode
  • vue-cli-plugin-tauri
4. 插件

Tauri 插件指南,这是重点,后续会专门说明
一般来说,插件是由第三方编写的(尽管可能有官方支持的插件)。插件通常做三件事:

  • 使 Rust 代码能够做“某事”。
  • 提供接口粘合剂,使其易于集成到应用步伐中。
  • 提供用于与 Rust 代码交互的 JavaScript API。
三. Process Model 流程模子

1. 流程概述

在 GUI 应用步伐的早期,通常使用单个进程来执行计算、绘制界面并对用户输入做出反应。通常一个应用步伐组件的故障会导致整个应用步伐瓦解。多进程模子的设计使得应用步伐在不同的进程中运行不同的组件。这可以更好地利用当代多核 CPU,并创建更安全的应用步伐。一个组件的瓦解不再影响整个体系,由于组件被隔离在不同的进程中。假如某个进程进入无效状态,我们可以轻松地重新启动它。
别的,我们可以使用最小特权原则,来为每个进程分配最少的执行权限(刚好够它们完成工作)来限定潜在毛病的影响范围。
2. 核心流程


此图来自官网


  • Tauri 应用步伐都有一个核心进程,它充当应用步伐的入口点,也是唯一可以完全访问操作体系的组件。
  • 主要职责是使用该访问权限来创建和编排应用步伐窗口、体系托盘菜单或关照。它还通过核心进程管理全部进程间通信,让您可以在一个中心位置拦截、过滤和操作 IPC 消息。
  • 核心进程还应负责管理全局状态,例如设置或数据库毗连。这使您可以轻松地在窗口之间同步状态,并保护您的业务敏感数据不被前端窥探。
3. WebView 进程

核心进程自己并不渲染实际的用户界面 (UI);它会启动 WebView 进程,利用操作体系提供的 WebView 库。WebView 是一个类似于浏览器的情况,可执行 HTML、CSS 和 JavaScript。
现在,Tauri 在 Windows 上使用Microsoft Edge WebView2,在macOS 上使用WKWebView ,在 Linux 上使用webkitgtk。↩
4. 应用启动后的进程


四. App size

您可以通过修改或者引入依赖库的方式调整您的应用步伐的二进制文件大小,如:cargo.toml 中
  1. [profile.dev]
  2. incremental = true # Compile your binary in smaller steps.
  3. [profile.release]
  4. codegen-units = 1 # Allows LLVM to perform better optimization.
  5. lto = true # Enables link-time-optimizations.
  6. opt-level = "s" # Prioritizes small binary size. Use `3` if you prefer speed.
  7. panic = "abort" # Higher performance by disabling panic handlers.
  8. strip = true # Ensures debug symbols are removed.
复制代码
以下是一些常用到的配置参考:


  • incremental: 以较小的步调编译二进制文件.
  • codegen-units:以编译时优化为代价来加速编译时间。
  • lto:启用链接时间优化。
  • opt-level:确定编译器的重点。用于3优化性能、z优化大小以及s介于两者之间的某些方面。
  • panic: 通过消除恐慌来减少尺寸。
  • strip:从二进制文件中去除符号或调试信息。
  • rpath:通过将信息硬编码到二进制文件中来帮助查找二进制文件所需的动态库。
  • trim-paths:从二进制文件中删除潜在的特权信息。
  • rustflags:
    根据每个配置文件设置 Rust 编译器标志。

    • -Cdebuginfo=0:是否应在构建中包含调试信息符号。
    • -Zthreads=8:增长编译期间使用的线程数目。

接读:Koi技术教程-Tauri底子教程-第二节 Tauri的核心概念 下

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

傲渊山岳

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表