Tauri(读音:踹你)开发简介:1.创建和运行第一个app

devtools/2024/10/21 3:40:54/

桌面app与web app之间的界限越来越模糊,以前可能说基于web编写的app性能不好,但是现在我们来看,不管钉钉还是vscode,都是采用了Electron框架,以web模式开发出来的。

提到Electron相信许多程序员都不陌生,它是使用JavaScript,HTML和CSS构建跨平台的桌面应用程序,可以打包为Mac、Windows、Linux系统下的应用。

你要说钉钉的使用给人感觉老是满半拍,例如要点击读取信息的时候,会有很明显的加载延迟(不但要读取数据,还要读取和编译html\js\css等资源),但是看vscode,就发现大部分情况下,已经与传统桌面的GUI开发框架相差无几了……

img

Visual Studio Code(简称“VS Code” )是Microsoft在2015年4月30日Build开发者大会上正式宣布一个运行于 Mac OS X、Windows和 Linux 之上的,针对于编写现代Web和云应用的跨平台源代码编辑器, 可在桌面上运行,并且可用于Windows,macOS和Linux。

Electron虽然好用,但是却有两大致命的缺点:性能不高,内存消耗过大;包太大。特别是因发布的结果体积庞大这一点而饱受诟病,所以业界也一直在找一种轻便性能更好的框架来对他进行补充或者替代,于是Tauri 应运而生,它与Electron相比,更加轻量、性能更好,提供了一种更现代、更安全且资源效率更高的方法来构建跨平台桌面应用。

所以正好趁着Tauri发布了2.0,今天给大家简单介绍这个(四不像)神器……

首先我们先对Electron和Tauri二者进行一下对比,就会发现一些指标差距还是相当的明显:

img

可以看见,除了编译结果的大小、性能外,最大的区别就是两个,一个是Tauri支持字节码传递(bytecode delivery),及将字节码传输或交付给目标环境的过程,这样前后台之间的数据交互就省去了很多麻烦,这点后面在说。二就是Electron无法获得 FLOSS(自由/开源软件) 许可的,这样也给一些商用软件或者想开源的软件带来一些麻烦。

当然,进行架构选项是系统架构师的基本功,说了优点,自然也说说缺点,Tauri也有自己的一些缺点,如下:

  1. Tauri调用的是系统内置的webview,WebView是WebKit框架中的核心视图类,用于管理WebFrame和WebFrameView类之间的交互。实际上你可以把这个东西看成是系统内置的一个浏览器对象。

    • 首先WebView这个玩意儿比较新,虽然在新的windows、linux、macos、ios、android的新一代系统里面都自带了,但是如果遇上了老系统,例如windows 7 那么就凉凉了。

    • 其次不同的系统的WebView在某些地方也有一些细微的差别,例如你开发的系统在windows上没问题,放MACOS上,样式就出错,就是因为不同系统的WebView版本可能有些差别导致的。

    • 第三,WebView自己也有可能遇上bug,如果真遇上了,就别想自己能换个版本啥的来进行修正了。

    反之,Electorn内嵌了一个Chromium ,这样可以最大化的避免不同系统带来的问题,如果遇上了内核bug,也可以通过升级内嵌的Chromium 来解决。

  2. Tauri后台默认使用Rust进行开发,而不像Electorn后台使用Node.js,可以使用JS/TS一门语言包打天下,会导致编写Tauri有更高的技术复杂度(招人难)。

  3. Tauri比较新,所以支持和社区都不如Electorn成熟,也没有很成功的案例。

如果你觉得这三个缺点不会对你的项目产生啥影响,那就没问题了,可以直接上手了。

下面我将用几节的时间,来简介一下Tauri的开发模式,因为虾神我是一个前端盲,所以我这里全程使用Rust模式,前端仅用HTML白板页面和最简单的js来进行简单说明,前端的专家同学们不要在意这些细节。

img

安装Rust(略)

如果是windows直接去Rust官网上下载安装包即可,如果是linux/macos,则敲一个命令就可以了,注意,好技术不如有个好网络,得有网络的情况下搞定:

rust的中文官网下载为止:

https://www.rust-lang.org/zh-CN/learn/get-started

img

安装Rust下面的Tauri工具链

我这里已经假定你已经安装好了Rust环境……

通过cargo 管理工具来安装Rust的Tauri工具链create-tauri-app,在有网络的情况下,输入如下命令即可:

cargo install create-tauri-app --locked

create-tauri-app是一个Rust编写的用于创建Tauri工程结构的工具,他可以帮你生成Tauri的工程代码框架,是一个很好用的脚手架(当然你也可以不用,手动去建设这些东西)。

创建Tauri工程

进入到你需要创建工程的目录下面,输入如下命令:

cargo create-tauri-app

然后工具会问你几个问题,你可以输入需要的基本信息(当然默认也行):

img

  1. 你的工程想叫啥名字?
  2. 你工程的唯一标识符?
  3. 你选择那种语言来进行开发?
  4. 你想选择那种UI模板来进行开发?

我这里全部默认,然后得到了如下这样一个工程目录:

img

工程结构

src 目录

这个目录下面是js/html/css所在的UI目录,可以看成web工程的目录结构。

src-tauri

这个目录是Rust的工程目录,是cargo结构的,如果在Rust下面做workspace的话,需要在根工程指向到这个目录下面。

tauri.conf.json

Tauri的配置文件,我们前面输入的那些信息都在这里,当然,你也可以修改这个文件:

img

然后我们就可以直接运行了:

cd <工程目录>
cargo tauri dev

cargo会从cartes.io上拉所有需要的包,然后在本地编译,稍微需要有一些时间,编译完成之后会自动打开和启动app了:

img

img

这个页面实际上就是一个网页,我们点击右键就可以看见html的源码以及可以进行前端调试:

img

好了,今天到此为止,下一篇我们讲一下Tauri的开发模式。


http://www.ppmy.cn/devtools/127461.html

相关文章

共筑华芯|首届“SEMiBAY湾芯展”龙华区科技创新局助力华芯邦科技携第四代半导体芯星亮相湾区半导体产业生态博览会,诚邀您莅临参观指导

在深圳市政府指导和深圳市发展改革委支持下&#xff0c;深圳市半导体与集成电路产业联盟携手深圳市重大产业投资集团有限公司共同主办的首届“SEMiBAY湾芯展”——湾区半导体产业生态博览会&#xff0c;将于今年10月16日至18日盛大举行。 本次展会以“芯动未来&#xff0c;共创…

【MySQL】VARCHAR和CHAR的区别?

目录 区别存储方式最大长度存取效率 使用场景参考 在MySQL中&#xff0c;VARCHAR和CHAR是两种常用的字符串数据类型&#xff0c;它们各自有不同的特点和适用场景。下面我将和大家一起了解这两种数据类型的区别及使用场景。 区别 存储方式 CHAR(N)&#xff1a;定长存储&#…

6-2.Android 对话框之基础对话框问题清单(UI 线程问题、外部取消、冲突问题、dismiss 方法与 hide 方法)

对话框 对话框&#xff08;Dialog&#xff09;是一种常用的 UI 组件&#xff0c;它主要用于显示信息、接收用户操作反馈 对话框可以包含各种元素&#xff0c;但是主要还是以文本、按钮为主&#xff0c;其次是列表 其中&#xff0c;基础对话框是 Android 中最简单的对话框&…

elementui时间选择器time-picker返回值不对的问题

1. 问题 天杀的elementui的time-picker&#xff0c;导致我开发的系统出现了一次生产问题&#xff0c;原因竟然是因为组件库的bug&#xff01;直接上截图。 如图&#xff0c;正常情况下&#xff0c;选择时间后&#xff0c;想要得到的值理应是当天的时间&#xff0c;如图是当年…

Python | Leetcode Python题解之第486题预测赢家

题目&#xff1a; 题解&#xff1a; class Solution:def PredictTheWinner(self, nums: List[int]) -> bool:length len(nums)dp [0] * lengthfor i, num in enumerate(nums):dp[i] numfor i in range(length - 2, -1, -1):for j in range(i 1, length):dp[j] max(num…

62天框架安全(学习)

发现学了之后没有去复习&#xff0c;每天都要问自己学了什么&#xff0c;复习了吗&#xff0c;下次还能记住吗 一下内容来自【小迪安全2023】第62天:服务攻防-框架安全&CVE复现&Spring&Struts&Laravel&ThinkPHP_小迪安全文档2023-CSDN博客 一个网站的源码…

解决 Elasticsearch cluster_block_exception 错误的终极指南

Elasticsearch 是一个功能强大的分布式搜索引擎&#xff0c;广泛应用于全文检索、实时分析等场景。 尽管如此&#xff0c;像任何复杂系统一样&#xff0c;它也会遇到一些运行问题&#xff0c;其中较为常见且影响较大的就是 cluster_block_exception 错误。 本文将深入解析这种错…

Java面试指南:Java基础介绍

这是《Java面试指南》系列的第1篇&#xff0c;本篇主要是介绍Java的一些基础内容&#xff1a; 1、Java语言的起源 2、Java EE、Java SE、Java ME介绍 3、Java语言的特点 4、Java和C的区别和联系&#xff1f; 5、面向对象和面向过程的比较 6、Java面向对象的三大特性&#xff1a…