跳至主要内容

Electron 3.0.0

·阅读时间:4 分钟

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


发布流程

在我们进行 v3.0.0 开发时,我们努力通过规范逐步测试版本的反馈进度来更经验性地定义稳定版本的标准。 v3.0.0 的发布离不开我们 应用程序反馈计划 合作伙伴的支持,他们在测试周期中提供了早期测试和反馈。 感谢 Atlassian、Atom、Microsoft Teams、Oculus、OpenFin、Slack、Symphony、VS Code 以及其他计划成员的辛勤工作。 如果您想参与未来的测试版,请通过邮件联系我们 [email protected]

更改/新功能

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 顺序移动到顶部
  • [#13110] feat: TextField 和 Button API
  • [#13068] feat: 用于动态日志控制的 netLog API
  • [#13539] feat: 在沙箱渲染器中启用 webview
  • [#14118] feat: fs.readSync 现在适用于大型文件
  • [#14031] feat: node fs 包装器,使 fs.realpathSync.nativefs.realpath.native 可用

破坏性 API 更改

  • [#12362] feat: 更新菜单项顺序控制
  • [#13050] refactor: 移除文档中已弃用的 API
    • 有关更多详细信息,请参见 文档
  • [#12477] refactor: 移除 did-get-response-detailsdid-get-redirect-request 事件
  • [#12655] feat: 默认情况下禁用拖放导航
  • [#12993] feat: 必须使用 electron npm 模块,Node v4.x 或更高版本
  • [#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: 将应用程序命令 media-play_pause 重命名为 media-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] 修复:fs.statSyncNoException 抛出异常的问题
  • [#13476, #13452] 修复:使用 jQuery 加载网站时崩溃
  • [#14092] 修复:net::ClientSocketHandle 析构函数中的崩溃
  • [#14453] 修复:立即通知焦点变化,而不是在下一次心跳

MacOS

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

Linux

  • [#12507] 修复:BrowserWindow.focus() 用于离屏窗口

其他说明

  • PDF 查看器目前无法正常工作,但正在开发中,很快就会恢复正常
  • TextFieldButton API 处于实验阶段,因此默认情况下处于关闭状态
    • 它们可以使用 enable_view_api 构建标志启用

下一步

Electron 团队将继续努力定义我们的流程,以便更快速、更平滑地升级,最终我们的目标是与 Chromium、Node 和 V8 的开发节奏保持一致。