「Electron实战」Electron介绍
「Electron实战」Electron介绍

本章包括
了解Electron是什么学习Electron是建立在什么技术基础上的了解使用Electron与传统Web应用程序的不同之处构建Electron应用在产品中使用Electron来构建真实的应用程序
网络的最大优势就是无处不在。它天生是一个创建协作应用程序的出色平台,并且可以从运行不同操作系统的各种设备上访问这些应用程序。换句话说,整个应用程序也离不开浏览器环境,Web应用程序无法访问文件系统,不能执行非JavaScript编写的代码,它们不能像桌面应用程序那样调用众多的操作系统API。而且,当没有可靠的网络连接时,大多数web应用程序都不无法使用。
长久一来,构建桌面应用程序都要采用另外一种完全不同的技术栈,而我们许多人没有那么多时间来学习新语言和架构。有了Electron,你可以使用Web开发人员已有的技能,来构建具有许多本地桌面应用程序功能的应用程序。
1.1. 什么是Electron?
Electron是一个运行时,它允许你使用HTML5、CSS和JavaScript创建桌面应用程序,这是由GitHub的工程师Cheng Zhao(又名zcbenz)发起的开源项目。先前Electron被称为Atom Shell,是Atom的基础,Atom是GitHub使用web技术构建的跨平台文本编辑器。
你可能听说过或使用过Apache Cordova或Adobe PhoneGap来构建web应用程序,这些应用程序是用原生shell打包的,用于iOS、Android和Windows Phone等移动操作系统。这样的话,将Electron看作是类似构建桌面应用程序的工具可能更有助于理解。
Electron允许你使用已经掌握的web技术来构建应用程序,这正是我们使用它的原因。在本书中,你将了解如何构建在Windows、macOS和Linux上,可以调用本地操作系统API的应用程序。
Electron集成了Chromium Content Module和Node.js运行时,可以让开发人员使用web页面来构建GUI,并通过与操作系统无关的API来访问Windows、macOS和Linux操作系统的能力。
Chromium和Node本身都是广受欢迎的应用程序平台,它们都可单独用于创建大型应用程序。Electron将这两个平台结合在一起,允许你使用JavaScript构建一个全新的应用程序类别。浏览器中能做的任何事,都可以使用Electron实现。Node能做的任何事,也都可以使用Electron实现。
令人兴奋的是,这两种技术结合起来能做什么。你可以构建利用这两个平台的应用程序,也可以构建仅在一个平台上不可能实现的应用程序。这正是本书所关注的全部内容。Electron不仅是构建类似于本地桌面程序的web应用的最佳选择;它也是围绕Node应用程序构建GUI的不错选择,否则这些应用程序将受限于命令行界面。参见图1.1。

图1.1 LevelUI
图1.1 LevelUI是一个使用Electron构建,用于Node的LevelUp数据库的GUI。你无法在传统浏览器中构建此应用程序,因为它无法访问用户计算机上的本地数据库。它也不能使用LevelUI库,因为它是一个编译好的C++模块,只有Node(而不是浏览器)可以使用。
假设你希望构建一个应用程序,该应用程序可以查看和编辑计算机上的图像文件夹。传统基于浏览器的应用程序无法访问文件系统,它们无法访问照片目录,无法加载目录中的任何照片,也无法保存你在应用程序中所做的任何更改。使用Node,你可以实现所有这些特性,但不能提供GUI,这使应用程序难以让普通用户使用。通过将浏览器环境与Node结合起来,你可以使用Electron创建一个应用程序,该应用程序中可以打开和编辑照片,并为这些操作提供交互界面,如图1.2。

