关于跨平台桌面端应用程序开发的趋势(关于跨平台桌面端应用程序开发的趋势有哪些)

#头条创作挑战赛#

导读

吐槽:桌面应用程序,虽然C 需求还是很大,但是太需要积累了,初级程序员能干的越来越少;高money岗位 ZhaoP APP 搜一下基本都集中在游戏或服务器后台开发。

关于跨平台桌面端应用程序开发的趋势(关于跨平台桌面端应用程序开发的趋势有哪些)

Electron

1、桌面应用程序

桌面应用程序,又称为 GUI 程序(Graphical User Interface),但是和 GUI 程序也有一些区别。桌面应用程序 将 GUI 程序从 GUI 具体为“桌面”,使冷冰冰的像块木头一样的电脑概念更具有 人性化,更生动和富有活力。

我们电脑上使用的各种客户端程序都属于桌面应用程序,近年来WEB和移动端的兴起让桌面程序渐渐暗淡,但是在某些日常功能或者行业应用中桌面应用程序仍然是必不可少的。传统的桌面应用开发方式,一般是下面两种:

1.1 原生开发

直接将语言编译成可执行文件,直接调用系统API,完成 UI 绘制等。这类开发技术,有着较高的运行效率,但一般来说,开发速度较慢,技术要求较高,例如:

  • 使用C / MFC开发Windows应用
  • 使用Objective-C开发MAC应用
  • 使用C / QT开发跨平台应用

纯C 开发的客户端典型的就是基于QT开发,C 程序员一般会选择,而在工控嵌入式领域,基本就是唯一的选择。 由于QT已经发展了很多年(QT6已经出来了,但目前市场上主要还是使用QT5),内部各种基础库、UI控件都比较完善,也支持类似前端的CSS样式控制,相对MFC来说,总体开发算是比较方便的。当然,如果不需要跨平台,只希望在Windows上运行的话,那除了MFC,也可以选择WPF去开发,但其需要使用C#语言,适合熟悉.Net开发技术的程序员。

关于跨平台桌面端应用程序开发的趋势(关于跨平台桌面端应用程序开发的趋势有哪些)

Qt

1.2 托管平台

一开始就有本地开发和 UI 开发。一次编译后,得到中间文件,通过平台或虚机完成二次加载编译或解释运行。运行效率低于原生编译,但平台优化后,其效率也是比较可观的。就开发速度方面,比原生编译技术要快一些。例如:

  • 使用C# / .NET Framework(只能开发Windows应用)
  • JAVA / Swing

关于跨平台桌面端应用程序开发的趋势(关于跨平台桌面端应用程序开发的趋势有哪些)

C#

不过,上面两种对前端开发人员太不友好了,基本是前端人员不会设计的领域,但是在这个大前端 的时代,前端开发者正在想方设法涉足各个领域,使用WEB技术开发客户端的方式横空出世。

关于跨平台桌面端应用程序开发的趋势(关于跨平台桌面端应用程序开发的趋势有哪些)

JAVA

1.3 WEB 开发

使用WEB技术进行开发,利用浏览器引擎完成UI渲染,利用Node.js实现服务器端JS编程并可以调用系统API,可以把它想像成一个套了一个客户端外壳的WEB应用。在界面上,WEB的强大生态为UI带来了无限可能,并且开发、维护成本相对较低,有WEB开发经验的前端开发者很容易上手进行开发。着重介绍使用WEB技术开发客户端程序的技术之一electron。

1.4 前端Web和C 混合开

前端Web和C 混合开发的客户端目前主流的是基于Electron和C ,开发UI界面和逻辑可以使用H5、NodeJS去实现,底层核心的模块可以通过C 来开发,封装为Node模块供上层调用。 当然,也可以选择使用多进程架构,UI部分使用Electron开发,而核心功能在后台进程中运行,两者之间通过WebSocket进行通信,实现整体应用功能。

