跳到主要内容

Electron 3.0.0

·6 分钟阅读

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


发布流程

在开发 v3.0.0 的过程中,我们试图通过规范化渐进式 Beta 版本的反馈流程,更实证地定义稳定版本的标准。没有我们的 应用反馈计划 合作伙伴,v3.0.0 是不可能实现的,他们在 Beta 周期中提供了早期测试和反馈。感谢 Atlassian、Atom、Microsoft Teams、Oculus、OpenFin、Slack、Symphony、VS Code 和其他项目成员的辛勤工作。如果您希望参与未来的 Beta 测试,请发送邮件至 info@electronjs.org 与我们联系。

更改/新功能

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

  • [#12656] 功能:app.isPackaged
  • [#12652] 功能:app.whenReady()
  • [#13183] 功能:process.getHeapStatistics()
  • [#12485] 功能:win.moveTop() 用于将窗口 z-order 移至顶部
  • [#13110] 功能:TextField 和 Button API
  • [#13068] 功能:netLog API 用于动态日志控制
  • [#13539] 功能:在沙箱渲染器中启用 webview
  • [#14118] 功能:fs.readSync 现在支持大文件
  • [#14031] 功能:Node fs 包装器,以使 fs.realpathSync.nativefs.realpath.native 可用

破坏性 API 更改

  • [#12362] 功能:菜单项顺序控制的更新
  • [#13050] 重构:移除了已文档化的弃用 API
    • 有关更多详细信息,请参阅文档
  • [#12477] 重构:移除了 did-get-response-detailsdid-get-redirect-request 事件
  • [#12655] 功能:默认禁用拖放导航
  • [#12993] 功能:使用 electron npm 模块需要 Node v4.x 或更高版本
  • [#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 修复

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

MacOS

  • [#13220] 修复:允许在 <input file="type"> 打开文件对话框中选择 bundle 的问题
  • [#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] 修复:即使设置了 defaultId,在对话框上按 Esc 键现在也会关闭它

Linux

  • [#12507] 修复:BrowserWindow.focus() 对于离屏窗口的问题

其他说明

  • PDF 查看器目前无法工作,但正在修复中,很快将再次可用
  • TextFieldButton API 是实验性的,因此默认关闭
    • 它们可以通过 enable_view_api 构建标志启用

下一步

Electron 团队将继续努力定义更快速、更顺畅的升级流程,以期最终与 Chromium、Node 和 V8 的开发节奏保持同步。