图1.2 Electron结合了Chromium的核心web浏览器组件和Node的底层系统访问。
Electron不是一个复杂的框架——它是一个简单的运行时。与在命令行中使用node的方式类似,可以使用electron命令行工具运行Electron应用程序。你不需要学习很多条条框框就可以开始,你可以自由地按照自己的意愿来构造应用程序——尽管我在本书中提供了一些技巧和最佳实践。
1.1.1. 什么是Chromium Content Module?
Chromium是Google Chrome web浏览器的开源版本,之间共享了大量相同的代码和特性,但有一些细微的差别,以及采用了不同的授权。Content Module是允许Chromium在独立进程中渲染web页面,并使用GPU加速的核心代码,它包括Blink渲染引擎和V8 JavaScript引擎,是web浏览器的核心。它从web服务器获取并呈现HTML,加载所有引用的CSS和JavaScript,对页面进行相应地渲染,并执行JavaScript脚本。
研究Content Module最简单的方法是找它没做什么。Content Module不包含对Chrome扩展的支持;不与Google云服务同步书签和历史记录;在你访问页面时,它不能安全地存储密码,也不能自动填充密码;不会检测页面内容是否是使用其他语言文字编写的,而请求Google翻译服务提供帮助。Content Module只包含渲染HTML、CSS和JavaScript所需的核心技术。
1.1.2. 什么是Node.js?
JavaScript存在的前15年,通常是与web浏览器隔离的。支持在服务器上运行JavaScript的方式并不多,这样的项目是的,但它们从未引起任何注意。Node.js项目最初发布于2009年,是一个开放源码、跨平台的运行时,用于使用JavaScript开发服务器端应用程序。它使用Google的开源V8引擎来解释JavaScript,并添加了用于访问文件系统、创建服务器和导入外部模块的API。
在过去的几年中,Node受到了广泛的关注和欢迎,并被广泛用于各种用途,从编写web服务器到控制机器人,再到(你可能猜到了)构建桌面应用程序。Node附带了一个名为npm的包管理器,凭借其25万多的注册库,可轻松实现包的管理。
《Electron实战》中文版!
-
- 俄海军万吨战舰突然起火,数百水兵弃舰逃生,40年前的教训学不会
-
2025-08-20 18:29:23
-
- 血战湘江绝命后卫师,幸存者中唯一幸存团长开国中将韩伟!
-
2025-08-20 18:27:09
-
- 主播来了丨张妮:农村主妇变身百万粉丝主播
-
2025-08-20 18:24:55
-
- 封面人物 | 杜敏:从身无分文的落魄夫妻,到连续三个月的单组冠军
-
2025-08-20 18:22:41
-
- 凉山州西昌市以改革创新为驱动,奋力谱写健康四川建设西昌篇
-
2025-08-20 18:20:27
-
- 贵阳市在建地铁线路盘点
-
2025-08-20 18:18:12
-
- 经典电视剧《大宅门》中真实的人物原型都是谁?(上)
-
2025-08-20 18:15:58
-
- 全线轨通!沈阳地铁4号线最新消息!
-
2025-08-20 18:13:44
-
- 十首经典歌曲,带你回到属于八零后的倾城时光
-
2025-08-20 18:11:30
-
- 《寻找裴斯泰洛齐》:将职业教育视为一种生命现象|年度阅读推荐
-
2025-08-20 18:09:16
-
- 你家的婆媳关系是如何“打开”的?10部经典婆媳剧,你看过吗?
-
2025-08-20 18:07:01
-
- 中国近代影响力较大的历史人物——邓稼先
-
2025-08-20 18:04:47
-
- 毕业证、学位证为何不能补办?丢失或损坏该怎么处理?
-
2025-08-20 18:02:33
-
- 10部熬夜追完的谍战剧,豆瓣评分都8.0以上,你看过哪部?
-
2025-08-20 07:39:43
-
- 特殊战俘区寿年:粟裕曾向他问计,战后没进功德林,他是什么人?
-
2025-08-20 07:37:29
-
- 10000000水饺“免费送”!喜家德惊现「小红饺」,致敬母亲节
-
2025-08-20 07:35:15
-
- 童言无忌有多可爱?那些年孩子说过的童言童语,看有没有你家的?
-
2025-08-20 07:33:00
-
- 靠李小龙一手提拔,她一脱成名嫁富商,整容失败变怪物现8夺影后
-
2025-08-20 07:30:46
-
- 票价仍然是50元!石家庄城北的肖家营庙会究竟有啥
-
2025-08-20 07:28:32
-
- 《全球通史》22:突厥人在欧亚大陆的兴起
-
2025-08-20 07:26:18



一口气看完朱元璋二十六个儿子的生平结局