V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Angela2022
V2EX  ›  程序员

+++有啥 APP 开发框架既可以用 CSS/JS 开发 UI, 又可以用 C++/WIN32 API 等操控底层系统功能+++

  •  1
     
  •   Angela2022 · 2023-10-16 13:50:45 +08:00 · 2838 次点击
    这是一个创建于 409 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有啥 APP 开发框架既可以用 CSS/JS 开发 UI 又可以用 C++/WIN32 API 等操控底层系统功能。

    目前试了 Electron , 很难操控钩子函数,文件系统等底层系统功能

    还试了 WPF 、winform, 感觉写 UI 比 CSS 、JS 等麻烦多了。

    请问有没有一个开发框架能 UI 和底层通吃的。

    谢谢
    31 条回复    2024-07-21 14:20:12 +08:00
    kkk9
        1
    kkk9  
       2023-10-16 13:54:26 +08:00
    MAUI
    Chefback
        2
    Chefback  
       2023-10-16 13:56:04 +08:00
    前端框架配合 wasm
    Jamy
        3
    Jamy  
       2023-10-16 13:59:31 +08:00
    老古董 MFC/ATL 搭个 webview
    hez2010
        4
    hez2010  
       2023-10-16 14:12:10 +08:00
    试试 Avalonia ( https://github.com/AvaloniaUI/Avalonia )?
    如果需要 WinUI 3 风格的话可以配合 FluentAvalonia ( https://github.com/amwx/FluentAvalonia) 使用。
    如果不想写 XAML 的话可以配合 Avalonia.Markup.Declarative ( https://github.com/AvaloniaUI/Avalonia.Markup.Declarative) 使用。
    yuyoung
        6
    yuyoung  
       2023-10-16 14:18:51 +08:00
    wails
    jones2000
        7
    jones2000  
       2023-10-16 14:20:49 +08:00
    CEF
    pengtdyd
        8
    pengtdyd  
       2023-10-16 14:39:48 +08:00
    tauri
    auroraccc
        9
    auroraccc  
       2023-10-16 14:41:33 +08:00
    tauri
    hronro
        10
    hronro  
       2023-10-16 14:44:55 +08:00
    @Chefback 配合 WASM 纯属胡言乱语吧
    mightybruce
        11
    mightybruce  
       2023-10-16 14:46:53 +08:00
    这个肯定是 QT 啊,QT stylesheet 支持 css.
    QWebView , 用 QT 不影响用 Win32 API , 其他 wasm 是不能直接和 win32 交互的。要通过 wasi
    tool2d
        12
    tool2d  
       2023-10-16 15:19:27 +08:00
    Electron 可以的,我自己测试下来没问题,需要自己用 napi.h 写一套中间层调用 win32 api 。

    electron 是兼容 nodejs 的,要用 nodejs 的插件来开发。
    Moyyyyyyyyyyye
        13
    Moyyyyyyyyyyye  
       2023-10-16 15:21:11 +08:00
    Electron 直接加 c++ addon 不就是了嘛,想怎么写都行
    tonystarkgz3
        14
    tonystarkgz3  
       2023-10-16 15:28:03 +08:00
    推荐 wails https://wails.io/
    tinybug
        15
    tinybug  
       2023-10-16 16:00:54 +08:00
    Electron + 命令行
    shanhuse
        17
    shanhuse  
       2023-10-16 16:33:01 +08:00
    Electron+Node-API.(C++)
    Node-API (以前称为 N-API )是用于构建本地插件的 API 。它独立于底层的 JavaScript 运行时(例如 V8 ),并作为 Node.js 本身的一部分进行维护。这个 API 将在 Node.js 的各个版本中都保持应用程序二进制接口( ABI )的稳定性。它旨在使插件与底层的 JavaScript 引擎的变化隔离开来,并允许在后续的 Node.js 主要版本上无需重新编译即可运行为一个主要版本编译的模块。ABI 稳定性指南提供了更详细的解释。
    https://nodejs.org/api/n-api.html#node-api
    w07128597
        18
    w07128597  
       2023-10-16 16:39:14 +08:00 via iPhone
    react for windows
    微软自己维护的
    c2const
        19
    c2const  
       2023-10-16 16:54:00 +08:00
    都已经熟悉 js 和 Electron 了,那把系统层的代码写成 dll ,上层调用就行了吧 :)
    mightybruce
        20
    mightybruce  
       2023-10-16 17:39:53 +08:00
    大公司像 spotify 使用的 C++ CEF (Chromium Embedded Framework) 来将 html css js 渲染为界面和逻辑
    可以参考这个
    https://github.com/paulocoutinhox/cef-sample
    mightybruce
        21
    mightybruce  
       2023-10-16 17:44:48 +08:00
    网易开源了一个对 CEF 的封装的开发框架
    NIM Duilib
    https://github.com/netease-im/NIM_Duilib_Framework/tree/master
    Kirscheis
        22
    Kirscheis  
       2023-10-16 17:54:24 +08:00
    多窗口行业应用一把梭那就 Qt ,简单的单页 app 可以试试 tauri 。
    beyondex
        23
    beyondex  
       2023-10-16 18:02:53 +08:00
    blazor desktop 可以兼顾。
    blazor 可以写 html ,css ,逻辑用 c#写,调用 c 可以用 cppsharp 自动把 c api 翻译成 c# wrapper ,然后调就是了。
    ysc3839
        24
    ysc3839  
       2023-10-16 18:19:47 +08:00 via Android
    Electron 的话写个 Node.js 模块就能实现了。
    实在不想走 Node.js 绕一圈的话,选一个语言 (如 C++) 搭配各类 WebView (如 CEF 或 Edge WebView2) 即可。
    encro
        25
    encro  
       2023-10-16 18:25:52 +08:00
    @mightybruce

    就 qml 那货比起 mvvm 模式来还是差太多。。。。
    ashong
        26
    ashong  
       2023-10-16 18:29:02 +08:00 via iPhone
    cef + js
    kirory
        27
    kirory  
       2023-10-17 00:07:43 +08:00
    httplib + openurl localhost:xxxx
    minami
        28
    minami  
       2023-10-17 09:40:53 +08:00
    sciter
    hupeng
        29
    hupeng  
       2023-10-17 09:49:00 +08:00
    王者荣耀就是这么干的
    mainjzb
        30
    mainjzb  
       2023-10-17 10:36:59 +08:00
    这个典型的 tauri 。。。rust 操作底层是和 C++唯二的选择
    ko1haha
        31
    ko1haha  
       130 天前
    不懂,electron 的 node 原生模块不就是二进制的 dll 么?

    qt 。。老古董都出来了,就 css 擦点边,学习难度呢,使用难度呢,并没有比 electron 省心。

    ---

    其实开个本地服务端口就完了

    ,前端之久在浏览器中跑,有什么不可以的?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3332 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 11:59 · PVG 19:59 · LAX 03:59 · JFK 06:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.