slint 1.0 已发布,标志着项目已顺利从开发阶段“毕业”,可正式用于生产环境。
slint 可用于为各种操作系统和处理器架构开发 ui,包括 linux、macos、windows、webassembly、blackberry qnx 和裸机。它允许 javascript 开发人员为嵌入式和桌面应用程序创建原生用户界面。
slint ui 介绍 slint 曾经被称为 sixtyfps,特点是既快又小,是一个 rust 编写的综合性 ui 工具包,用于为桌面和嵌入式设备构建原生用户界面。其开发团队希望将 slint 打造成下一代 gui 工具包,因此从头开始构建项目时就考虑了可扩展性、包容性、工具性和跨平台兼容性。
流畅:平滑,触摸友好的用户接口
跨平台:目标平台包括嵌入式设备和桌面应用软件(手机和网页)
多语言:可以使用自己擅长的语言api(c++,rust,javascript)
快速设计:适时预览快速迭代
多语言支持的描述,参考官方原文:
we choose to first support this set of languages because it is the implementation language, another low level language, and a dynamic language. we believe that it will be easy to extend the integration into more programming languages later.
slint 的定位是一个支持多语言、适配任意显示屏、且高效流畅的用户图形接口工具包。设计目标包括:
可扩展:在连接到设备的任何屏幕上运行,从台式计算机到低功耗嵌入式设备。
轻量级:能够在几百kb内存的场景中运行,并且需要很少的处理能力。
原生支持:slint 支持多种目标平台,从嵌入式设备到桌面应用,包括移动设备和 web。
开发团队表示,使用 slint 构建的图形应用程序可以在内存小于 300 kb 的系统上运行,例如包含 264kb ram 和 arm cortex-m0+ 处理器的 raspberry pi pico。因此,slint 非常适合为嵌入式设备应用程序开发 ui。
slint 使用了声明式编程来简化 ui 的开发,优化应用程序开发和性能的方法是:
用声明式语言来描述 ui,使用的语法提供了一种广泛的方式来描述各种图形元素,同时易于阅读、编写和学习
slint 编译器对描述 ui 的代码进行优化并翻译成原生代码
采用任何语言编写的业务逻辑,可通过使用 slint 提供的特定于语言的 api 与 ui 连接
整体架构
控件支持
示例:
不同平台的原生桌面小部件(windows、macos、linux)
webassembly
slint 完全采用 rust 实现,同时支持不同的编程语言,目前为 c++、javascript 和 rust 提供了 api。
详情查看发布公告:https://slint-ui.com/blog/announcing-slint-1.0.html
mcu支持 slint-ui 是嵌入式开发的福音,基于 rust ,使用了声明式编程来简化 ui 的开发,从此再也不用忍受 lvgl/minigui 之类各种各样的一大票用 c 搞出来的杂七杂八蹩脚又折磨人的 ui 框架(c 框架心智负担太重,很难做到界面与逻辑分离,一旦需求变动几乎就是灾难)。也许有人会问为什么不用 qt?qt 太庞大,不适合没有操作系统的单片机,再者qt for mcu是商业软件不开源,slint-ui 支持 gplv3 许可证(采用gpl协议,总感觉有点怪怪的,不知道后续是否会步qt后尘全面商用收费)
关于移植到 mcu 相关的信息可以看一下官方文章及项目例程:
slint::mcu - rust: https://slint-ui.com/releases/0.3.0/docs/rust/slint/docs/mcu/index.html
porting the slint ui toolkit to a microcontroller with 264k ram — slint blog: https://slint-ui.com/blog/porting-slint-to-microcontrollers.html
slint-mcu-rust-template.git: https://github.com/slint-ui/slint-mcu-rust-template.git
界面展示:
打印机:【查看在线交互演示】: https://slint-ui.com/releases/0.3.0/demos/printerdemo
rust slint 简单入门 1. slint 界面代码嵌入在 rust 中 新建项目
cargo new rust-ui 添加库 toml
[dependencies]slint = 1.0.0 main.rs中添加代码:
fn main() { // 运行slintui窗体 mainwindow::new().run();}// slint宏,创建 uislint::slint!{ export component mainwindow inherits window { title: main window; width: 600px; height: 500px; // 定义一个 text 组件 text{ text: hello, world; color:blue; } }} 上述是将界面 slint 代码嵌入在 rust 同一个文件中,slint 声明式编程来简化 ui 的开发,有 flutter、compose 以及其他前端开发经验同学很容易上手。更多组件的使用的请参考开发文档和 demo示例
2、界面 slint 文件与 rust 代码分开 cargo.toml 添加
[build-dependencies]slint-build = 1.0.0 添加界面文件,新建 ui/main.slint 文件
import {groupbox, lineedit, button} from std-widgets.slint;export component mainwindow inherits window { title: main window; width: 600px; height: 500px; verticallayout { alignment:start; padding-left: 25px; padding-right: 25px; text { font-size: 27px; font-weight: 700; color: #6776ff; } groupbox{ title:lineedit; lineedit { placeholder-text: enter text; } } button { text: click me; clicked => { self.text = clicked; } } }} 添加 build.rs 文件
fn main() { slint_build::compile(ui/main.slint).unwrap();} main.rs 主文件
slint::include_modules!();fn main() { mainwindow::new().unwrap().run().unwrap();} 建立好的项目文件结构如下:
执行命令:cargo run,运行效果如下图,以上所有程序开发均在vs code下完成(依赖slint官方插件)
注:vscode插件:slint 语法高亮并可以进行界面预览 https://marketplace.visualstudio.com/items?itemname=slint.slint
总结 slint 是一个 rust 编写的综合性 ui 工具包,定义和提供一系列方便构建 ui 的组件,使用了声明式编程来简化 ui 的开发,可用于为桌面和嵌入式设备构建原生用户界面。使用 slint 构建的图形应用程序可以在内存小于 300 kb 的系统上运行,实事求是的讲,内存较大的嵌入式设备上 android 更占优势,但是低内存的嵌入式设备(比如单片机)上 slint 有很大机会,总之,slint 非常适合为嵌入式设备应用程序开发 ui。
5G让新型基础设施建设提速,新能源产业链企业如何把握机会
曝苹果新款ARM架构Mac芯片最高搭载32核CPU
基于二维六方氮化硼无机液晶的磁光调制器
鸡血版显卡驱动:DirectX 12专版驱动
研究人员开发出一个水果采摘机器人
Rust UI框架:Slint UI简单入门
传苹果A16芯片已试产 性能稳步提升
100W基本MOSFET放大器电路图和PCB布局
常见的光纤连接器你了解吗
紧跟Max-Q潮流:宏碁发布超薄Predator TRITON 700游戏本:内置GTX1080
智能手机“高品质专业屏幕”突出重围 情况是好是坏
免费下载 | DB33/T 1055-2018 浙江省《环境照明工程设计规范》智慧路灯杆地方标准免费下载
为什么功能集成和有效电源管理是智能蓝牙设备创新的推动因素
2019年成为区块链技术主流的行业有哪些
人工智能时代着力建立智能系统智商评测体系
HUAWEI nova 3系列在产品、品牌等方面有何优势?华为今年手机2亿部销量如何实现?
到底什么是3D视觉技术?
身处困境的比亚迪将用什么撑起七千亿市值?
傲视智绘单线2D扫描激光雷达介绍
浅谈ARM发布Armv9的三大改进