1. Dotnet9首页
  2. .NET
  3. WPF

Electron 和当下其他的桌面开发方法相比如何?

22

本人是个业余的WPF开发者,看到最近Electron 等打包web跨平台的兴起感觉心痒痒,想尝试一番,奈何时间有限,只有一点陈年的HTMLweb基础,看着茫茫的web学习清单觉得是不是有必要去学web开发然后去开发一个炫酷的桌面程序,比如项目管理类?,大数据的。请答友给我实锤!

柳风 别人笑我太疯癫,我笑别人看不穿

600 人赞同了该回答

我大概开发Electron快两年的时间了,期间也做过一些产品。

首先我们看一下我们常用的客户端软件开发都有哪些技术:

首先是Microsoft阵营的

Winform

如雷贯耳,大多数人开发CS程序都是基于Winform去做的,它的有点在于简单、高效,但是它的缺点在于,如果你想深入的美化UI,需要耗费很大的力气,对于目前主流的CSS样式表来讲,美化Winform的界面以及自定义控件是需要耗费更多的时间的。

Electron 和当下其他的桌面开发方法相比如何?

并且,Winform由于其出身,原生是不可以运行在其他操作系统之上的,当然,我已经很久很久很久没有用过Winform了,所以对其现在的发展现状并不是很了解。

在开发上,Winforms简直不要太简单,如果对UI没有苛求的话,Visual Studio能够拖到你怀疑人生。

WPF

微软的又一个杀手锏,其基于XML+C#+CSS的呈现方式让它在UI上有了更加灵活的设计宽度,并且对大多数开发者来讲,前后端分离式的开发方式能够更好的组织代码逻辑,我是先学的Flex,后来才知道有WPF这么个东西存在,瞬间觉得非常亲切,不过其子集Silverlight却没有在WEB端发扬光大。

Electron 和当下其他的桌面开发方法相比如何?

同样,WPF不能运行在其他操作系统,并且在XAML中编写样式表,通用性还是不如HTML强,从学习应用的范围来讲,还是HTML更好一些。

在开发上WPF前端X(A)ML、后台C#,与HTML+JS差不多,但是所学的知识点可能更偏向于.NET内部,也有可视化的编辑器,但是我之前用的时候手感比Winform的差太多了,不过熟练了之后基本上都是基于代码设计,倒也无所谓。

UWP

微软为了针对移动端市场开放的开发框架,我本人没有用过,所以不好做太多评价,但是从目前看来,有个老外说的好:UWP is dead because Windows apps are dead,有兴趣的同学可以去找找相关资料。

Electron 和当下其他的桌面开发方法相比如何?

总而言之,如果你的APP只需要运行在Windows下,我认为WPF或者UWP是最好的选择,毕竟在调用系统原生API上微软的亲儿子们有着巨大的优势。

没有开发过,不做讨论。

然后是Java阵营

Swing

零几年学Java的老头子们几乎都是从Swing开始学起的,Swing谜一般的默认UI审美观让我直接放弃了继续学习下去的动力

Electron 和当下其他的桌面开发方法相比如何?

不过我还是利用NetBeans和一个UI控件库开发出了一个比较漂亮的产品,给我的感觉就是这个家伙实在太重了,我也已经很久很久没有碰过Swing了,所以对于现在的Swing是个什么情况也不能详细介绍。

使用NetBeans能勉强达到Visual Studio拖拽控件十分之一的手感吧,其他的我没试过,对我来讲简直是一种灾难……

JavaFx

怎么说呢……说实话我是Java程序员,但是JavaFx出来的时候我根本还没来得及做任何反应,这个家伙就消失在了大众的视野中,也许是我孤陋寡闻,也许是圈子不同,我身边的开发朋友没有一个在用JavaFx。

Electron 和当下其他的桌面开发方法相比如何?

他的优点在于可以跨平台,缺点在于整个生态环境非常不好,与Winforms一样,自定义一些控件相对比较困难。

接下来是Adobe阵营

Air

