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

#头条创作挑战赛#

导读

吐槽:桌面应用程序,虽然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

相关推荐

  • 四川首个餐饮垂直类B端应用 四川美食内参小程序发布(四川美食网站)

    封面新闻记者 韩建文 2023年开年,消费复苏餐饮业恢复明显,各地升腾“烟火气”。为促进县域川派餐饮发展,助推优秀县域级餐饮、农产品、调味品进一步品牌化、特色化、连锁化、资本化,打…

    科研百科 2023年4月11日
    66
  • 物料管理系统课程设计(物料管理流程系统)

    物料管理流程系统是一种用于管理物料采购、库存和配送的软件系统。在现代企业中,物料管理流程系统非常重要,可以帮助企业更好地控制成本、提高效率和减少库存损失。本文将介绍物料管理流程系统…

    科研百科 2024年9月1日
    16
  • 党建经费使用工作机制

    党建经费使用工作机制党建经费使用工作机制,由彼得·卡特科等专家组成。这个行业对国际互联网、互联网和媒体是特别好的辅助和服务,甚至超过一百万年,后来支持把他们引入互联网行业。但据研究…

    科研百科 2024年11月20日
    0
  • 企业党建如何做?珠海发布27条非公企业党建工作指引(非公企业 党建)

    日前,中共珠海市委非公有制经济组织和社会组织工作委员会出台《珠海市非公企业党建工作指引》(以下简称《指引》),从八大方面明确提出:把党建工作融入企业生产经营、人才培养、企业文化、社…

    科研百科 2023年2月26日
    192
  • 管理系统研发项目经理

    管理系统研发项目经理的简介 管理系统研发项目经理是一个负责管理、协调和指导整个管理系统开发项目的人员。他需要协调团队中的各个成员,确保项目按时、按质量完成,并满足客户的需求。 作为…

    科研百科 2025年1月1日
    0
  • 科研项目评奖打分细则

    科研项目评奖打分细则 随着科技的不断发展,科研项目评奖已经成为学术界的一个重要活动。为了公正、客观地评价科研项目,我们制定了以下科研项目评奖打分细则。 一、项目背景 1. 项目研究…

    科研百科 4小时前
    0
  • 项目管理什么

    项目管理在现代社会扮演着越来越重要的角色,无论是企业、政府还是个人,都需要进行项目管理。本文将探讨项目管理是什么,它的重要性以及如何进行有效的项目管理。 什么是项目管理? 项目管理…

    科研百科 2024年5月27日
    52
  • 进度计划 软件 管理

    进度计划软件管理的重要性 进度计划软件管理是现代企业管理者必须掌握的重要技能之一。通过使用进度计划软件,企业管理者可以更好地管理项目、团队和时间表,确保所有任务都能按时完成,并能够…

    科研百科 2024年8月22日
    23
  • 像积木一样构建产品组件

    像积木一样构建产品组件 积木是一种经典的儿童玩具,可以让人们想象自己是一个建筑师或工程师,用积木构建各种不同的结构和组件。今天,我们也可以使用类似的方法和工具来构建我们的产品组件。…

    科研百科 2024年10月8日
    11
  • 山东汽车轮胎自动化立体仓库项目(山东汽车轮胎自动化立体仓库项目招标)

    山东汽车轮胎自动化立体仓库项目—海胜智能 项目名称:山东汽车轮胎自动化立体仓库项目 合作项目:轮胎自动化立体仓库 项目地点:山东自动化立体仓库 项目时间:2022年9月8日 项目介…

    科研百科 2022年10月9日
    108