Electron(桌面开发工具)

大小:149.07M 类别:
  • 编程其它

官方安全无插件纠错

  • 更新时间2026-07-03
  • 版本v44.0.0-alpha.1
  • 系统Pc
  • 语言英文

Electron是一款开源的跨平台桌面应用开发框架,最初由 GitHub 推出,现由 OpenJS Foundation 联合社区持续维护。它整合了Chromium浏览器内核和Node.js运行环境,让开发者能够直接使用HTML、CSS、JavaScript等前端技术开发Windows、macOS和Linux桌面应用,无需针对不同平台重复开发。

Electron拥有完善的桌面应用开发能力,支持窗口管理、本地文件访问、系统通知、自动更新、崩溃日志收集等功能,能够满足大部分桌面软件的开发需求。同时兼容丰富的Node.js生态资源,开发者可以快速调用各类模块扩展软件功能,提高开发效率。

目前许多知名软件都采用Electron构建,例如Visual Studio Code、Postman、Discord等。对于熟悉Web前端开发的用户来说,Electron能够大幅降低桌面应用开发门槛,是目前较为流行的跨平台开发解决方案之一。

Electron软件截图

快速入门

Electron提供了丰富的本地(操作系统)的API,使你能够使用纯JavaScript来创建桌面应用程序。与其它各种的Node.js运行时不同的是Electron专注于桌面应用程序而不是Web服务器。

这并不意味着Electron是一个绑定图形用户界面(GUI)的JavaScript库。取而代之的是,Electron使用Web页面作为它的图形界面,所以你也可以将它看作是一个由JavaScript控制的迷你的Chrominum浏览器。

软件特色

1、网络技术

Electron使用Chromium和Node.js,因此您可以使用HTML,CSS和JavaScript构建您的应用程序。

2、跨平台

与Mac,Windows和Linux兼容,Electron应用程序在三个平台上构建和运行。

Electron功能介绍

1、主进程

在Electron里,运行package.json里的main脚本的进程被称为 主进程 ,运行在主进程里的脚本能够通过创建Web页面来显示GUI。

2、渲染进程

因为Electron使用Chrominum来显示Web页面,所以Chrominum的多进程架构也同样被使用。每个页面在Electron里是运行在自己的进程里,这些进程被称为 渲染进程 。

在浏览器里,Web页面通常运行在一个沙盒环境里,它不能访问本地的资源。但在Electron里,在Web页面中通过使用Node.js API可以进行底层的操作系统交互。

3、主进程与渲染进程的不同

主进程通过构造 BrowserWindow 实例来创建Web页面。每个 BrowserWindow 实例在自己的渲染进程里运行Web页面。当一个 BrowserWindow 被销毁后,相应的渲染进程也同样被终止。

主进程管理所有的Web页面以及相关的渲染进程。每个渲染进程都是互相隔离的,并且只知道运行在该进程里的Web页面。

在Web页面里,调用本地GUI是不允许的,因为在Web页面里管理本地GUI资源是非常危险的而且非常容易导致资源泄露。如果你想在Web页面进行GUI操作,该Web页面的渲染进程必须通过和主进程通信来请求主进程处理这些操作。

在Electron里,主进程和渲染进程有很多通信的方法。比如 ipcRanderer 和 ipcMain 模块是用来发送消息的, remote 模块支持RPC风格的通信。

更新日志

v44.0.0-alpha.1版本

v44.0.0-alpha.1 版本发布说明功能

为 macOS 添加了 Notification.remove()、removeAll() 和 removeGroup() 静态方法。

添加了 net.WebSocket,一个兼容 WHATWG 标准的主进程 WebSocket 客户端,通过 Chromium 的网络栈进行路由。

添加了 webContents.setZoomMode(mode) / webContents.getZoomMode() 以及 webContents.zoomMode 属性,用于对每个 webContents 进行缩放控制。

在 Linux 上新增了 win.setOpacity(opacity) 支持。

在 Linux 上,无边框窗口现在默认具有圆角处理,与 macOS 和 Windows 相同。所有平台均可通过设置 window.roundedCorners: false 来禁用圆角功能。

修复

修复:如果 nativeImage 接收了一个带有颜色配置文件的图像,其像素值现在将被标准化为 SRGB。这确保了经过色彩空间转换后视觉上相同的两个图像,在转换为 nativeImage 时会获得相似的像素值。

修复了 DevTools 网络面板在附加 webContents.debugger 后导航时缺少大多数请求的问题。

修复了 NativeWindowViews::MoveBehindTaskBarIfNeeded() 中的 Windows 特殊情况。

修复 ProtocolResponse。通过默认会话发送 URL 请求,而不是在 ProtocolResponse.session 未设置时注册协议处理程序的会话。

修复了调用 webContents.reload() 或从 render-process-gone 事件同步导航时浏览器进程崩溃的问题;现在该事件会在渲染器销毁通知完成之后才被触发。

修复了 Linux 上的一个漏洞:当无边框窗口的窗口和网页内容背景颜色不同时,窗口顶部会出现一条 1 像素的线条。

修复了 macOS Touch ID WebAuthn 提示框因缺少字符串资源导致的崩溃问题,并在 app.configureWebAuthn() 中添加 touchID.promptReason 以自定义提示文本。

修复了 macOS 上用户点击标题栏或顶部视图时出现的崩溃问题。

修复了在启用 nodeIntegration 的情况下调用 WebAssembly.compileStreaming() 或 WebAssembly.instantiateStreaming() 时渲染器崩溃的问题。

修复了 Linux 和 Windows 上调用 win.center() 时无边框窗口缩小的问题。此外,修复了在 Windows 上无边框窗口显示略微偏移的问题。

修复了 Linux 上系统主题颜色出现在无边框窗口顶部边缘的问题。

修复了在禁用上下文隔离时,ESM 预加载脚本中进程及其他 Node 全局变量未定义的问题。

修复了在某些 Wayland 环境下点击最大化按钮会导致窗口逐渐缩小的问题。

修复了在 Windows 上应用约束或切换可调整大小后,无边框窗口可能缩小的问题。

修复了“切换开发者工具”菜单项在 BaseWindow 下无法正确工作的问题。

修复了通知关闭时出现崩溃的问题。

修复了在 Wayland Linux 上 desktopCapturer 缩略图生成以及过早的门户超时问题。

修复了由于 v8 头文件中未定义 msvc 内置函数而导致原生附加组件编译失败的问题。

修复了在 tsx 导入转译环境下运行的问题。#51947(也包含在 42、43 中)修复了在脚本修改后未改变文件大小的情况下,沙盒预加载脚本仍运行旧版本缓存的问题。

修复了在独立的 DevTools 窗口中上下文菜单的行为,使其聚焦于被检查页面的窗口而非 DevTools 窗口。

修复了 titleBarOverlay.color 被设置为 rgba(0,0,0,0) 时回退到默认框架颜色的问题。

改进了 Windows 上无边框窗口外部调整尺寸区域的位置和缩放。

使“重新加载”菜单项能够与 BaseWindow 兼容。

从沙盒 iframe 内部链接打开的 Windows 现在会继承 iframe 的沙盒限制,除非设置了 allow-popups-to-escape-sandbox。

其他变更

在 macOS 构建中启用 ThinLTO。

修复了 Linux 上无边框窗口运行时阴影的切换功能。

在 Linux 上的窗口控制覆盖层中添加对系统配置按钮布局的支持。

展开内容

网友评论

0人参与,0条评论
  • 评论需审核后才能显示

同类排行