跨平台桌面开发,electron还是webview2(中篇)

author author     2023-03-05     543

关键词:

参考技术A

这一周继续聊跨平台桌面开发这个事情。

在这篇文章中,我暂时会放下Electron与WebView2的一个对比,而聊一聊跨平台这个对于程序员群体来说不陌生的词。

一个趋势是:跨平台开发几乎是在各个技术方向都会持续发展的

跨平台这个词,对于程序员来说,应该是不陌生的。因为这个概念不只在某一端存在,后端,前端,移动端,桌面端几乎所有方向都对跨平台有需求。

在后端,Java是跨平台的,当你用Java来编写后端服务时,并不需要考虑操作系统,因为它几乎支持主流的操作系统。现在,编写一个后端服务,选用Java仍是主流。虽然可能它的跨平台特性已经不是程序员最在意的点了。

而在移动端,类似React Native,Flutter也是非常有名的跨平台移动开发,它们与移动原生开发方式之间一直是竞争与共存。

而前端因为依托于浏览器,天然就是跨平台的。事实上,很多应用或服务早期纷纷选择从原生应用迁移至前端WEB方式的一个非常重要的原因就在于它是跨平台的。

桌面操作系统很长一段时间一直是Windows一家独大,所以桌面开发一直是Windows独占,直至现在为止,很多专业级的软件仍然是Windows独占的。

而Linux桌面操作系统与MacOS桌面操作系统,早些年几乎可以忽略不计,压根不需要考虑这两种系统。但随着近些年它们的慢慢流行,特别是苹果的MacOS的以其杰出的工艺,流畅的体验,叠加苹果手机的流行,其市场份额增长非常之快,在特定的诸如编程,设计等行业人群中使用范围较广,这使得开发支持MacOS系统这个点变得越来越重要。

所以,在桌面开发领域,跨平台的需求也越来越高。

这也是Electron及早期的NW.js能迅速发展起来并得到非常广应用的原因所在。

无论是哪一端,跨平台技术之所以频繁出现与不断发展,其根本原因就在于编程的一个重要痛点在于:

为了让同一个服务能在所有设备上运行,程序员不得不编写与维护非常多不同版本的程序

每一个程序或软件后面的服务,都有一个非常迫切的需求,就是期望它的用户无论何时,无论何地,无论使用任何设备,都能方便友好的使用这个服务。

也是因为这个原因,Web发展起来了,因为Web的优势就在这,只要你的设备上有浏览器,就能访问。

但Web毕竟性能有限,且浏览器这种形式并不利于用户忠诚度的培养,它存在天然的弱点。一些简单的操作服务使用Web并无问题,但稍微有点要求的,Web可能就并不是非常适合。

所以,一种趋势不可避免地流行起来:

对不同设备或系统进行抽象,基于某一种特定的编程语言,编写出能与原生程序相媲美的,又能跨平台的技术便层出不穷了

对吧,Java是使用JVM来抽象不同的操作系统,React Native则是使用虚拟DOM以及转换成原生控件的方式来实现跨平台,而Electron则是通过性能较好的Chrome内核+NodeJS原生调用能力的搭配来实现跨平台桌面开发。

总而言之,这种跨平台的技术不会消亡,只会有新的技术层出不穷,而它们与原生开发一定是相互竞争,配合与共存的。相互之间无法取代。

那再回到跨平台技术上来说,一个良好的跨平台开发的技术或框架,重点是什么。

或者换种方式说,哪些特性使得它更易于流行起来?

我个人认为有以下的几个点:

跨平台开发技术能不能流行起来的一个非常重要的点就在于,使用了什么样的编程语言。

以移动端跨平台开发技术来说明,一个React Native,一个Flutter,这两个是比较知名主流的跨平台移动开发技术。React Native使用的是前端React技术,而Flutter则是Google的D语言。

显而易见的是,虽然Flutter是使用skia引擎在底层重绘一套UI,其性能相比React Native这种模式更佳,但React Native更易于被接受。

