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

2022-07-15 16:01:48 +08:00
 NueXini

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

我入门的编程语言有

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

Thanks for replying~

8662 次点击
所在节点    程序员
64 条回复
u823tg
2022-07-15 23:23:46 +08:00
@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
2022-07-15 23:26:49 +08:00
非常感谢大家的回复,我看推荐`Electron`和`Flutter`占据多数,其次是`Tauri`我会优先尝试他们两个,我虽然是游戏开发方向,但是偶尔也写写其他一些小工具,所以像 UE 和 Unity 也是我的必修课,会在往后的时间学习的
u823tg
2022-07-15 23:53:41 +08:00
@NueXini #42 你要是学 Unity 肯定学 c#, 建议 maui 、Avalonia 。
damowang777
2022-07-16 00:16:33 +08:00
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
2022-07-16 00:18:54 +08:00
游戏开发不应该折腾 SDL 、GLFW 、Godot 、Unity3D 这些吗。。。如果只是自己写一些小程序,imgui 就挺好的了
ysc3839
2022-07-16 00:43:13 +08:00
@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
2022-07-16 00:55:45 +08:00
快五十楼只有一个 imgui ...
ysc3839
2022-07-16 00:56:19 +08:00
@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
2022-07-16 01:06:01 +08:00
@ysc3839 #46 额,我感觉你连这两原理都没搞懂。

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

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

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

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

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

Electron ( nodejs->Electron api )

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


Tauri Electron 这两个是对标的啊。

建议你文档看不明白,试试 Tauri 和 Electron ,实际操作下。
klo424
2022-07-16 08:22:59 +08:00
c#.NET
newmlp
2022-07-16 10:57:57 +08:00
@pengtdyd 这话我上大学就听的耳朵生茧了,现在都工作 8 年了还干的好好的。。。。
zxCoder
2022-07-16 12:34:16 +08:00
tauri
chuhemiao
2022-07-16 13:17:32 +08:00
先学好 C++和 Rust 吧, 其它的慢慢实践.
Roojay
2022-07-16 13:39:00 +08:00
推 tauri 的别坑新手了,这个现在生态不完善,做起来费时费力
lightjiao
2022-07-16 14:10:00 +08:00
我都用 Unity 做跨平台客户端开发的
然后 C# 最近推出了跨平台的 MAUI 可以了解一下
最后,目前最强的桌面跨平台开发平台是 QT (性能和兼容性),要加上移动端的话似乎是 Flutter 或者 Electron 这种基于 web 的(我没了解过)?
Features
2022-07-16 15:33:00 +08:00
- 我精通各种跨平台框架
- Electron 还是 Flutter
- Uniapp
- 噗...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/866453

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX