独立开发者都用什么框架开发客户端产品(PC客户端篇)

乐活   2024-09-09 16:38   四川  


我的个人博客:www.moonkite.cn

大家好,我是风筝

最近独立开发关注的比较多,发现在独立开发这个领域里,技术门槛最高的应该就是客户端了,比起客户端来,网页、小程序、浏览器插件就相对来说简单一点儿了。

为什么这么说呢,因为不管是前端开发还是后端开发,多多少少都会一点儿 HTML + JavaScript,而且做完之后发布出来也相对简单。

那PC客户端来说,如果你要做一个客户端,往往会区分不同平台,比如Mac 和 Windows。就算不考虑跨平台,如果你是要做MacOS 客户端,要学习 Objective-C 或者 Swift ,已经客户端 SDK,如果要做 Windows 客户端,还要学 C# 和 Windows 下的SDK。都学会了,还要考虑将应用打包,如果是Mac系统,还要花钱发布到应用商店。这门槛一下就起来了。

还好,现在有不少支持跨平台框架,写一次代码,支持多个平台,有的就直接是web前端技术那一套,降低不少门槛。

今天就来看看有哪些PC桌面端开发框架。

原生开发框架

MacOS

如果你要开发一个 MacOS 原生应用,现在可选两种语言,一个是 Objective-C 和 Swift,每个语言都有其对应的 SDK,当然SDK是可以混用的,现在官方主推 SwiftUI。

拿 Swift 来说,一个有经验的开发者,学习这门语言可能一两天就够了,但是学习使用它的 SDK,恐怕一两个月都不够。

以前没有太多选择,只要想做 MacOS 应用,很多公司都会专门设置一个岗位,然后给配置上 Mac 电脑,绝对是让人羡慕的岗位。

使用原生开发的优势也很明显,能够充分利用 macOS 的特性,提供最佳的用户体验和系统性能。

有很多产品最开始用跨平台技术做的产品,等到用户量大起来之后,有钱了,还是会选择用原生技术重写,就是为了保证最优的性能和最好的用户体验。

哦,对了,其实 Swift 也能开发 Windows 桌面应用的。

Windows 原生

Windows 原生应用的数量肯定是超过 MacOS 应用数量的,因为 Windows 系统的市场占有率高,有很多应用只做 Windows 版本,就是因为用的人多。

我和 Windows 还是有一点渊源的,因为刚工作的时候是做 C# 开发的,虽然主要是做 .NET,Web 为主,但是客户端也没少做。

到现在为止,我仍然认为不管是用 WinForms、WPF 还是最新的 WinUI,拖拖拽拽就可以画一个界面出来。

所以我们那个时候,如果想做一个公用的工具,不是写个web发布出来,而是写个客户端,每个人发一份exe文件,直接打开客户端用。

Windows 客户端开发经历了 WinForms、WPF、WinUI 这几个阶段,但是不是替代关系啊,虽然 WinUI 是官方最新推荐的,但是WinForms、WPF仍然是可以用的。

和Mac原生开发一样,使用Windows 原生就能拥有原汁原味的 Windows 体验。

微软还有一个叫做 MAUI 的跨平台,支持在 Windows、macOS、iOS、Android和Web应用程序上运行

跨平台开发框架

就是因为原生开发的成本太高。

对个人来说就是学习成本,开发一个应用,要学习两种完全不同的技术。

对于公司来说是经济成本,开发一个应用要为每个端配置一个开发人员。

所以为了解决上述问题,就有一些跨平台框架被开发和使用了,一次编码就能在多个操作系统上运行。

Qt

Qt 是一个成熟的跨平台应用程序开发框架,主要使用 C++ 语言,这应该是最早的一批款平台开发框架中的佼佼者了。

QT 有他自己的一个专用设计器叫做 Qt Design Studio ,你可以使用它方便的拖动元素构建页面,但是逻辑还是需要你用 C++来写的,门槛是有一点高的。

