通过跨端程序tauri,来简单入门一下rust

简介: Tauri 是一个跨平台 GUI 框架,与 Electron 的思想基本类似。Tauri 的前端实现也是基于 Web 系列语言,Tauri 的后端使用 Rust。Tauri 可以创建体积更小、运行更快、更加安全的跨平台桌面应用。

image.png


大家好,我是 那个曾经的少年回来了。10年前我也曾经年轻过,如今已步入被淘汰的年龄,但如下幡然醒悟,所以活在当下,每天努力一点点,来看看2024年的时候自己会是什么样子吧,2024年的前端又会是什么样子,而2024年的中国乃至全球又会变成什么样子,如果你也有想法,那还不赶紧行动起来。期待是美好的,但是更重要的是要为美好而为之奋斗付诸于行动。


1、前言


Tauri 是一个跨平台 GUI 框架,与 Electron 的思想基本类似。Tauri 的前端实现也是基于 Web 系列语言,Tauri 的后端使用 Rust。Tauri 可以创建体积更小、运行更快、更加安全的跨平台桌面应用。


众所周知,Electron 相当于是打包了一个小型浏览器,体积大,还占内存。而 Tauri 开发的应用,前端使用操作系统的 webview,后端集成了 Rust,使得打包后的体积相当小。有人对比了打包同样一个 Hello World 程序,Electron 打包的应用在 50 MB 左右,而 Tauri 只有 4 MB 大小。-------这里摘自掘友的文章# 昆吾kw


2、准备环境


2.1、打开命令行执行


xcode-select --install


这个过程可能需要几分钟的时间


2.2、安装rust


curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh


2.3、window下安装


  • Microsoft Visual Studio C++ 构建工具


下载链接visualstudio.microsoft.com/zh-hans/vs/

VS2022 Enterprise 企业版


安装时一定要选择C++


image.png


tauri.app/zh/v1/guide…


  • 下载webview2


下载链接:developer.microsoft.com/zh-cn/micro…


下载完毕后安装即可



image.png


2.4、mac下安装


可以去官网看一下写的很清楚


3、创建tauri桌面项目


3.1、命令行安装


pnpm create tauri-app


image.png


使用vscode打开项目查看


image.png


pnpm dev // 打开的是前端vue项目
pnpm tauri dev // 打开客户端如下
复制代码


总共大概使用了6分钟


image.png


第二次运行的时间就大大缩短


image.png


3.2、打包编译


首先找到src-tauri\tauri.conf.json,修改如下节点


"identifier": "com.aehyok.dev",


然后开始编译


pnpm tauri build


之后发现错误,我翻了墙然后重新编译就OK了,因为要下载github上的压缩包


image.png


3.3、 本地安装客户端


生成了msi安装包之后,直接点击本地安装,当然是window版本的


image.png


4、rust入门


其实上面已经安装好了rust环境。我们前端使用的包管理工具是npm,而rust的包管理程序是cargo, 直接在命令行中输入 cargo


image.png


本文主要先来个入门


4.1、开始创建rust项目


cargo new rust-demo


执行完毕后可以看到如下所示的文件目录


image.png


或者可以像npm一样 npm init,来使用cargo init 也是一样可以创建项目。创建完项目直接run便可以看到hello world,证明项目跑起来了。


cargo run 


image.png


4.2、依赖处理


crates.io 官网 有点类似于 www.npmjs.com 从上面可以搜索到任何想使用的包,如果有的话。如果没有你可以实现,然后在这里发布包。


比如我想找 reqwest


image.png


当然也可以通过命令进行查找


cargo search reqwest


image.png


官网看一下 reqwest


image.png


将第一段两个依赖拷贝到Cargo.toml文件中,如下图


reqwest = { version = "0.11", features = ["json"] }
tokio = { version = "1", features = ["full"] }


reqwest 是一个简单而强大的 RUST HTTP 客户端,用于浏览器异步 HTTP 请求。支持 xmlHttpRequest, JSONP, CORS, 和 CommonJS 约束。

reqwest 的 async 使用的是 Tokio 的,所以要同时加入 Tokio 的依赖。tokio 目前是最受欢迎的异步运行时,功能强大,还提供了异步所需的各种工具(例如 tracing )、网络协议框架(例如 HTTP,gRPC )等等。


