为什么要用Javascript开发桌面应用?
Javascript曾经脆弱、粗糙,甚至有被边缘化的危险。然而经过两次飞跃,Javascript不再被欺负,早已升级为格林博士。V8引擎让Javascript运行速度更快,Node.js让Javascript不仅能做Web前端页面,还能开发后端应用。

虽然有了Node.js,Javascript可以开发服务器端的应用,但是对于一个重要的应用——桌面应用来说,还是无法胜任。目前,Web应用和移动应用似乎是主流,但如果没有桌面应用,Web应用和移动应用甚至不会存在。所有的网络浏览器都是桌面应用程序。没有桌面应用,就没有网页运行的地方。用于开发移动应用程序的开发工具也是桌面应用程序。而Windows开始菜单和Mac OS X Docker中的每个图标都对应一个桌面应用。可以说桌面应用无处不在。
如果把Web应用和移动应用比作国王,那么桌面应用就是国王头上的王冠。没有王冠,国王什么都不是,是电子给了Javascript制造王冠的力量。这是一个基于V8引擎和Node.js的开发框架,允许用Javascript开发跨平台的桌面应用。
有哪些著名的应用是利用电子开发的?
目前,相当多的桌面应用程序是由电子开发的。比如著名的Visual Studio代码就是电子开发的,蚂蚁小程序也是电子开发的。很多手机厂商,主要是小米和华为推出的fast application的IDE也是电子开发的。
Ant小程序IDE:
此外,大家熟悉的应用如Slack、Atom、XMind ZEN、WebTorrent、Hyper等都是基于电子的。
从电子的主要用户来看,很多都是大厂,比如蚂蚁金服、小米、华为、GitHub、微软等。现在GitHub已经被微软收购,电子的背景就是微软。所以,学电子后不用担心没市场。毕竟各大厂商都在用电子。
电子发展的好处
用电子显影有什么好处?电子本身是基于Node.js的,可以利用Node.js现成的资源。
而且电子是跨平台的,可以同时开发Web应用和桌面应用。无论是UI还是代码,大部分资源都可以共享,这也大大减轻了开发人员的工作量,甚至企业都不需要反复投入人力开发系统。
此外,当Web应用程序处于恶劣的网络环境中时,页面加载缓慢。不仅需要传输数据,还有大量UI相关的代码,非常耗时。
但是,桌面应用就不一样了。在运行时,至少UI部分不需要从网络更新。最多就是和服务器交互数据。即使网络不畅,也可以临时使用本地数据。即使不开发这些“高端”的产品,只开发一个相对容易的管理系统,本地化运营依然会大大提升用户体验。最重要的一点是,电子不仅支持Web API完成与Web应用相同的工作,还允许调用许多操作系统底层API访问计算机硬件设备。它甚至可以用C++写本地模块,自己走,可以完成很多Web应用做不到的事情。
可能有很多之前开发过桌面应用的读者,认为桌面应用也有缺点。比如桌面应用很难实时更新,维护相比Web应用费时费力。但是这个缺点是针对传统桌面应用的,基于电子的应用没有这个缺点。
电子被这么多人使用,不仅仅是因为它是基于Web技术的,还因为它可以调用很多本地API,在实现很多功能的时候非常贴近本地应用。
学习电子,成为更好的开发者。
作为一名开发人员,学习开发桌面应用会显著提升你的核心竞争力。此外,电子公司使用网络技术开发桌面应用程序。可以考虑将Web应用和桌面应用开发为一个应用,这样会大大提高开发效率。
如前所述,国外很多著名的应用都是由电子开发的,包括常用的Visual Studio代码。目前,中国的电子热正在升温。比如支付宝小程序IDE,快应用IDE都是电子开发的。另外,微信小程序的IDE虽然不是电子开发的,但是是用类似的NW.js开发的,而且NW.js的使用方法和电子的很像,可以举一反三。
本课程的作者团队也在使用Electron开发一个跨平台的开发工具OriUnity,该工具可以使用Javascript同时开发桌面应用、Web应用、移动应用和小程序,并且可以集成客户端和服务器端。在开发产品的过程中,我们也积累了很多电子的实践经验。所以正好借着达人课的机会,总结一下电子的一些开发经验,希望能给想入门电子的读者提供一些参考。

