Skip to main content

Electron 3.0.0

· 7 min read

Electron 团队很高兴地宣布,Electron 3 的第一个稳定版本现已从 electronjs.org 和通过 npm install electron@latest 获取!它包含了大量的升级、修复和新功能,我们迫不及待想看看你会用它们创造出什么。以下是此次发布的详细信息,我们欢迎你在探索进程中提供反馈。

🌐 The Electron team is excited to announce that the first stable release of Electron 3 is now available from electronjs.org and via npm install electron@latest! It's jam-packed with upgrades, fixes, and new features, and we can't wait to see what you build with them. Below are details about this release, and we welcome your feedback as you explore.


发布进程

🌐 Release Process

在我们进行 v3.0.0 的开发时,我们试图通过对渐进式测试版反馈进程进行规范化,更加实证地定义稳定版本的标准。没有我们的 应用反馈计划 合作伙伴提供的早期测试和反馈,v3.0.0 就不可能实现。感谢 Atlassian、Atom、Microsoft Teams、Oculus、OpenFin、Slack、Symphony、VS Code 以及其他计划成员的努力。如果你希望参与未来的测试版,请发送邮件至 info@electronjs.org

🌐 As we undertook development of v3.0.0, we sought to more empirically define criteria for a stable release by formalizing the feedback progress for progressive beta releases. v3.0.0 would not have been possible without our App Feedback Program partners, who provided early testing and feedback during the beta cycle. Thanks to Atlassian, Atom, Microsoft Teams, Oculus, OpenFin, Slack, Symphony, VS Code, and other program members for their work. If you'd like to participate in future betas, please mail us at info@electronjs.org.

变更/新功能

🌐 Changes / New Features

对 Electron 工具链的几个重要部分进行了重大升级,包括 Chrome v66.0.3359.181、Node v10.2.0 和 V8 v6.6.346.23.

🌐 Major bumps to several important parts of Electron's toolchain, including Chrome v66.0.3359.181, Node v10.2.0, and V8 v6.6.346.23.

  • [#12656] 功能:app.isPackaged
  • [#12652] 功能:app.whenReady()
  • [#13183] 功能:process.getHeapStatistics()
  • [#12485] 功能:win.moveTop() 将窗口 Z 顺序移到最上层
  • [#13110] 功能:TextField 和 Button API
  • [#13068] 功能:用于动态日志控制的 netLog API
  • [#13539] 功能:在沙箱渲染器中启用 webview
  • [#14118] 功能:fs.readSync 现在支持大型文件
  • [#14031] 功能:节点 fs 封装,使 fs.realpathSync.nativefs.realpath.native 可用

重大 API 更改

🌐 Breaking API changes

  • [#12362] 功能:更新菜单项排序控制
  • [#13050] 重构:移除了已记录的弃用 API
    • 查看更多详情请参阅文档
  • [#12477] 重构:移除了 did-get-response-detailsdid-get-redirect-request 事件
  • [#12655] 功能:默认在拖放时禁用导航
  • [#12993] 功能:需要 Node v4.x 或更高版本才能使用 electron npm 模块
  • [#12008 #12140 #12503 #12514 #12584 #12596 #12637 #12660 #12696 #12716 #12750 #12787 #12858] 重构: NativeWindow
  • [#11968] 重构:menu.popup()
  • [#8953] 特性:不再使用 JSON 发送 ipcRenderer.sendSync 的结果
  • [#13039] 功能:默认忽略 URL 后的命令行参数
  • [#12004] 重构:将 api::Window 重命名为 api::BrowserWindow
  • [#12679] 功能:视觉缩放现在默认关闭
  • [#12408] 重构:将应用命令 media-play_pause 重命名为 media-play-pause

macOS

  • [#12093] 功能:支持工作区通知
  • [#12496] 功能:tray.setIgnoreDoubleClickEvents(ignore) 忽略托盘双击事件。
  • [#12281] 功能:macOS 上的鼠标前进功能
  • [#12714] 功能:屏幕锁定/解锁事件

Windows

  • [#12879] 功能:添加了 DIP 与屏幕坐标的转换

注意事项: 在运行此版本后切换到较旧版本的 Electron 时,你需要清除用户数据目录,以避免旧版本崩溃。你可以通过运行 console.log(app.getPath("userData")) 获取用户数据目录,或查看文档了解更多详情。

错误修复

🌐 Bug Fixes

  • [#13397] 修复:fs.statSyncNoException 抛出异常的问题
  • [#13476, #13452] 修复:使用 jquery 加载网站时崩溃
  • [#14092] 修复:net::ClientSocketHandle 析构函数中的崩溃
  • [#14453] 修复:立即通知焦点变化,而不是在下一个周期

苹果系统

🌐 MacOS

  • [#13220] 修复:解决了在 <input file="type"> 打开文件对话框中允许选择打包包的问题
  • [#12404] 修复:使用异步对话时阻塞主进程的问题
  • [#12043] 修复:右键菜单点击回调
  • [#12527] 修复:触控栏项目重用时的事件泄漏
  • [#12352] 修复:托盘标题崩溃
  • [#12327] 修复:不可拖动区域
  • [#12809] 修复:防止菜单在打开时更新
  • [#13162] 修复:托盘图标边界不允许负值
  • [#13085] 修复:托盘标题高亮时未反转
  • [#12196] 修复:当 enable_run_as_node==false 时的 Mac 构建问题
  • [#12157] 修复:无边框窗口在启用模糊效果时的额外问题
  • [#13326] 修复:在调用 app.removeAsDefaultProtocolClient 后将 MAC 协议设置为无
  • [#13530] 修复:MAS 版本中私有 API 的错误使用
  • [#13517] 修复:tray.setContextMenu 崩溃
  • [#14205] 修复:现在按下对话框的 Esc 键会关闭它,即使设置了 defaultId

Linux

  • [#12507] 修复:针对屏幕外窗口的 BrowserWindow.focus()

其他说明

🌐 Other Notes

  • PDF 查看器目前无法运行,但正在改进中,很快就会恢复运行。
  • TextFieldButton API 是实验性的,因此默认是关闭的
    • 它们可以通过 enable_view_api 构建标志启用

下一步计划

🌐 What's Next

Electron 团队将继续致力于定义我们的进程,以实现更快速、更顺畅的升级,我们力求最终与 Chromium、Node 和 V8 的开发节奏保持一致。

🌐 The Electron team continues to work on defining our processes for more rapid and smooth upgrades as we seek to ultimately maintain parity with the development cadences of Chromium, Node, and V8.