之前用过 Qt4,后来基于 Atom Editor写过一些插件自己玩(不知道算不算用了 Electron?),现在天天在用 钉钉,云音乐之类的。
实在要比较的话,你可以类比用 Html5 开发的游戏(比如神经猫之类)和 Native游戏之间的区别。简短点说,Electron开发项目是不错,但也给你画了一条红线,让你在享受它便利性和简单性的同时,不能越雷池半步。
不知道你们有没有没发现,不管是网易云音乐,钉钉,Atom Editor,Slack,这些基于 Chrome的桌面Web解决方案做出来的UI都是一大坨的么?就是一个 WebView控件扔那里,所有东西有且只能显示在这个 WebView里面,所有控件都是由这个 WebView控件自己绘制在里面,你不能弹任何超越这个 WebView的对话框,多窗口,否则会麻烦死你,你想做wps,yy这类软件,且不说性能问题,基本上是很难解的。
这种 App一般需要一个唯一的大窗口,要占据屏幕比较大的空间,现成控件虽然多,但用多了以后,所有这类app看起来都是黑雷同的。性能嘛,用过上面那些软件的,各位应该有比较直观的体验,它比较擅长做控件数量少的,每个控件都是大拓大拓那种。
如果你的应用属于上面这些类型,那么挺好的,Electron 适合你。
再者,界面和 C++原生渲染的结合,Electron中,C++可以给后端的 nodejs写一些 module,但要再前端 Chrome的 WebView里面用 C++实现一些界面逻辑,目前我还没看到比较好的方法(反过来Qt 的 Native窗体下嵌入一个 WebView却很容易)。这就是说,你得完全基于 js/coffee 来完成你的界面逻辑,方便的同时,也给你画了一条红线,让你不能越雷池半步,比如你想实现个 YY的房间,里面有一个自己开发的播放器,用自己私有协议传输数据,或者用自己改过的编码格式来解码视频,或者你有个效果(如3D翻页)用 html很难以平滑的模拟,又或者某个控件变化多端,html做起来太难了(比如一个 Excel的单元格,状态实在太多了),你想用C++实现一下,那么对不起,红线画那里了。
最后,Electron对 Windows的支持太差了,bug不断啊,简直是,你们用用Atom Editor的windows版本,比如 One Light风格用了 Electron里面 Native的滚动条,这个滚动条我提了至少三个bug,无数人抱怨,Mac/ Ubuntu下都没问题。
如果你对这些都无所谓,就是个轻量级消费类 APP,产品经理不会有一天说给主窗口的列表控件里加 2000个 ITEM,同时以后也不需要去接触红线外的东西,那么 Electron挺适合的。
Electron 是个好东西,当然,对于红线内的特定应用来说。