【一起学Rust | 框架篇 | Tauri2.0框架】Tauri2.0环境搭建与项目创建


文章目录

  • 前言
  • 一、搭建 Tauri 2.0 开发环境
  • 二、创建 Tauri 2.0 项目
    • 1.创建项目
    • 2.安装依赖
    • 4. 编译运行
  • 三、设置开发环境
  • 四、项目结构


前言

Tauri在Rust圈内成名已久,凭借Rust的可靠性,使用系统原生的Webview构建更小的App
以及开发人员可以灵活的使用各种前端框架而一战成名。

然而,这款年轻的框架却有着大量的问题待解决,在这种情况下,他竟然还出了2.0,想要支持安卓苹果端,在我看来步子还是跨的挺大的,有一个相当棘手的问题就是文档资料严重跟不上,大量内容需要用户主动去探索,并且出了问题也只能是自己解决。

不论如何,既然选择了Tauri,那就要解决这些麻烦。


本节内容应该是本系列文章内容的第一篇,介绍如何搭建Tauri 2.0的开发环境,以及创建Tauri 2.0 的项目。

Tauri 2.0目前还处于Alpha测试阶段,目前有很多东西尚未完善,功能极少,但可以确定的是,2.0版本是支持跨端应用开发的,由于对Tauri期待比较高,已经迫不及待想要上手体验了,我其中踩到的坑以及解决思路会写到这,供大家参考。

对于 Tauri 2.0 ,如何创建项目是一个很困难的问题,官方没有提供任何文档,默认创建的项目就是1.X的版本,如果你想体验Tauri的最新特性,那么就需要自己探索了,一些Issue中提到过如何创建2.0项目,但是别那么多的Issue淹没了,因此这里要确定创建2.0项目的方法。(希望正式发布的时候会方便点)

Tauri 2.0 目前有个相当离谱的坑就是依赖问题,pnpm能解决js或ts的依赖问题,但是cargo只能让依赖保持最新,并且还有缓存,寻找问题的原因变得极为困难,这就导致会出现一些莫名其妙的问题,因为Tauri版本与插件版本会出现不兼容问题。

本系列文章是非线性,一些要紧的内容会先发在前面,一些优先级比较低的内容会发在后面,最终会写一个目录帖告诉大家阅读顺序。(重要程序与优先级取决于我是否有空,以及是否有这样的例子。)

一、搭建 Tauri 2.0 开发环境

本教程默认你已经安装基本开发环境,如果你没有安装,请查看往期教程。

我当前的环境如下

软件版本
Nodejsv18.16.0
pnpm任意
rust1.70

由于Rust和Nodejs先前已有安装教程,这里就不多写了,本次只介绍安装Pnpm,Pnpm是一个更加好用的包管理工具,具体哪里好,建议百度一下,你就知道。安装较为简单

npm install pnpm -g

安装没有报错就说明安装成功。

二、创建 Tauri 2.0 项目

1.创建项目

Tauri 2.0 使用pnpm创建项目的命令如下

pnpm create tauri-app --alpha

官方也提供了其他方式创建项目,如果你有兴趣,可以去官网看看 ✈飞机票

执行那条命令,以下是输入的选项:

  1. 项目名:Tauri-Angular
  2. 前端语言:Typescript / JavaScript
  3. 包管理器:pnpm
  4. UI模板:Angular
  5. 是否初始化移动端: y

以上是我翻译和操作的结果,你可以适当选择,或者直接使用和我一样的,具体效果如下图。

2.安装依赖

按照提示,应该是依次执行

  cd tauri-angularpnpm install

4. 编译运行

接下来直接编译运行初始项目,看看效果

pnpm tauri dev

命令运行后有一个较长的编译过程

开始编译

编译完成后,效果如下

三、设置开发环境

无论是Tauri还是Rust,官方都建议使用VSCode来进行开发,同时对其支持也是相当完善,因此使用VSCode做开发。安装好VSCode后,只需要安装以下安装插件
在这里插入图片描述
只要安装这三款插件即可

四、项目结构

当前项目文件结构如下
在这里插入图片描述
在当前目录中,需要关心的,基本上只有

  • src:Angular前端源文件夹
  • src-tauri:Rust后端源文件夹

至于其他的,都是程序自动维护的,最好不要手动更改。
Angular前端文件
这个部分取决于你使用的是哪种前端,但本质上,还是前端那些东西,就不再赘述了。

但有一点是值得注意的