在流行度上,React Native始终比Flutter更流行,一个最重要的原因也在于:

使用已熟知的前端编程语言,比起重新学习一个D语言更易于被接受,维护成本更可控。

这个问题在跨平台桌面开发中也是类似,跨平台桌面开发技术也不是Electron最开始出现,比如著名的QT很早就有了,但比起Electron这种使用前端编程技术来说,显然在编程语言的门槛上和程序员群体上都存在困难,这也是Electron能后来居上的原因所在。

因为,大多数程序员群体,相比较另外学习一门什么语言去做什么,使用自己熟悉的语言来做什么是更容易,意愿也更高。

而从公司或团队的考量上看,选择偏门的小众语言存在成本上的顾虑,比如人员招聘是否容易?

跨平台技术在尝试解决不同平台不一致,它或多或少会损耗性能。这也决定了几乎没有任何一个跨平台技术能取代原生开发。

这是一个取舍的问题,对于一个程序来说,究竟性能有多重要。对于比较看重性能的程序来说,原生开发可能是最优选择。

但跨平台的性能损耗也有高低之分,并不在同一水平线上。

其实,无论是Electron,或是WebView2,都是基于浏览器内核+前端技术的跨平台桌面解决方案,这也是为什么要把它们放在一起聊的原因。

Electron是先行者(当然,严格说来,NW.js出现的更早,但今天它的流行度已远远落后于Electron了),而WebView2则是后来者。

那做为后来者的WebView2究竟做了哪些改进?它又有多大的能力来挑战Electron呢?

下一篇,继续聊。

electron跨平台桌面级应用开发框架

参考技术A上次我们提到了业界大名鼎鼎的Qt桌面级应用开发框架,不过Qt是基于c++进行开发的,c++的开发模式也并不是十分适用于现代这种短平快的软件开发模式,相比之下,electron是基于nodejs和Chromium使用javascript,html和css来开... 查看详情

im跨平台技术学习:得物基于electron开发客服im桌面端的技术实践