课程结构
电子有很多功能,但这些功能基本上可以分为基础知识、窗口、菜单、高级API和发布应用。本课程将结合这些知识点详细讲解如何用电子开发桌面应用。
这门课程的目的是培养每个人解决实际问题的能力。每一课的知识点既独立又相互联系。例如,在创建托盘时,需要使用上下文菜单的知识。大部分文章都提供了完整的实现代码,最后提供了两个实际案例:云笔记和基于电子的数据库管理系统,将离散的知识点结合起来完成非常复杂的桌面应用项目。
本课程分为七个部分,共29篇文章。
第一部分:电子基础知识
这一部分主要介绍了用电子开发跨平台桌面应用的原因,桌面应用的优势,电子应用的基本开发步骤,如何构建集成开发环境,如何用Git管理电子应用等。这部分是电子学习的开胃菜。请继续回头寻找大餐。
第2部分:用电子创建窗口
这一部分详细介绍了用electronic创建各种类型窗口的方法,包括仅用于Mac OS X系统的文件显示窗口、打开对话框窗口、保存对话框窗口、显示消息对话框窗口、用HTML 5 API创建子窗口、与用open方法打开的子窗口交互、在窗口中嵌入网页等。
第3部分:创建各种类型的菜单。
菜单是桌面应用程序的重要组成部分。本部分详细描述了如何在电子版中创建各种类型的菜单。主要内容包括使用模板创建窗口菜单,如何设置菜单项的角色,菜单项的类型,给菜单添加图标,创建动态菜单和上下文菜单。
第四部分:公共核心API。
该部分是本系列课程的核心内容,讲解了电子版中常见的核心API,包括创建托盘应用、拖拽、使用相机、根据操作系统定制样式、纯Javascript API操作SQLite数据库、Node.js模块操作SQLite数据库、访问MySQL数据库、使用剪贴板、注册全局键、测试等。
第5部分:发布应用程序
因为基于电子的桌面应用依赖于Node.js、Electron和众多的模块来运行,所以用户不可能一个一个地安装这些东西。最好的解决方案是把这些东西和开发出来的桌面应用打包在一起,然后给用户发一个安装包。用户只需要双击安装包就可以搞定,所以要学会发布电子桌面应用。
因此,本部分主要介绍如何使用各种工具发布基于电子的应用程序,包括使用e-packager和e-builder创建安装包和制作安装程序。
第六部分:项目实战。
这一部分是这一系列课程的点睛之笔。需要把前面五部分介绍的知识点连接起来,才能完成复杂的桌面应用。这里提供两个完整的案例。一个是云笔记系统,可以把本地笔记保存到服务器,但是这里的服务器是以太坊而不是传统的数据库;第二个项目是基于电子的MySQL数据库管理系统,可以本地管理MySQL数据库,上传数据到以太坊进行备份。
第七部分:模块分析。

这部分主要介绍Node.js和电子模块的相关知识,包括用Javascript开发Node.js和电子模块,用C++开发Node.js和电子的本地模块。通过这一部分的内容,C++可以与Electron完美融合,Electron具有无限的可扩展性。
课程信息
Node.js和Electron堪称Javascript的左右保护神。前者允许Javascript轻松跨越不同类型应用的边界,后者允许Javascript进入服务器端和桌面应用领域。有了这两个保护器,Javascript才能真正成为唯一的全栈开发语言,从Web到移动,到服务器,到桌面应用,甚至终端程序,都可以做。
这门课不仅仅是讲解电子方面的知识,而是教你开发电子桌面应用的思路,提高你的动手能力。无论桌面应用需求有多复杂,你将来都能够轻松应对。
最后,祝大家学习愉快,好运!