此按钮功能的实现是前后端互动实现的,因此查其代码


此时查看后端文件

在代码框中,有以下两个函数

#[tauri::command]
fn greet(name: &str) -> String {format!("Hello, {}! You've been greeted from Rust!", name)
}#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {tauri::Builder::default().plugin(tauri_plugin_shell::init()).invoke_handler(tauri::generate_handler![greet]).run(tauri::generate_context!()).expect("error while running tauri application");
}

其中greet就是前端所调用的那个函数,而run是程序的入口,有以下需要注意的

  • .plugin(tauri_plugin_shell::init())注册了shell插件(必选)。
  • .invoke_handler(tauri::generate_handler![greet])注册了函数,使得前端可以调用。

也就是说,rust后端定义了command必须经过注册,前端才可以使用,代码编写顺序参考以上。

原定计划本节有安装环境配置,由于环境存在问题,在后续会给出。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C/C++ 连接访问 MySQL数据库

前面我们已经讲述了MySQL的基础使用,现在我们来看一下如何使用语言来操作数据库。在实际开发中,语言连接MySQL是为了能够在编程语言中与MySQL数据库进行交互和操作。大部分情况我们都是通过语言连接MySQL,建立与MySQL数据库的连接&#xff0c…

wpf 非常漂亮ItemsControl 里面的元素间隔不同的颜色 ItemsControl中的子元素按照奇数和偶数索引来交替使用不同的背景颜色

在这个例子中,我们使用了两个DataTrigger,它们分别检查ContentPresenter的AlternationIndex属性是否为0或1。如果AlternationIndex为0,TextBlock的背景颜色将设置为#07FAFE;如果AlternationIndex为1,TextBlock的背景颜…

ArkUI - 状态管理

目录 一、State装饰器 二、自定义组件 三、Prop和Link、Provide和Consume 四、Observed和ObjectLink 一、State装饰器 这里涉及到两个概念 状态 和 视图 状态(State):指驱动视图更新的数据(就是被State注解标记的变量&…

【力扣】543. 二叉树的直径

543. 二叉树的直径 突然间发现现在刷的题好多都和大一时学的数据结构密切相关,比如说这道题就用到的深度优先搜索算法。 题解: 以根节点为例,我们通过遍历左边的深度就可以得到当前左子树的长度,然后再遍历其右边,就…

智能优化算法应用:基于向量加权平均算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于向量加权平均算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于向量加权平均算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.向量加权平均算法4.实验参数设定…

Bloom过滤器

Bloom过滤器 一、概述二、原理三、优缺点1. 优点2.缺点 四、Bloom过滤器在比特币中的应用五、项目应用步骤1. pom.xml引入依赖2. 样例代码 六、Java版简易实现 一、概述 Bloom过滤器是一个允许用户描述特定的关键词组合而不必精确表述的基于概率的过滤方法。它能让用户在有效搜…

双向长短期神经网络(Bi-LSTM)-多输入时序预测

目录 一、程序及算法内容介绍: 基本内容: 亮点与优势: 二、实际运行效果: 三、部分代码展示: 四、完整代码下载: 一、程序及算法内容介绍: 基本内容: 本代码基于Matlab平台编…

Plantuml之序列图语法介绍(十七)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

Django开发1

Django开发1 初识Django1.安装django2.创建项目2.1 在终端2.2 Pycharm 3. 创建app4.快速上手4.1 再写一个页面4.2 templates模板4.3 静态文件4.3.1 static目录4.3.2 引用静态文件 5.模板语法//Django开发案例:联通新闻中心6.请求和响应案例:用户登录7.数…

蓝牙物联网在智能家居中的应用前景

物联网智能家居系统是应用物联网技术,在传统家居环境下将各种零散无序的电器整合成统一整体,实现家电的全程自动控制,满足用户高效管理需求的一种新型家居模式。 其主要的子系统有家居感知系统、家庭网络系统、智能家居控制管理系统等&#x…

JavaOOP篇----第十四篇

系列文章目录 文章目录 系列文章目录前言一、Hashcode的作用二、Java的四种引用,强弱软虚三、Java创建对象有几种方式?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码…

vivado 时序异常

时序异常 关于定时例外 当逻辑的行为方式未被正确计时时,需要计时异常违约任何时候都必须使用计时异常命令来处理计时不同地(例如,对于每隔一个时钟周期仅捕获结果的逻辑设计)。 AMD Vivado™IIDE支持下表中显示的定时异常命令…