【Rust 实战】Rust GUI 框架—抖音短视频解析工具GUI

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介: 【Rust 实战】Rust GUI 框架—抖音短视频解析工具GUI

0x00 开篇


上周我们写了一个短视频解析小工具,但是运行起来是一个“黑框”,那本篇文章将介绍一个 Rust 的 GUI 框架来给这个小工具“穿上衣服”。本篇文章涉及到的 GUI 框架是 TauriFLTK-rs。我先会做一个简单的入门介绍,然后再使用它们来包装这个短视频解析的小工具。本文并不会详细介绍 TauriFLTK-rs 的使用教程。其实 Rust 到目前为止已经出现很多 GUI 框架了,还有 iced 等等。本篇文章的阅读时间大约 12 分钟


0x01 认识 Tauri


Tauri 类似于 Electron ,但是  Tauri 使用系统自带的网页渲染器,没有将 chromium 打进包内,所以打出包大小的体积非常小。在 WindowsTauri 基于 Microsoft EdgeChromiumWebView2(Windows 11预装,Windows 10 最新版已预装,Windows 7 可以额外下载运行时)。在LinuxmacOS 上使用的是 WebKit

Tauri 的界面使用 Htmljscss来构建,支持 VueReact 等框架。具体的业务实现逻辑使用 Rust来构建。


0x02 创建 Tauri 项目


准备工作


  • 系统:Windows 11 64位
  • WebView2:系统预装
  • pnpm
  • rust
  • VSCode

创建项目


通过命令 pnpm create tauri-app 创建项目。


0a2653c851af460fa595bd959398a8f1.png


我这里习惯选择了 vue-ts UI 模板,可以根据自己的喜好来选择。最终项目目录如下:


2d65d23f6d4748949b924e4057485923.png


然后执行命令pnpm install安装依赖,使用命令pnpm tauri dev 就是运行项目了。首次编译项目会非常慢。

在 Rust 的 main.rs 中,我们所有给前端页面的接口都需要通过tauri::generate_handler!来"注册"。

tauri::Builder::default()
        .invoke_handler(tauri::generate_handler![get_dy_info])
        .run(tauri::generate_context!())
        .expect("error while running tauri application");

前端页面需要使用 invoke() 方法来调用 Rust 的函数。注意:所有给前端的 Rust 函数都是异步返回的。

let info = await invoke("get_dy_info", { input: input.value })

我们将上一篇文章的源码稍微改动下。


Coding中...请等待...


最终效果


0a2653c851af460fa595bd959398a8f1.png


打包分发


2d65d23f6d4748949b924e4057485923.png


首先我们要先修改tauri.conf.json 中的 identifier,  改为 com.tauri.build,然后执行命令

pnpm tauri build


首次构建会下载 wix。当然还可以对安装包进行一些自定义的优化,详见官方文档。另外,Tauri暂不支持 portable 模式,俗称绿色版。


0x03 认识 FLTK-rs


再来了解下另一个 GUI 框架。FLTK (The Fast Light Tool Kit)是一个跨平台的轻量级GUI库,支持 Linux、Windows、MacOS。如果你觉得 Tauri 有点重或者是不熟悉前端语法,那我推荐你使用这个库,使用起来也非常简单,仅仅导入一个 crate 就可以了。

fltk = { version = "1.3.19", features = ["fltk-bundled"] }


0x04 使用 fltk-rs


简单使用


几行代码,一个窗口就可以创建。下面的代码就是创建一个窗口了。

use fltk::{app, prelude::*, window::Window};
fn main() {
    let app = app::App::default();
    let mut wind = Window::new(100, 100, 800, 300, "hello Rust!");
    wind.end();
    wind.show();
    app.run().unwrap();
}


移植代码,Coding中...请等待...


最终效果


0a2653c851af460fa595bd959398a8f1.png


说实话除了丑一点,其它还好。


0x05 小结


本篇文章主要来探讨 Rust GUI 框架目前的可行性。在桌面跨平台 GUI 方便,目前面对Flutterelectron 等框架,Rust 还有很长的路要走。如果目前真需要用 Rust 做一些小工具,我推荐使用 tauri


0x06 参考资料


Tauri 官方文档:https://tauri.app/zh-cn/v1/guides/

FLTK 中文文档:https://flatig.vip/fltk-book-zh/Home.html

相关文章
|
27天前
|
人工智能 API 开发者
HarmonyOS Next~鸿蒙应用框架开发实战:Ability Kit与Accessibility Kit深度解析
本书深入解析HarmonyOS应用框架开发,聚焦Ability Kit与Accessibility Kit两大核心组件。Ability Kit通过FA/PA双引擎架构实现跨设备协同,支持分布式能力开发;Accessibility Kit提供无障碍服务构建方案,优化用户体验。内容涵盖设计理念、实践案例、调试优化及未来演进方向,助力开发者打造高效、包容的分布式应用,体现HarmonyOS生态价值。
88 27
|
1月前
|
数据采集 JSON 数据可视化
JSON数据解析实战:从嵌套结构到结构化表格
在信息爆炸的时代,从杂乱数据中提取精准知识图谱是数据侦探的挑战。本文以Google Scholar为例,解析嵌套JSON数据,提取文献信息并转换为结构化表格,通过Graphviz制作技术关系图谱,揭示文献间的隐秘联系。代码涵盖代理IP、请求头设置、JSON解析及可视化,提供完整实战案例。
163 4
JSON数据解析实战:从嵌套结构到结构化表格
|
28天前
|
数据采集 机器学习/深度学习 存储
可穿戴设备如何重塑医疗健康:技术解析与应用实战
可穿戴设备如何重塑医疗健康:技术解析与应用实战
70 4
|
1月前
|
机器学习/深度学习 人工智能 Java
Java机器学习实战:基于DJL框架的手写数字识别全解析
在人工智能蓬勃发展的今天,Python凭借丰富的生态库(如TensorFlow、PyTorch)成为AI开发的首选语言。但Java作为企业级应用的基石,其在生产环境部署、性能优化和工程化方面的优势不容忽视。DJL(Deep Java Library)的出现完美填补了Java在深度学习领域的空白,它提供了一套统一的API,允许开发者无缝对接主流深度学习框架,将AI模型高效部署到Java生态中。本文将通过手写数字识别的完整流程,深入解析DJL框架的核心机制与应用实践。
73 3
|
1月前
|
缓存 监控 搜索推荐
【实战解析】smallredbook.item_get_video API:小红书视频数据获取与电商应用指南
本文介绍小红书官方API——`smallredbook.item_get_video`的功能与使用方法。该接口可获取笔记视频详情,包括无水印直链、封面图、时长、文本描述、标签及互动数据等,并支持电商场景分析。调用需提供`key`、`secret`和`num_iid`参数,返回字段涵盖视频链接、标题、标签及用户信息等。同时,文章提供了电商实战技巧,如竞品监控与个性化推荐,并列出合规注意事项及替代方案对比。最后解答了常见问题,如笔记ID获取与视频链接时效性等。
|
1月前
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
148 29
|
5月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
162 2
|
1月前
|
前端开发 数据安全/隐私保护 CDN
二次元聚合短视频解析去水印系统源码
二次元聚合短视频解析去水印系统源码
54 3
|
1月前
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
1月前
|
移动开发 前端开发 JavaScript
从入门到精通:H5游戏源码开发技术全解析与未来趋势洞察
H5游戏凭借其跨平台、易传播和开发成本低的优势,近年来发展迅猛。接下来,让我们深入了解 H5 游戏源码开发的技术教程以及未来的发展趋势。

热门文章

最新文章

推荐镜像

更多