4.3、调用依赖


然后将第二个代码拷贝到 src/main.rs


use std::collections::HashMap;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let resp = reqwest::get("https://httpbin.org/ip")
        .await?
        .json::<HashMap<String, String>>()
        .await?;
    println!("{:#?}", resp);
    Ok(())
}


4.4、执行


开始运行项目


cargo run


image.png


可以发现最后打印出结果了


5、总结


Mozilla 创造了 Rust,Facebook、Apple、Amazon、Microsoft 和 Google 都使用 Rust 去开发系统基础设施、加密、虚拟化以及其他的层级较低的软件。


掘友有一篇翻译 RUST 是 JavaScript 基建的未来,有理由相信慢慢的会有越来越多的人来拥抱rust。

我的个人博客:vue.tuokecat.com/blog


我的个人github:github.com/aehyok


我的前端项目:pnpm + monorepo + qiankun + vue3 + vite3 + 工具库、组件库 + 工程化 + 自动化


不断完善中,整体框架都有了


在线预览:vue.tuokecat.com


github源码:github.com/aehyok/vue-…

目录
相关文章
|
1月前
|
Rust 程序员 开发者
使用 Rust 开发一款类似于 GitBook 的程序
**Rust新手开发者分享开源项目 Typikon**:模仿MDBook,致力于简单Markdown到在线书的渲染。[GitHub](https://github.com/auula/typikon)上可找到源码,欢迎初学者一同学习与贡献。体验轻松构建静态网站,探索Rust之旅。🌟 加入讨论,共建更易用的GitBook替代品。在线文档见[https://typikonbook.github.io](https://typikonbook.github.io)。
24 1
|
2月前
|
Rust Linux iOS开发
【Rust学习】01_入门准备
让我们开始您的 Rust 之旅吧!有很多东西要学,但每一段旅程都是从第一步开始的,在本章中,我们将一起来学习以下知识点: - 在 Linux、macOS 和 Windows 上安装 Rust - 编写打印程序 Hello, world! - 使用 cargo Rust 的包管理器和构建系统
61 1
|
2月前
|
Rust 前端开发 JavaScript
Tauri框架:使用Rust构建轻量级桌面应用
Tauri是一个用Rust构建的开源框架,用于创建轻量、安全且高效的跨平台桌面应用,结合Rust与Web技术(HTML/CSS/JS)。它遵循最小权限原则,仅在必要时调用OS API。Tauri架构包括Rust后端、Web前端、Tauri API和包装器。通过`cargo tauri init`可创建新项目,Rust后端处理系统交互,前端负责UI,两者通过Tauri API通信。Tauri支持自定义API、集成前端框架、资源管理、自动更新、系统集成和安全配置。此外,Tauri拥有插件系统和丰富的扩展能力,提供调试和测试工具,并有性能优化建议。
170 4
|
2月前
|
Rust 开发者
Rust函数入门与函数重载
Rust函数入门与函数重载
40 0
|
2月前
|
Rust 安全 开发者
Rust语言的Hello, World! 程序解析
Rust语言的Hello, World! 程序解析
31 0
|
3月前
|
Web App开发 Rust 安全
一名C++程序员的Rust入门初体验
作者最近尝试写了一些Rust代码,本文主要讲述了对Rust的看法和Rust与C++的一些区别。
234 3
|
3月前
|
Rust 算法 IDE
我们的第一个Rust程序
Rust语言学习者,通常都会有其它语言的背景,很少有人从零入门Rust。 Rust语言应该有一门适合初学者的教程,来帮助大家使用Rust作为入门语言,我非常希望有人能使用原汁原味Rust的思维在计算机世界攻城略地。
我们的第一个Rust程序
|
3月前
|
Rust 算法 开发者
【Rust 控制流入门指南】 Introduction to Control Flow in Rust
【Rust 控制流入门指南】 Introduction to Control Flow in Rust
40 0
|
3月前
|
Rust JavaScript 前端开发
将 Rust 程序编译为 WebAssembly
将 Rust 程序编译为 WebAssembly
182 0
|
9月前
|
Rust
Rust 基础入门 —— 语句与表达式
语句与表达式 这一节,我们接触的是rust中的有一个基本类型 我将其称之为 —— 逻辑结构,这个是我自己命名的,但我觉得很贴切。
46 3