我开发过很长一段时间的Flex程序,当Air第一次出现在我眼前的时候,给了我眼前一亮的感觉,相对于Swing来讲,Air更漂亮,因为有很多Flash控件的积累,可选择的资源也会更多一些。

但是随着Flash在浏览器上的节节败退,Air也悄无声息的消失在了大众的视野当中。

Electron 和当下其他的桌面开发方法相比如何?

作者:柳风
链接:https://www.zhihu.com/question/264999651/answer/741654058
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

它的优点在于可以跨平台,可以基于Flash做出很多超级炫酷的动画特效,但是缺点主要就是效率实在是太低下了,并且在调用操作系统原生API的时候也非常不方便。

开发方式就是硬编码,虽然有FlexBuilder可以使用,但是简直是一个灾难级别的存在……绝对怀疑人生……

而Flash、Flex本身就可以基于Flash Player独立运行,所以不再详细说了。

夹带着谈谈Apple

苹果的桌面开发,我没有开发过,但是在自己的MBP上玩过,基于Objective-C(或现在的Swift)对于很多程序员来讲有点难,现在大多数程序员都是基于C#、Java进行开发,能够使用C、CPP之类中古语言的程序员着实不多,并且与Windows一样,不跨平台,所以开发纯Objective-C的苹果桌面程序的程序员真的是少之又少。

优势嘛,跟Winforms一样,可以非常方便的调用操作系统底层API,劣势也一样,不跨平台、自定义控件比较复杂,可用资源太少。

再来说说QT

QT C++是一个神奇的存在!

我相信现在有非常多的跨平台Desktop Application是基于QT编写的,它不仅能够保证跨平台,而且能够将运行效率最大化。

QT最近在跟车企进行合作,很多监控设备的图形化展示,甚至是试验车内部的液晶仪表盘上都使用QT进行开发的,QT最大的优势就是跨平台!高效率!但是与Objective-C一样,CPP如同一座小山横在了众多server side程序员的面前,如果没有CPP这道小山横贯在前,我认为QT是最好的Desktop Application特别是嵌入式终端的UI开发框架。

Electron 和当下其他的桌面开发方法相比如何?

作者:柳风
链接:https://www.zhihu.com/question/264999651/answer/741654058
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

QT另外有一个优势在于,它在UI上似乎要比之前几位要方便一些,在它的QML中甚至可以直接使用JavaScript(当然,Java也内置了JS引擎),同时QT中也包含了大量的标准CSS样式表可以使用。

虽然这些特性在其他的语言中也有,例如WPF等,但是QT在保证效率的前提下还能做到跨平台就显得弥足珍贵了!

所以,如果希望自己从事真正意义上的Desktop Application development,QT绝对值得你去学习。

QT有可视化编辑器,但是相比较而言,可能略强于NetBeans的Swing,但是跟VS比起来还是差太远了,不过大多是实际开发都是基于代码的,倒也无所谓。聊胜于无吧。

最后,我们聊聊Electron、NW.js

介于NW的日渐式微,所以我更推荐Electron一些。

我是做大数据开发的,但是我的前端技术还不错,对Sass、Less信手拈来,不基于Bootstrap也能基于Sass或者Less开发类似Bootstrap的UI(虽然审美观还有待大大的加强),我从AngularJS转到VUE这个阵营差不多只花了两天时间,自己可以基于Canvas硬实现流程图(不基于任何框架),但是我自认还达不到熟练使用D3.js或者开发WebGL的水准。

我不需要QT的高效率, 也不希望渲染个大列表需要很长时间,还希望能够达到跨平台的目的,对于DirectUI之类更低层的UI技术根本没有精力去掌握,所以对我来讲Electron简直是最完美的解决方案。

我使用Electron的理由还包括:可以方便的通过Node.JS调用系统API、可以使用SQLite做本地字典项的缓存处理,可以将复杂的计算逻辑放在客户端进行,从而减轻服务器端的压力等等。

所以,Desktop Application的开发,我只推荐两种:

