跳转到主要内容

Electron 3.0.0

·6 分钟阅读

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


发布流程

在进行 v3.0.0 的开发时,我们力求通过正式化渐进式 Beta 版本的反馈流程,更实证地定义稳定版本的标准。没有我们的 App Feedback Program 合作伙伴的早期测试和反馈,v3.0.0 将无法实现。感谢 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] feat: app.isPackaged
  • [#12652] feat: app.whenReady()
  • [#13183] feat: process.getHeapStatistics()
  • [#12485] feat: win.moveTop() 将窗口 z-order 移动到顶部
  • [#13110] feat: TextField 和 Button APIs
  • [#13068] feat: netLog API 用于动态日志控制
  • [#13539] feat: 启用 sandbox renderer 中的 webview
  • [#14118] feat: fs.readSync 现在可以处理大型文件
  • [#14031] feat: node fs wrappers 使 fs.realpathSync.nativefs.realpath.native 可用

破坏性 API 变更

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

macOS

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

Windows

  • [#12879] feat: 添加 DIP 到/从屏幕坐标的转换

请注意: 在运行此版本后切换到旧版本的 Electron 需要清除您的用户数据目录,以避免旧版本崩溃。您可以通过运行 console.log(app.getPath("userData")) 获取用户数据目录,或参阅 文档 以获取更多详细信息。

错误修复

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

MacOS

  • [#13220] fix: 允许在 <input file="type"> 打开文件对话框中选择捆绑包的问题
  • [#12404] fix: 使用异步对话框时阻塞主进程的问题
  • [#12043] fix: 上下文菜单点击回调
  • [#12527] fix: 重用触摸栏项目时的事件泄漏
  • [#12352] fix: 托盘标题崩溃
  • [#12327] fix: 非可拖动区域
  • [#12809] fix: 防止菜单在打开时更新
  • [#13162] fix: 托盘图标边界不允许负值
  • [#13085] fix: 托盘标题在突出显示时未反转
  • [#12196] fix: enable_run_as_node==false 时的 Mac 构建
  • [#12157] fix: 带有 vibrancy 的无边框窗口上的其他问题
  • [#13326] fix: 在调用 app.removeAsDefaultProtocolClient 后将 Mac 协议设置为 none
  • [#13530] fix: MAS 构建中不正确地使用私有 API
  • [#13517] fix: tray.setContextMenu 崩溃
  • [#14205] fix: 按下 Esc 键时,即使设置了 defaultId,也能关闭对话框

Linux

  • [#12507] fix: 屏幕外窗口的 BrowserWindow.focus()

其他说明

  • PDF 查看器目前无法工作,但我们正在积极修复,并将尽快恢复其功能。
  • TextFieldButton API 仍处于实验阶段,因此默认关闭。
    • 可以通过 enable_view_api 构建标志启用它们。

下一步计划

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