它的有点就是性能优秀,接近原生应用,并且有丰富的 UI 控件和工具,而且支持多种编程语言绑定(如 Python、Ruby)。

说到支持多种语言,我之前(2014年)就用过 PyQT 做过一点东西,一个简易音乐下载工具。实话说,体验不是很好,要写一堆代码,还要根据 QT 的规则写类似于CSS的样式。题外话,就在2014年,当时打算找Python 相关工作,面试时,面试官只跟我聊了一会儿这个工具,其他一概没问,回家路上刚下地铁就收到 Offer 短信和邮件,工资还涨了不少,不过后来被我放了鸽子,哈哈。

有很多工业软件都是用 QT 写的,比如什么机床控制软件、车载系统之类的。

JavaFX

JavaFX 是 Java 平台的 GUI 工具包,同样用于开发跨平台的桌面应用,即使作为 Java 开发者,也有大部分人完全没听说过这个东西,因为做 Java 基本都是 Web 相关的。

但是,相信在座的后端开发者几乎每天都在用 JavaFx 编写的软件工作,那就是著名的 JetBrains IDE 系列,JetBrains 全家桶中绝大部分都是用 JavaFX 开发的。

它的一个特点就是打出的应用包大,而且内存占用高。

Electron

Electron 是由 GitHub 开发的开源框架,它允许开发者使用 Web 技术(HTML, CSS, JavaScript)来创建跨平台的桌面应用。

Electron 是这两年比较火的框架了,就是因为前端开发者使用它几乎完全没有任何附加成本,属于拿起来就能写的程度。

VsCode 就是用Electron 写的,并且里面的插件也是用Electron的规则来写,我之前写过 VsCode 插件,完全感觉不出来在写客户端,因为实际上就是在写web。

除此之外  Atom、Discord 也是用 Electron 写的,最新版的 QQ 也是用 Electron 重写的。

尤其在独立开发者中,很多人都选择用  Electron 来写,无论是 Web 、H5还是客户端直接一把梭,节省不少时间和精力。

它的最大缺点就是应用体积巨大,比如原生开发几兆就能解决的事儿,用 Electron 可能就上百兆了。另外一个就是资源消耗较高。

Tauri

Tauri 是和Electron属于同一类的跨平台框架,开发者只要会前端技术就可以了。

既然和Electron类似,而且Electron都那么成熟了,为什么还会有 Tauri 呢。

Tauri 最大的一个优势就是打出的包小,而且性能好。因为 Tauri 的后端用的是 Rust,Rust 主打一个安全姓高且性能好嘛。所以,很多人基于这个特性,选择用 Tauri ,毕竟同样的功能,一个打出的包10M,一个打出的包100M,还是区别很大的。

但是,Tauri 由于比较新,所以使用过程中,相对于 Electron 来说,坑会多一点。

其他的

其他的例如 React Native 和 Flutter 也支持PC客户端了,但是,这两个主要的优势在于移动端。

最后

选择哪种方案是一个平衡艺术,主要看你的侧重在哪儿了。

拿独立开发者来说,有的开发者只做 MacOS 单平台,不做 Windows 端,那使用 SwiftUI 能获得更好的体验,自然就选择原生。

有的开发者就要做跨平台,当然最好的方式就是使用跨平台框架了,在跨平台框架中选择一个自己最熟悉的技术栈就好了。

还可以看看风筝往期文章

「差生文具多系列」Jetbrains IDEs中也能养宠物了,而且还有拳皇人物

「差生文具多系列」最好看的编程字体

我患上了空指针后遗症

一千个微服务之死

搭建静态网站竟然有这么多方案,而且还如此简单

被人说 Lambda 代码像屎山,那是没用下面这三个方法

古时的风筝,一个程序员,一个写作者。



古时的风筝
努力成为独立开发者的程序员,分享我了解的关于编程、独立开发等知识,知不不言,言无不尽
 最新文章