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

桌面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的开发模式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/892650.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32 | STM32F4OTA_ESP8266_Bootloader为引导程序远程更新的代码(APP)

更新。点击上方"蓝字"关注我们 01、思路 >>> STM32F4OTA_ESP8266_Bootloader为引导程序 远程更新的代码&#xff08;APP&#xff09;:远程更新的APP Ymoden_server&#xff1a;为运行在Linux的TCP服务器 备注&#xff1a;STM32 OTA远程更新需要连接热点 电…

信息抽取数据集处理——RAMS

引言 RAMS数据集&#xff08;RAMS&#xff1a;Richly Annotated Multilingual Schema-guided Event Structure&#xff09;由约翰斯霍普金斯大学于2020年发布&#xff0c;是一个以新闻为基础的事件抽取数据集。它标注了9,124个事件&#xff0c;涵盖了139种不同的事件类型和65种…

Tailwind css系列教程(二)

一、参考属性 https://tailwind.muzhifan.top/ 也可查找官方网站 以下为参考官网及网络上其他文章内容整理&#xff1a; 二、常用属性格式 1、颜色 color&#xff1a;颜色名称 shade&#xff1a;色度&#xff0c;取值范围为 100~900&#xff0c;不可对黑色或白色使用 文…

极化基变化后的散射矩阵

极化基只旋转一次 重点&#xff1a;发射和接收的电磁波可以理解为&#xff0c;在极化基上的坐标&#xff0c;或者就是琼斯矢量&#xff1b; 其中极化基坐标的理解方式在想发射的时候好理解&#xff0c;回波由于多了个共轭&#xff0c;就想其接收到的不是坐标&#xff0c;而是琼…

Power BI:链接数据库与动态数据展示案例

一、案例背景 在数据驱动的时代&#xff0c;如何高效、直观地展示和分析数据成为了企业决策和个人洞察的关键。Power BI作为一款强大的商业智能工具&#xff0c;凭借其强大的数据连接能力、丰富的可视化选项以及交互性和动态性&#xff0c;成为了众多企业和个人的首选。本文将…

unity学习笔记-Text mesh Pro

Text mesh Pro组件 组件使用的大致流程细节导入之后字体没有显示可能一 可能二 注意事项 好久没更了…最近在学习使用别人的框架进行开发&#xff0c;坑也不少&#xff0c;不过学习到了很多设计思维。 言归正传。忘了是什么是时候的版本开始&#xff0c;unity多了这个组件&…

nextjs项目中,使用postgres的完整案例

目的 通过此案例&#xff0c;可以简单快速的过一下数据库的操作&#xff0c;熟悉app-router这种模式下&#xff0c;client component和server component的两种组件中基本的接口使用。 技术栈 nextjs14.2.* app-routervercel/postgres0.10.*typescript5 重要事情说三遍1 ap…

解决visio2021与本地家庭和学生版office21不兼容问题

原因分析 office 分为 MSI(windows Installer)和C2R(即点即用版本) 两个版本。 下载对应版本 可以看这个B站哥哥的资源&#xff1a;https://www.bilibili.com/read/cv17513800/ &#xff0c;选择标准离线版本安装

[单master节点k8s部署]37.微服务(一)springCloud 微服务

微服务架构的一个重要特点是&#xff0c;它与开发中使用的具体编程语言或技术栈无关。每个微服务都可以使用最适合其功能需求的语言或技术来实现。例如&#xff0c;一个微服务可以用Java编写&#xff0c;另一个微服务可以用Python、Go、Node.js等编写。微服务架构允许这种灵活性…

基于Arduino做的“鱿鱼游戏”BOSS面具,支持动作检测

这是一个结合了3D打印、舵机、PIR传感器和DFPlayer MP3模块的DIY项目&#xff0c;旨在制作一个带有动画眼睛的"鱿鱼游戏"老板面具。当检测到动作时&#xff0c;面具的眼睛会移动并播放声音&#xff0c;非常适合万圣节使用。 这个项目是一个很好的起点&#xff0c;特…

又一支付机构“经营异常”——易极付

近日&#xff0c;支付行业再次传出风波&#xff0c;重庆易极付科技有限公司&#xff08;简称“易极付”&#xff09;因“失联”问题被重庆两江新区市场监督管理局列入了经营异常名录。据天眼查平台显示&#xff0c;这一决定是基于“通过登记的住所或者经营场所无法联系”到该公…

【CSS in Depth 2 精译_050】7.3 CSS 响应式设计中的流式布局原则(Fluid layout)

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 【第七章 响应式设计】&#xff08;概述&#xff09; 7.1 移动端优先设计原则&#xff08;上篇&#xff09; 7.1.1 创建移动端菜单&#xff08;下篇&#xff09;7.1.2 给视口添加 meta 标签&#xf…

Linux Debian12基于ImageMagick图像处理工具编写shell脚本用于常见图片png、jpg、jpeg、tiff格式批量转webp格式

在Linux系统中&#xff0c;使用ImageMagick可以图片格式转换&#xff0c;其中最常用的是通过命令行工具进行。 ImageMagick是一个非常强大的图像处理工具集&#xff0c;它包含了许多用于图像转换的命令。 一、安装ImageMagick&#xff08;如果尚未安装&#xff09;&#xff1…

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…

力扣21~30题

21题&#xff08;简单&#xff09;&#xff1a; 分析&#xff1a; 按要求照做就好了&#xff0c;这种链表基本操作适合用c写&#xff0c;python用起来真的很奇怪 python代码&#xff1a; # Definition for singly-linked list. # class ListNode: # def __init__(self, v…

leetcode30:串联所有单词的字串

给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。 s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。 例如&#xff0c;如果 words ["ab","cd","ef"]&#xff0c; 那么 "abcdef…

NetSarang Xshell v8.0060 Linux终端管理器个人免费版

NetSarang Xshell 官方个人完全免费中文版&#xff0c;Xshell特别版&#xff0c;Xshell 个人完全免费&#xff0c;Xshell 是一款最好用的Linux远程连接工具&#xff0c;免费SSH客户端、主机服务器远程管理客户端 。Xshell&#xff0c;轻松管理远程服务器&#xff0c;会话管理器…

《人工智能:CSDN 平台上的璀璨之星》

一、CSDN 上的 AI 热门话题 GPT-3 作为 CSDN 上的热门话题&#xff0c;其应用极为广泛。GPT-3 是 OpenAI 开发的一种基于 Transformer 架构的大规模预训练语言模型&#xff0c;拥有惊人的 1750 亿个参数。它具有多任务处理能力&#xff0c;能够执行多种自然语言处理任务&#x…

基于KNN算法的指纹定位系统(MATLAB,平面,四个锚点)

文章目录 指纹定位指纹定位技术简介基本原理位置估算公式1. 最近邻居算法&#xff08;KNN&#xff09;2. 加权最近邻居算法&#xff08;W-KNN&#xff09;3. 最小二乘法&#xff08;LS&#xff09; 最终位置 P P P通过求解下面的方程获得&#xff1a;应用场景优缺点优点缺点 总…

Python 工具库每日推荐 【pyspider 】

文章目录 引言网络爬虫的重要性今日推荐:pyspider 网络爬虫框架主要功能:使用场景:安装与配置快速上手示例代码代码解释实际应用案例案例:爬取新闻网站的文章案例分析高级特性使用代理处理 JavaScript 渲染的页面扩展阅读与资源优缺点分析优点:缺点:总结【 已更新完 Type…