让我们从你不需要知道的开始。本书是为web开发人员编写的,他们希望使用现有的技能来创建在传统浏览器环境中不可能创建的桌面应用程序。从这本书中获取有价值的构建桌面应用程序的知识,你不需要任何经验积累。
也就是说,您应该能够轻松地编写JavaScript、HTML和CSS,但是您不需要成为专家。在本书中,我不会涉及变量或条件,但是如果您熟悉JavaScript的一般语言特性,那么,你可能就具备了必要的技能。如果您熟悉Node中的一些约定和模式,这也很有帮助。如模块系统如何工作。我们将在遇到这些概念时探讨它们。
为什么我应该使用Electron
当您为web浏览器编写应用程序时,您必须在选择使用什么技术方面保持保守,在如何编写代码方面保持谨慎。这是因为,与许多服务器端情况不同,您编写的代码将在其他人的计算机上执行。
您的用户可能正在使用最新版本的现代浏览器,如Chrome或Firefox,也可能正在使用过时版本的Internet Explorer。在何处呈现和执行代码,您几乎没有发言权。你必须做好一切准备。
当您编写代码时,通常必须考虑到当今普遍使用的绝大多数浏览器的版本中支持的最广泛特性。即使问题存在更好、更有效或更吸引人的解决方案,您也可能无法使用该方法。当您决定使用现代浏览器特性时,您通常需要实现一个应急计划,包括优雅的回退、特性检测和渐进增强,这给您的开发工作流增加了不小的阻力。
当您使用Electron构建应用程序时,您是在打包特定版本的Chromium和Node。因此,您可以依赖这些版本中可用的任何特性。您不必关心其他浏览器及其版本支持哪些特性。例如,如果你构建的应用程序的Chromium版本支持Service Worker API,那么您可以放心地在应用程序中使用该API。参见图1.4。
图1.4 在基于浏览器的web应用程序中,由于Fetch API提供了不一致的支持,因此依赖它可能是不实际的。但是在您的电子应用程序中,您将当前稳定的Chromium构建与对Fetch API的完全支持捆绑在一起。
Electron允许您使用最前沿的web平台特性,因为它包含了相对较新的Chromium版本。Electron中Chromium的版本通常会在Chromium发行新的稳定版后的一到两周之内更新,具体时间根据升级所需的工作量而定。为了使版本更加稳定,Electron通常会在Node.js发布了新版本的一个月之后再更新。在Electron里,Node.js和Chromium共享同一个V8实例--通常是Chromium在用的版本。大多数情况下这能正常工作但有时候还是需要为Node.js打补丁。
基于已有的技术
如果您像我一样,那么构建web应用程序的经验可能比桌面应用程序丰富得多。您希望将创建桌面应用程序的能力添加到您的工具集中,但是您没有足够的时间来学习一种新的编程语言,而且可能还需要学习一个新的框架。
学习一门新的语言或框架是一项重大的投资。作为一名web开发人员,您习惯于编写对所有用户都同样有效的应用程序—即使这意味着要与特定浏览器或屏幕大小的特性作斗争。但是,当您考虑构建传统的桌面应用程序时,您谈论的不仅仅是学习一种语言和框架。如果您想要针对Windows、macOS和Linux,还需要学习至少三种不同的语言和框架。
个人和小型团队可以使用Electron在他们无法提供桌面应用程序的情况下提供桌面应用程序。对于一个小团队来说,雇佣一个精通每个平台构建应用程序的开发人员可能不是一个选择。electronic允许您使用现有的技能集并将应用程序部署到所有主要平台。使用Electron,您可以支持多个操作系统,而不需要像通常支持多个浏览器那样做那么多工作。
访问本机操作系统APIs