V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
lizy0329
V2EX  ›  程序员

使用 Rust 来制作前端 UI 库,会不会快?

  •  
  •   lizy0329 · 24 天前 · 5301 次点击

    有类似的 rust UI 库观摩下吗?

    第 1 条附言  ·  17 天前
    ## 使用 rust 制作 UI 特性:

    ### 缺点
    1. **开发效率不占优**
    - 相比 HTML 、CSS 等,开发速度未必更快,使用宏生成 HTML 时,IDE 对宏的支持差,缺乏智能提示。
    - 实现相同特性可能需要更多代码量,且 UI 开发中共享状态等需求与 Rust 的特性存在冲突,往往需要引入 ECS 架构,反而降低生产力。
    2. **Web 端局限性明显**
    - Rust 并非浏览器上的一等公民,代码最终需编译为 HTML + CSS + JavaScript/ webcomponents ,性能可能受影响。
    3. **性能瓶颈不在语言本身**:UI 性能瓶颈多在渲染层、硬件层或 DOM 等,而非操作它们的语言,JavaScript 在这方面不算慢。
    4. **兼容性和生态问题**:跨平台兼容性需考虑,对前端众多功能特性的支持程度有限,相关生态不如传统 UI 开发语言成熟。
    5. **替代现有方案优势不足**:在 GUI 领域,已有 C++、QT 、Flutter 、Unity 、Godot 等成熟方案,Rust 替代它们的优势不明显;若要提升性能,重写 V8 引擎或浏览器内核更有意义,单纯用 Rust 制作 UI 意义不大。
    6. **存在“为了用 Rust 而用 Rust”的风险**:可能因过度追求技术而忽视实际需求和开发效率。

    ### 优点
    1. **安全性较好**:Rust 语言本身具有内存安全等特性,用其制作 UI 可能在安全性方面有优势。
    3. **存在相关库和工具**:如 Dioxus 、Yew 、Iced 等库,以及 Zed 开源的 GPUI 等,可用于 Rust 开发 UI ,且部分库(如即将发布 0.7 版本的 Dioxus )支持类似 React 的开发方式和热重载。
    4. **在特定场景有潜力**:对于车机等追求稳定性与速度的场景,有一定的探索价值;在 imgui 开发方面有一定优势,也可结合 webgl/webgpu+svg 或 webcomponent 实现特定效果。
    5. **跨平台潜力**:部分 Rust UI 库(如 Iced )专注注于跨平台开发,可能具备跨平台特性。
    43 条回复    2025-09-04 20:10:04 +08:00
    duanxianze
        1
    duanxianze  
       24 天前   ❤️ 9
    啊?魔怔了啊,现有的任何语言做 ui 都不会比 html css 更快
    chenxiaolani
        2
    chenxiaolani  
       24 天前
    有意义嘛,
    nkidgm
        3
    nkidgm  
       24 天前   ❤️ 1
    没意义,除非想统一技术栈,一门语言走天下。
    githmb
        4
    githmb  
       24 天前   ❤️ 1
    不会快,一般都是宏来生成 html ,但是现在 IDE 对宏的支持太差了,没有智能提示
    binhb
        5
    binhb  
       24 天前
    xFrye
        6
    xFrye  
       24 天前   ❤️ 3
    不会,不要为了 rust 而 rust
    skyworker
        7
    skyworker  
       24 天前   ❤️ 5
    手里只有一把锤子, 然后感觉所有的问题都是钉子
    musi
        8
    musi  
       24 天前
    rust 在浏览器上不是一等公民,所以你的 rust 代码最终会被转义成 HTML + CSS + JavaScript
    zhhcnn
        9
    zhhcnn  
       24 天前
    瓶颈在 dom 而不是操作 dom 的语言,js 真不算慢了
    QlanQ
        10
    QlanQ  
       24 天前
    平时觉得慢的地方,主要是 浏览器渲染 dom 慢吧
    jspatrick
        11
    jspatrick  
       24 天前
    你指的是开发快还是运行快?开发快还能快过 html css ?运行快似乎也不在乎这点。。。
    cwliang
        12
    cwliang  
       24 天前   ❤️ 1
    这是正经前端问的问题?
    kzfile
        13
    kzfile  
       24 天前
    我还以为是 gui,原来指的是 web 前端吗
    rb6221
        14
    rb6221  
       24 天前
    速度瓶颈不在 UI 库,在渲染层,甚至硬件层
    shui14
        15
    shui14  
       24 天前
    如果做 imgui ,值得。否则不比 html 有优势,除非你有特殊需求,另外 webgl/webgpu+svg 或者 webcompontent 也可以做 html 版的 imgui ,把那个 pdfjs 的 layout 移植过来就行,甚至在 react 还在 createclass 时代就有人这么干过,把 ios 的布局移植的,相当于实现了在 webgl2 上的 flex 。再早之前,有个 react-canvas ,你搜一下思路一样的。前几年流行的长 table ,某个库 canvas table 可以说就从这里来的。无非现在准备 rust 替代,这个成本就看值不值,技术上肯定是可行的,十年前创业浪潮就有过很多五花八门的,而且不少公司现在就在这么干
    mizuki9
        16
    mizuki9  
       24 天前   ❤️ 2
    用 rust 原生,要考虑跨平台兼容性,要考虑前端非常多的功能特性能支持多少,做到同样的特性需要的代码量是不是值得
    wangtian2020
        17
    wangtian2020  
       24 天前
    没有意义的快,leetcode 我能花 10 分钟写倒数 10%内存占用/倒数 10%CPU 使用 的答案,我就不会花 1 小时去写 前 10% 的答案
    hwdq0012
        18
    hwdq0012  
       24 天前
    gui 这块,win32 , android ndk, mac/ios object c , 哪个不是 c++,非要搞 rust
    frank42a
        19
    frank42a  
       24 天前   ❤️ 1
    作死
    bgm004
        20
    bgm004  
       24 天前
    啊?是我没看懂吗?不管你拿什么写,最后跑的不还是 html ,css ,js ?怎么个快法?
    ZZITE
        21
    ZZITE  
       24 天前
    webszy
        22
    webszy  
       24 天前
    你拿 rust 写一个游览器内核,然后只能渲染 rust 代码不就行了
    chiaf
        23
    chiaf  
       24 天前 via iPhone
    rust 写一个超过 V8 的引擎。有搞头。

    或者 rust 重写 V8 😁
    FlashEcho
        24
    FlashEcho  
       24 天前
    rust 也没法直接写 UI 啊,要硬写需要需要编译成 web components 之类的东西,性能会更差

    你看现在主流的 UI 库,对应多个框架,都是有多个版本的,就是为了借用框架本身的运行时提高性能,你直接不管这个了,肯定是不行的
    flyqie
        25
    flyqie  
       24 天前 via Android
    要想快的话建议 rust 重写 v8 ,不然用 rust 没有什么意义,也不会快
    yigefanqie
        26
    yigefanqie  
       24 天前
    建议用 rust 去写一个浏览器内核,就快了。
    irisdev
        27
    irisdev  
       24 天前
    这个问题跟之前在 v 站上看到的问题。“为什么前端不用 rpc 调用后端”有异曲同工之妙
    Goooooos
        28
    Goooooos  
       24 天前
    你说的是不是 tauri
    jujusama
        29
    jujusama  
       24 天前
    但凡有能用的 rust UI ,大概 zed 也不用从 0 写一个把
    iorilu
        30
    iorilu  
       24 天前
    你说的前端是指 web 端还是说图形界面 gui 那种
    lizy0329
        31
    lizy0329  
    OP
       24 天前
    我想看看,现在的车机 UI, 如果追求稳定性与速度, 是不是使用 rust 来制作 UI 比较靠谱点
    iorilu
        32
    iorilu  
       24 天前   ❤️ 1
    @lizy0329 车机好像不少是 QT 或者 flutter 做的
    daniel11
        33
    daniel11  
       24 天前   ❤️ 1
    可以看看 zed 开源的 GPUI ,长桥开源了一个 GPUI 的组件库 https://github.com/longbridge/gpui-component?tab=readme-ov-file , 看他们基于这个组件库做的 股票交易 客户端还行
    liuidetmks
        34
    liuidetmks  
       24 天前
    你肯定是鸡丁
    iliaoliao
        35
    iliaoliao  
       23 天前   ❤️ 1
    可以看看 dioxus 快要发布的 0.7 版本,和写 react 差不多,开发 native 的时候支持热重载。很强。
    labdum
        36
    labdum  
       23 天前
    webkit 和 blink 都是 c++写的吧。rust 也不会更快,顶多安全点。
    如果是机车 UI 也可以用 swift 吧,swift 现在也有在做嵌入式的开发。
    linkopeneyes
        37
    linkopeneyes  
       23 天前
    @iorilu #32 车机不是还有很多直接 unity 和 godot 的吗
    charlie21
        38
    charlie21  
       23 天前
    https://github.com/iced-rs/iced
    cross-platform GUI library for Rust focused on simplicity and type-safety
    Chuckle
        39
    Chuckle  
       22 天前
    期待 rustscript
    Ketteiron
        40
    Ketteiron  
       22 天前
    @Chuckle #39 我想象中的 rustscript 差不多长这样

    let a: Owned<string> = "hello"
    let b = a
    console.log(a) // 编译失败

    let c: Shared<string> = "world"
    let d = c
    console.log(c) // 编译成功

    const e = (s: &string) => {}
    const f = (s: &mut string) => {}

    // 异步生命周期
    async function g<'async>(data: &'async data) {}

    // 安全访问 dom 元素
    document.getElementById("h")?.with_mut(|el| el.textContent = "hello world")
    hez2010
        41
    hez2010  
       22 天前   ❤️ 1
    简单的 hello world 可以,但是但凡正经一点的 UI 用 rust 就是自找不痛快,包括游戏、GUI 都是同理。
    UI 的特性天生就是共享状态需要允许多方同时持有非只读引用,然而 Rust 不会允许你这么做,于是最后你不得不把整个 ECS 那套搬进 GUI 开发里,最后带来的反而是生产力下降。
    lizy0329
        42
    lizy0329  
    OP
       21 天前
    @hez2010 我找到了这篇文章 [Entity-Component-System architecture for UI in Rust]( https://raphlinus.github.io/personal/2018/05/08/ecs-ui.html)
    hez2010
        43
    hez2010  
       20 天前
    @lizy0329 是的,UI 开发里 ECS 在其它语言里都是可选项,而且有比 ECS 更直观和方便的做法;但是在 Rust 中 ECS 是必须项,没这玩意你写不出代码。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3196 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 10:55 · PVG 18:55 · LAX 03:55 · JFK 06:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.