person

Electron

1. 概述

Electron 是由 Github开发的开源框架。我们熟悉的Atom、VSCode、新版迅雷就是用Electron开发的。

Electron 应用本质上是一个 Node.js 应用,它允许开发者使用Web技术(你熟悉的 JavaScript, HTML 和 CSS )构建跨平台的桌面应用。这些应用程序可以打包后在 macOS、Windows 和 Linux 上直接运行,或者通过 Mac App Store 或微软商店进行分发。

2. Electron运行原理

Electron = Chromium + Node.js + Native API

Chromium : 即Chrome 浏览器的开源内核,它为Electron提供了强大的UI能力,可以不考虑兼容性的情况下,利用强大的Web生态来开发界面

Node.js :让Electron有了底层的操作能力,比如文件的读写,甚至是集成C++等等操作,并可以使用大量开源的 npm 包来完成开发需求

Native API :Native API让Electron有了跨平台和桌面端的原生能力,比如说它有统一的原生界面,窗口、托盘这些

3. 传统桌面应用程序

桌面应用程序,又称为 GUI 程序(Graphical User Interface)。

我们电脑上使用的各种客户端程序都属于桌面应用程序,近年来WEB和移动端的兴起让桌面程序渐渐暗淡,但是在某些日常功能或者行业应用中桌面应用程序仍然是必不可少的。

传统的桌面应用开发方式,一般是下面两种。

1)原生开发:

直接将语言编译成可执行文件,直接调用系统API,完成UI绘制等。这类开发技术,有着较高的运行效率,但一般来说,开发速度较慢,技术要求较高,例如:

  • 使用C++ / MFC开发Windows应用;
  • 使用Objective-C开发Mac应用。

2)托管平台:

一开始就有本地开发和UI开发。一次编译后,得到中间文件,通过平台或虚机完成二次加载编译或解释运行。运行效率低于原生编译,但平台优化后,其效率也是比较可观的。就开发速度方面,比原生编译技术要快一些。例如:

  • 使用C# / .NET Framework(只能开发Windows应用);
  • Java / Swing。

4. Electron项目和Web项目的区别

Electron核心可以分成2个部分:主进程和渲染进程。

  • 主进程通过创建 BrowserWindow 实例来创建 网页。 每一个 BrowserWindow 实例在其渲染过程中运行网页, 当一个 BrowserWindow 实例被销毁时,对应的渲染过程也会被终止。
  • 主进程 管理 所有网页及其对应的渲染进程。
  • 渲染进程只能管理相应的网页, 一个渲染进程的崩溃不会影响其他渲染进程。
  • 渲染进程通过 IPC 与主进程通信在网在页上执行 GUI 操作。 出于安全和可能的资源泄漏考虑,直接从渲染器进程中调用与本地 GUI 有关的 API 受到限制。
  • 进程之间的通信可以通过 Inter-Process Communication(IPC) 模块进行:ipcMainipcRenderer

主进程连接着操作系统和渲染进程,可以把她看做页面和计算机沟通的桥梁。渲染进程就是我们所熟悉前端环境了,只是载体改变了,从浏览器变成了窗口。

5. 缺点

性能比原生桌面应用要低,最终打包后的应用比原生应用大很多

6. 学习资源

  1. Electron官网:https://electronjs.org
  2. Electron Github:https://github.com/electron
  3. Electron开发手册:[https://electronjs.org/docs](

新评论