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

2022 年过一大半了 , 请问有什么跨平台开发框架推荐吗

  •  2
     
  •   NueXini · 142 天前 · 4970 次点击
    这是一个创建于 142 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我目前了解到的跨平台开发框架有

    • Electron
    • Flutter
    • Qt

    我入门的编程语言有

    • C
    • C++
    • Html5 + Css3 + JavaScript
    • shell
    • python

    目前大一在读,专业是游戏开发相关的, 自己也经常写点小程序,现在想学一些跨平台开发,请问有框架推荐嘛?

    Thanks for replying~

    63 条回复    2022-07-16 20:17:38 +08:00
    acidsweet
        1
    acidsweet  
       142 天前   ❤️ 1
    大一的学生好强鸭;
    结合你的技术栈,首推 Electron 了;
    结合你的年级,可以尝试一下 Flutter ,就当一乐呗;
    Qt 我想不到选择的理由;
    ysc3839
        2
    ysc3839  
       142 天前
    建议 Electron
    xygod
        3
    xygod  
       142 天前
    可以用 ue 做(逃
    NueXini
        4
    NueXini  
    OP
       142 天前
    @acidsweet 我看过同类似的跨平台开发框架推荐,都推荐的 electron,但是都说性能渣,内存占用大,我就没敢学
    janus77
        5
    janus77  
       142 天前
    看起来你不需要移动端。那就 electron 一把梭
    RockShake
        6
    RockShake  
       142 天前
    反正写个 Demo 也不需要多少时间,都尝试一下就知道优劣了,Electron 虽然性能渣,内存占用大,但是打包方便啊,只要网页写出来,应用程序基本也出来了
    timothyye
        7
    timothyye  
       142 天前
    最近比较活的应该是 Tauri ?
    https://tauri.app/

    打包出来的包比 Electron 小很多
    timothyye
        8
    timothyye  
       142 天前
    活 -> 火
    wangtian2020
        9
    wangtian2020  
       142 天前
    https://quasar.dev/
    quasar 全家桶。vite 毫秒级热更新开发体验,JavaScript 一把梭。electron 、web 、cordova webApp 全都有
    stevexu
        10
    stevexu  
       142 天前
    acidsweet
        11
    acidsweet  
       142 天前   ❤️ 1
    @NueXini 年轻多去试,没什么不敢的;再说这是目前最主流的方案,人家商业公司都敢,你哪不敢了
    HFX3389
        12
    HFX3389  
       142 天前
    直接上 electron 啊
    tanranran
        13
    tanranran  
       142 天前
    electron 没有之一
    flyqie
        14
    flyqie  
       142 天前 via Android
    PC 端,对性能 /占用 /兼容性没有过多要求的话选 electron ,否则 qt 。

    移动端,目前来看似乎 flutter 不错,小程序什么的有需求的话最好上 uniapp 这类的。
    icyalala
        15
    icyalala  
       142 天前
    目前来说,偏重移动端就 Flutter ,否则 Electron 。
    相对 Native 开发来说,上面方案在包体积、内存等性能指标上肯定差些,如果你非常在意那还是 Native 。
    dcsuibian
        16
    dcsuibian  
       142 天前
    ①游戏开发相关,性能要求高 ② 跨平台 ③个人学习
    这种情况能放心推荐 Flutter

    HTML 、CSS 、JS 确实是目前比较好的跨端方案,但写的一般就是增删改查应用。
    cyp0633
        17
    cyp0633  
       142 天前
    electron 毕竟省事点,上手了解一下也不亏
    luodaoyi
        18
    luodaoyi  
       142 天前
    跨平台?
    开发框架?

    boost
    ysc3839
        19
    ysc3839  
       142 天前
    @timothyye 个人觉得 Tauri 主要问题是要用 Rust 写后端,但是目前 Rust 各类库没有 Node.js 那么完善,写起来可能会遇到一些坑,甚至要自己造轮子。
    pengtdyd
        20
    pengtdyd  
       142 天前
    pc 已死,客户端技术没啥搞头
    musi
        21
    musi  
       142 天前
    移动端 flutter ,桌面端 Electron
    另外跨平台不是银弹,或多或少都有各种各样的问题,就看你能不能忍了
    southsala
        22
    southsala  
       142 天前
    flutter
    NoNewWorld
        23
    NoNewWorld  
       142 天前
    直接 flutter
    IGJacklove
        24
    IGJacklove  
       142 天前 via iPhone
    游戏开发搞这玩意干啥…
    cnhew
        25
    cnhew  
       142 天前
    Tauri 牛逼,我猜你们不知道这是个啥
    dssxzuxc
        26
    dssxzuxc  
       142 天前
    等你毕业了 tauri 发展好的话差不多也有岗位了
    kinboy
        27
    kinboy  
       142 天前 via Android
    @ysc3839 Tauri ,Electron 的替代品
    q474818917
        28
    q474818917  
       142 天前
    瞎折腾啥,谈谈恋爱,好好享受大学时光不好吗
    ysc3839
        29
    ysc3839  
       142 天前
    @kinboy 个人觉得 Tauri 主要问题是要用 Rust 写后端,但是目前 Rust 各类库没有 Node.js 那么完善,写起来可能会遇到一些坑,甚至要自己造轮子。
    zuosiruan
        30
    zuosiruan  
       142 天前 via iPhone
    现在大学都有游戏开发岗位了?
    iwdmb
        31
    iwdmb  
       142 天前
    flutter
    shoreywong
        32
    shoreywong  
       142 天前 via Android
    capacitor
    1more
        33
    1more  
       142 天前
    Tauri ,唯一的不便之处是需要 rust 生态支持,上手难度可能大一些
    duke807
        34
    duke807  
       142 天前 via Android
    wxWidgets 或 web page
    u823tg
        35
    u823tg  
       142 天前
    @ysc3839 #29 不是有 js api 么
    iloveios
        36
    iloveios  
       142 天前 via iPhone
    tarui 注定小眾 還是得 js 生態的東西
    beginor
        37
    beginor  
       142 天前 via Android
    游戏开发难道不考虑 unity3d
    ysc3839
        38
    ysc3839  
       141 天前 via Android
    @u823tg 但只是 js ,不是 Node.js
    424778940
        39
    424778940  
       141 天前
    游戏 还要跨平台 难道不应该先考虑 unity 么
    Qt 跨平台没问题 游戏就算了
    immerink
        40
    immerink  
       141 天前
    使用 Kotlin 一把梭的 JetBrains/compose-jb ;使用 golang+前端技术的 wailsapp/wails 。
    u823tg
        41
    u823tg  
       141 天前
    @ysc3839 #38 Node.js for running the CLI (deno and pure rust are on the roadmap)
    看下文档很难么。

    你还是没仔细看过,我两个都没用过但是看文档这两个区别是
    Interface Service Provider WRY Chromium
    Backend Binding Rust Node.js (ECMAScript)

    rust 为 wry 的后端,node.js 为 chromium 的后端。

    剩下代码用 node.js rust deno 都可以。 闲的蛋疼可以自己弄 python 。php ,对接下 rust 封装的后端就行
    NueXini
        42
    NueXini  
    OP
       141 天前
    非常感谢大家的回复,我看推荐`Electron`和`Flutter`占据多数,其次是`Tauri`我会优先尝试他们两个,我虽然是游戏开发方向,但是偶尔也写写其他一些小工具,所以像 UE 和 Unity 也是我的必修课,会在往后的时间学习的
    u823tg
        43
    u823tg  
       141 天前
    @NueXini #42 你要是学 Unity 肯定学 c#, 建议 maui 、Avalonia 。
    damowang777
        44
    damowang777  
       141 天前 via Android
    Electron/Tauri 并没有完全的跨平台,而是把 web app 打包成 desktop app (给 Windows, Linux 和 MacOS )。Web App 直接打包成 Desktop App 通常是比不上 Native App ,需要做很多修改。所以到最后你会有两个 codebase ,学习过程也较为复杂。如果有些特化需求,还得自己写插件。。。(所以要学 web 和 desktop 的沟通方式等等)

    Flutter 才是真正意义上的跨平台,但生态还在发展,虽然该有的都有,还有待完善。玩玩可以,不然每次更新都给你来个大改版。

    你既然都学 Unity 了,直接用 Xamarin 不香吗?最近新的.Net MAUI (跨平台)就是基于 Xamarin 的。

    其实上面几个大佬说的在理,客户端已死,大家都活在手机里了,Web 搞起来。按着脉络发展下去,再不久,手游都可以像原生环境,直接在 web 运行了。
    minami
        45
    minami  
       141 天前
    游戏开发不应该折腾 SDL 、GLFW 、Godot 、Unity3D 这些吗。。。如果只是自己写一些小程序,imgui 就挺好的了
    ysc3839
        46
    ysc3839  
       141 天前
    @u823tg 我看了文档呀,文档里 JavaScript / TypeScript 部分完全没提到 Node.js 好吧?里面的 API 全都是 Tauri 自己在 JS 基础上搞的,根本不是 Node.js 。https://tauri.app/v1/api/js/modules/app

    再者进行搜索也能找到一个 discussion:
    “Tauri doesn't use nodeJS for server stuff, in fact Tauri doesn't use a localhost server, you have to use Rust crates and redo your SQLite logic with the rust backend”
    https://github.com/tauri-apps/tauri/discussions/2592

    你说的这句话“Node.js for running the CLI”我在文档里也找不到,而且 CLI 也指的是生成 Tauri app 的命令行工具吧?不是指最终生成的 app 中的后端。

    至于你说“闲的蛋疼可以自己弄 python 。php ,对接下 rust 封装的后端就行”,那正好印证了我说的“目前 Rust 各类库没有 Node.js 那么完善,写起来可能会遇到一些坑,甚至要自己造轮子。”关键不是可不可行,而是没有现成的轮子,要用户自己去适配这些东西,那还不如直接用 Electron 呢。
    secondwtq
        47
    secondwtq  
       141 天前
    快五十楼只有一个 imgui ...
    ysc3839
        48
    ysc3839  
       141 天前
    @u823tg 我又去搜索了下,原来你提到的那几句话是在 README 中,官网 tauri.app 反而没有。
    去看 CLI 的 README 可以看到“Written in Typescript and packaged such that it can be used with npm, pnpm, and yarn, this library provides a node.js runner for common tasks when using Tauri, like yarn tauri dev.” https://github.com/tauri-apps/tauri/tree/dev/tooling/cli/node
    就只是个辅助脚本来的,根本不是 Electron 那样在 app 中用 Node.js 跑后端代码。
    u823tg
        49
    u823tg  
       141 天前
    @ysc3839 #46 额,我感觉你连这两原理都没搞懂。

    tauri 完全可以用 nodejs 的生态啊
    Electron 和 tauri 两个最根本的区别一个直接封装 chromium , 一个是把主流的浏览器内核做了个抽象层。 至于用啥语言没啥区别。
    别人说的是 Tauri 需要 rust 生态的意思是类似于 Electron 之于 nodejs 的 c++插件
    ysc3839
        50
    ysc3839  
       141 天前
    @u823tg
    “tauri 完全可以用 nodejs 的生态啊”
    那你说说现在怎么用?该不会是理论上可行,只是没人实现吧?
    我说的问题就是没人实现,所以目前要用 Tauri 就必须会写 Rust ,但是目前 Rust 各类库没有 Node.js 那么完善,写起来可能会遇到一些坑,甚至要自己造轮子。还有学习新语言成本的问题。

    在我看来 Electron 和 Tauri 最根本的区别是后端语言的区别,Electron 能火很大程度上是因为后端语言是 Node.js ,搞前端开发的人简单学习就能上手。在 Electron 之前的 node-webkit 用的就比较多了,曾经很火的代码编辑器 Brackets 也是选择 CEF+Node.js 。同期用 CEF 配合 C++方案的应用则非常少,目前我只知道网易云音乐和 Spotify 仍在持续开发。
    u823tg
        51
    u823tg  
       141 天前
    @ysc3839 #48 好我的大哥啊,给你说了后端语言用啥没关系。 上面再封装一层就可以了。人家也封装了 js api
    最主要是你写的代码通过后端语言封装和界面去通信。

    或者你可以去 github 搜搜肯定有用 Tauri 写的开源 app

    Tauri 这玩意真除了界面,其他都得 rust 。 这就成了 rust 社区一个玩具。没必要对标 Electron 。它不配
    ysc3839
        52
    ysc3839  
       141 天前
    @u823tg
    “给你说了后端语言用啥没关系”
    问题是搞开发的人有关系,这就是我说的问题,需要用 Rust 写后端,那就得学习 Rust ,而且 Rust 本身的生态可能也不一定好,最终要实现某些功能可能没有现成的代码,还得自己造轮子。
    感觉你一直再强调技术上可行,我当然知道技术上可行,但是实际开发还得看成本的。“最主要是你写的代码通过后端语言封装和界面去通信”,那你说说为啥用 CEF 配合 C++方案的应用那么少?
    u823tg
        53
    u823tg  
       141 天前
    @ysc3839 #52 https://juejin.cn/post/7110842588852125710 自己去搜下这种教程。或者自己实际操作下。

    都没用过,我大概搜了 CEF 只对 Chromium 做了精简和封装。提供最基本的。

    Electron ( nodejs->Electron api )

    cef (就提供了 JavaScript 和 C++互操作) 好多工作得开发者做。 你完全可以自己封装出来 Electron api 类似的,只不过绝大多数人没能力而已


    Tauri Electron 这两个是对标的啊。

    建议你文档看不明白,试试 Tauri 和 Electron ,实际操作下。
    klo424
        54
    klo424  
       141 天前
    c#.NET
    newmlp
        55
    newmlp  
       141 天前
    @pengtdyd 这话我上大学就听的耳朵生茧了,现在都工作 8 年了还干的好好的。。。。
    zxCoder
        56
    zxCoder  
       141 天前
    tauri
    chuhemiao
        57
    chuhemiao  
       141 天前
    先学好 C++和 Rust 吧, 其它的慢慢实践.
    Roojay
        58
    Roojay  
       141 天前 via Android
    推 tauri 的别坑新手了,这个现在生态不完善,做起来费时费力
    lightjiao
        59
    lightjiao  
       141 天前
    我都用 Unity 做跨平台客户端开发的
    然后 C# 最近推出了跨平台的 MAUI 可以了解一下
    最后,目前最强的桌面跨平台开发平台是 QT (性能和兼容性),要加上移动端的话似乎是 Flutter 或者 Electron 这种基于 web 的(我没了解过)?
    Features
        60
    Features  
       141 天前
    - 我精通各种跨平台框架
    - Electron 还是 Flutter
    - Uniapp
    - 噗...
    tairan2006
        61
    tairan2006  
       141 天前
    Qt > Flutter > Electron
    nicevar
        62
    nicevar  
       141 天前
    真正想要做东西肯定是 Qt ,想要自己爽就 Electron ,把痛苦留给用户,Electron 只要是 c++/rust 有相应能用的软件,肯定就直接删除了,之前用 Electron 给一个软件做了个外壳,安装后 490M ,modules 就到 300M 。
    FrankHB
        63
    FrankHB  
       141 天前
    要是实际项目,如果甲方有意见,你没本事洗甲方爸爸脑子,那就该用啥用啥,要么跑路撂担子。

    自己玩倒是随便。反正知道这些东西的缺陷也都要轮一遍。(除了你已经知道的性能问题。)但是不建议没项目需求就浪费时间在具体一种上。
    需要提醒的是,这里没给出项目背景就随便推荐的理由(什么生态……)多数不上道,你得多长点心眼。特别是不要遗漏不会对你的长期发展有好处,反而会锁死技术栈的风险。

    其实有些重要问题不需要多熟练就能看出来,特别是你已经有很多不同基础技术打底的情况下。
    比如性能问题……为什么会有?

    嗯,很好,正好有人推荐 Flutter……就顺带有部分答案了。
    https://github.com/dart-lang/language/issues/490
    (1/1)

    另外 imgui 这种画网页不鸟 DOM 一样不鸟 WIMP metophor 的 GUI 之耻就算没人提我也要比 Flutter 多黑一下的。当然,我不反对观摩一下所谓 immediate mode 的实现,这样才能理解它们如何拉胯。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2937 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 58ms · UTC 14:42 · PVG 22:42 · LAX 06:42 · JFK 09:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.