近几年来,WebAssembly技术发展的也比较快,这也是支持通过C /Rust开发核心模块,可以直接将编译生成的wasm模块集成到前端页面中调用的一种技术,虽然目前没有大规模应用,但也是一个值得关注的技术,主流的浏览器都已经支持这项技术。要说明的是,QT5也支持类似的混合开发技术,即QML技术,相对于传统基于Widget开发而言,对硬件配置要求会高些,大部分的嵌入式平台应该是不支持的。

关于跨平台桌面端应用程序开发的趋势(关于跨平台桌面端应用程序开发的趋势有哪些)

WebAssembly

二、为什么用Electron

以Windows平台为例,大部分人会首先想到使用QT(C ),WPF(C#) 等语言去开发桌面端应用。不可否认的是,这些已经是非常成熟的开发方案了。但是,我们来看下如下两种场景:

关于跨平台桌面端应用程序开发的趋势(关于跨平台桌面端应用程序开发的趋势有哪些)

Electron

1. 公司要做个全新的APP,但是技术人员构成大部分都是前端开发

2. 公司原本就有在线的web应用,但是想包个壳能在桌面直接打开,同时增加一些与系统交互的功能;

对于第一种场景,团队中开发人员对于C 和C#并不熟悉,虽然可以现学,但是整个项目的技术管理和项目管理就会变得不可控;对于第二种场景,对于应用的业务逻辑要求并不多,只是套一个具有浏览器的运行环境,单独为此配置一个C 、C#开发人员划不来。

对于这两种情况,如果现有的前端开发人员能直接搞定,那就非常完美了:Electron的诞生提供了这种可能性。它可以帮助前端开发者在不需要学习其他语言和技能的前提下,快速开发跨平台的桌面应用。

Electron是由GitHub开发,用HTML,CSS和JavaScript来构建跨平台桌面应用程序的一个开源库。 Electron通过将Chromium和Node.js合并到同一个运行时环境中,并将其打包为Mac,Windows和Linux系统下的应用来实现这一目的。https://www.electronjs.org/docs

2.1 使用 Electron 开发的理由

  • 使用具有强大生态的<code>Web</code>技术进行开发,开发成本低,可扩展性强,更炫酷的UI;
  • 跨平台,一套代码可打包为Windows、Linux、Mac三套软件,且编译快速;
  • 可直接在现有<code>Web</code>应用上进行扩展,提供浏览器不具备的能力;
  • 你是一个前端;

当然,我们也要认清它的缺点:性能比原生桌面应用要低,最终打包后的安装包和其他文件都比较大。

2.2 开发体验

  • 兼容性

虽然你还在用WEB技术进行开发,但是你不用再考虑兼容性问题了,你只需要关心你当前使用Electron的版本对应Chrome的版本,一般情况下它已经足够新来让你使用最新的API和语法了,你还可以手动升级Chrome版本。同样的,你也不用考虑不同浏览器带了的样式和代码兼容问题。

  • Node 环境

这可能是很多前端开发者曾经梦想过的功能,在WEB界面中使用Node.js提供的强大API,这意味着你在WEB页面直接可以操作文件,调用系统API,甚至操作数据库。当然,除了完整的Node API,你还可以使用额外的几十万个npm模块。

  • 跨域

你可以直接使用Node提供的request模块进行网络请求,这意味着你无需再被跨域所困扰。

  • 强大的扩展性

借助node-ffi为应用程序提供强大的扩展性。

2.3 谁在用 Electron

现在市面上已经有非常多的应用在使用electron进行开发了,包括我们熟悉的VS Code客户端、GitHub客户端、Atom客户端等等。印象很深的,去年迅雷在发布迅雷 X10.1时的文案:

从迅雷 X 10.1 版本开始,我们采用 Electron 软件框架完全重写了迅雷主界面。使用新框架的迅雷 X 可以完美支持 2K、4K 等高清显示屏,界面中的文字渲染也更加清晰锐利。从技术层面来说,新框架的界面绘制、事件处理等方面比老框架更加灵活高效,因此界面的流畅度也显著优于老框架的迅雷。至于具体提升有多大?您一试便知。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023年5月17日 下午2:04
下一篇 2023年5月17日 下午2:20

相关推荐