...文章本文是系列文章中的第7篇,本系列总目录如下:《IM跨平台技术学习(一):快速了解新一代跨平台桌面技术——Electron》《IM跨平台技术学习(二):Electron初体验(快速开始、跨进程通信、打包、踩坑等)》《IM跨平台技术学习(三... 查看详情

electron构建桌面应用程序开发资料整理

Electron是什么?Electron是一个程序库,基于Electron库我们可以使用HTML、CSS、JS来开发跨平台桌面应用程序(buildingcross-platformdesktopapplicationswithHTML,CSS,andJavaScript.)学习资源 Electron官网文档 https://electron.atom.io/docs/Elect 查看详情

初识electron开发桌面应用(代码片段)

...ctron基于Chromium和Node.js,让你可以使用HTML,CSS和JavaScript构建跨平台(mac/window/linux)桌面应用。Electron开发环境的搭建首先安装node环境(点击跳转到老张的另外一个文章,这里推荐使用nvm更好的管理node版本)接下... 查看详情

使用electron构建跨平台node.js桌面应用

最近,把团队内经常使用的一个基于Node.js制作的小工具给做成了可视化操作的桌面软件,使用的是electron,这里简单分享一下使用electron的一些经验和心得。一、如何使用electron把基本的开发环境给跑起来?我是这么处理的,elect... 查看详情

快速了解electron:新一代基于web的跨平台桌面技术

本文引用了作者“ConardLi”的《用JS开发跨平台桌面应用,从原理到实践》一文部分内容,原文链接:segmentfault.com/a/1190000019426512,感谢原作者的无私分享。1、引言现在开发IM应用动不动就要求多端——即Android端、iOS... 查看详情

node桌面应用开发

1、node桌面应用开发的框架:electron 和 nw.js   https://www.jianshu.com/p/c6bdb087e60d2、使用electron构建跨平台Node.js桌面应用 : https://www.zhangxinxu.com/wordpress/2017/05/electron-node-js 查看详情

使用.net5blazor和electron.net构建跨平台桌面应用

...ore的Electron的封装,通过Electron.NET可以构建基于.NET5的跨平台的桌面应用,使得开发人员只需要使用ASP.NETCore和Blazor就可以胜任桌面应用的开发工作。开发环境操作系统Windows/macOS/Linux.NET5.0npm创建新项目创建文件夹mkdirElectro... 查看详情

使用electron开发pc客户端----入门篇

参考技术AElectron,使用JavaScript,HTML和CSS构建跨平台的桌面应用,利用Web技术JavaScript、HTML和CSS开发跨平台(Mac,Windows和Linux系统)桌面应用的开源框架,最初是Github发布的Atom编辑器衍生出的AtomShell,后更名为Electron。可以将electro... 查看详情

electron打包react构建桌面应用(代码片段)

...行。 在目前浏览器和移动端盛行的互联网环境下,跨平台的桌面应用开发,也为前端提供了一个新分支方向。二、搭建准备1、检查git和node是否安装完成git--versionnode- 查看详情

electron-vite2-macui桌面管理框架|electron13+vue3.x仿mac桌面ui(代码片段)

...tron12开发后台管理系统项目。今天要分享的是最新研发的跨平台仿macOS桌面UI管理框架。使用了最新前端技术electron13+vite2.3+vue3搭建开发。支持多窗口、动态壁纸、程序坞DOCK菜单、可拖拽等功能。一、实现技术编辑器:Vsco 查看详情

electron把网页打包成桌面应用并进行源码加密(代码片段)

...介  Electron是由Github开发,用HTML,CSS和JavaScript来构建跨平台桌面应用程序的一个开源库。Electron通过将Chromium和Node.js合并到同 查看详情

electron初体验

环境安装Electron:使用JS,HTML和CSS构建跨平台的桌面应用程序(一般都是C#原生,QT等框架来开发桌面应用)VSCode就是用Electron写的示例npmielectron-gmkdirelectron-excode.electron-exnpminit新建main.js执行npmstart一个简单的浏览器... 查看详情

electron初体验

环境安装Electron:使用JS,HTML和CSS构建跨平台的桌面应用程序(一般都是C#原生,QT等框架来开发桌面应用)VSCode就是用Electron写的示例npmielectron-gmkdirelectron-excode.electron-exnpminit新建main.js执行npmstart一个简单的浏览器... 查看详情

electron初体验

环境安装Electron:使用JS,HTML和CSS构建跨平台的桌面应用程序(一般都是C#原生,QT等框架来开发桌面应用)VSCode就是用Electron写的示例npmielectron-gmkdirelectron-excode.electron-exnpminit新建main.js执行npmstart一个简单的浏览器... 查看详情

使用electron构建跨平台node.js桌面应用经验分享

byzhangxinxufromhttp://www.zhangxinxu.com/wordpress/?p=6154本文可全文转载,但需得到原作者书面许可,同时保留原作者和出处,摘要引流则随意。最近,把团队内经常使用的一个基于Node.js制作的小工具给做成了可视化操作的桌面软件,使用... 查看详情

electron使用electron将web项目打包成桌面应用程序(代码片段)

...;Electron是由GitHub开发,使用JavaScript,HTML和CSS构建跨平台的桌面应用程序,可以帮我们把web网页项目直接打包成桌面应用程序。一、所需环境&打包前准备1、 查看详情

electron中实现大文件上传和断点续传功能(代码片段)

...描述:Electron是由Github开发,用HTML,CSS和JavaScript来构建跨平台桌面应用程序的一个开源库。Electron通过将Chromium和Node.js合并到同一个运行时环境中,并将其打包为Mac,Windows和Linux系统下的应用来实现这一目的。从官网的描述我们... 查看详情