Electron(或NW.js)和QT

其他方案我都不是特别推荐。

当然,如果你的程序只是跑在Windows上,就不用考虑了,WPF是你最好的选择。

Electron开发不要太简单,只要会写HTML,就能写客户端,剩下的交给时间慢慢打磨即可,Node.JS虽说不是最终极的优秀中间件,但是目前来看在Desktop这一块还有发挥余热的地方。

当然,很多人说,我就是不喜欢Electron的应用,体积大效率低。

无可厚非。

但是我不在乎,因为我的硬件,跑个Electron,绰绰有余的多,十几年前刚入行的时候还有人跟我扯打孔机呢。

完结

本文所提到的技术,我并不完全掌握,特别是Objective-C,因为是即兴回答,我也不可能把上面所有的技术都自己跑一便,所以难免有错误,如有笔误之处,还希望各位看官大佬轻拍指点。

资料:

Electron调用DLL:Kehaw’s blog-Electron下调用DLL文件​www.kehaw.com

Electron串口通信:Kehaw’s blog-Electron使用串口通信​www.kehaw.com

刘春雷 一直做船舶配载研究、为实现配载算法还要兼职做程序员

332 人赞同了该回答

没想到很多人喜欢,h5目前的界面能力很强,2019-12-01 补充几张图:

Electron 和当下其他的桌面开发方法相比如何?
主界面功能布局做了调整
Electron 和当下其他的桌面开发方法相比如何?
窗口折叠
Electron 和当下其他的桌面开发方法相比如何?
根据html5 网页版 做的安卓版
Electron 和当下其他的桌面开发方法相比如何?
增加了双Bay视图
Electron 和当下其他的桌面开发方法相比如何?
增加了Web 3D显示,放大缩小旋转拾取
Electron 和当下其他的桌面开发方法相比如何?
优化了一些其他功能
Electron 和当下其他的桌面开发方法相比如何?
各种不合规积载检测
Electron 和当下其他的桌面开发方法相比如何?

下面是原始回答:

我们做船舶配载仪就是用WPF写的,采用了MVVMLight及Ribbon风格

Electron 和当下其他的桌面开发方法相比如何?

后来我们想要做成Web版,就启动了Web化的任务,经过几个月功能基本已经移植完成了

底层算法用c++写

服务器端:用Java调用C++

前端:采用html5


优点:

  1. wpf能实现的功能,html5 基本都能够实现
  2. 想实现单机版只需要用electron包装一下
  3. 生态好 以前写wpf就我们两个人 现在web端已经4个人了
  4. 我们在安卓移动端做了尝试,采用cordova 很方便的实现了移植,大概需要几天时间
  5. 还可以享受WebGL在3D方面的福利

回答楼主问题:

(1) 从Wpf转Html5 还是很快的,完全没压力,我就是直接上手写的

(2)建议楼主学一学,做为程序员终归要学习几几几几种语言的 ~ ~


下面是网页版的几张截图

Electron 和当下其他的桌面开发方法相比如何?
多皮肤实时切换
Electron 和当下其他的桌面开发方法相比如何?
Electron 和当下其他的桌面开发方法相比如何?
Electron 和当下其他的桌面开发方法相比如何?
集装箱船 任意放大缩小 拖动
Electron 和当下其他的桌面开发方法相比如何?
Electron 和当下其他的桌面开发方法相比如何?
Electron 和当下其他的桌面开发方法相比如何?
Electron 和当下其他的桌面开发方法相比如何?

2020.3.3号 补充几张用h5 做的安卓学习项目的截图

Electron 和当下其他的桌面开发方法相比如何?
Electron 和当下其他的桌面开发方法相比如何?
Electron 和当下其他的桌面开发方法相比如何?
Electron 和当下其他的桌面开发方法相比如何?

原文出处:知乎

原文链接:https://www.zhihu.com/question/264999651

本文观点不代表Dotnet9立场,转载请联系原作者。

发表评论

登录后才能评论