Electron 3.0正式版发布,新特性详解

Electron 3.0正式版发布,新特性详解_java译者|无明编辑|覃云

Electron 团队正式发布 Electron 3 的第一个稳定版本,现在就可以从 electronjs.org 下载或通过 npm install electron@latest 安装!新版本带来了众多升级选项、问题修复和新特性。以下是新版本的详细信息。

发布流程

在开发 v3.0.0 的过程中,Electron 团队正式化渐进式 beta 版本的反馈进度,依赖经验定义稳定版本标准。App Feedback Program 的合作伙伴们在测试期间提供了早期的测试和反馈,否则 v3.0.0 可能无法按时发布。这些合作伙伴包括 Atlassian、Atom、Microsoft Teams、Oculus、OpenFin、Slack、Symphony、VS Code 等。如果用户想参与未来的测试,请发送电子邮件至 info@electronjs.org。

变更 / 新特性

Electron 工具链的几个重要部分受到重大影响,包括 Chrome v66.0.3359.181、Node v10.2.0 和 V8 v6.6.346.23。

  • app.isPackaged;

  • app.whenReady();

  • process.getHeapStatistics();

  • win.moveTop() 用于将窗口移到顶部(z-order);

  • TextField 和 Button API;

  • 用于动态日志记录控制的 netLog API;

  • 在沙箱渲染器中启用 WebView;

  • fs.readSync 现在适用于海量文件;

  • Node fs 包装器的 fs.realpathSync.native 和 fs.realpath.native 可用。

重大 API 变更

  • 菜单项顺序控制更新;

  • 移除已弃用的 API;

  • 移除了 did-get-response-details 和 did-get-redirect-request 事件;

  • 默认禁用导航拖放;

  • 要使用 electron npm 模块,要求 Node v4.x 或更高版本;

  • NativeWindow 重构;

  • menu.popup() 重构;

  • 不再使用 JSON 发送 ipcRenderer.sendSync 的结果;

  • 默认忽略跟在 URL 后面的命令行参数;

  • 将 api::Window 重命名为 api::BrowserWindow;

  • 默认关闭视觉缩放;

  • 将 App 命令 media-play_pause 重命名为 media-play-pause。

 macOS

  • 支持工作区通知;

  • tray.setIgnoreDoubleClickEvents(ignore) 用于忽略托盘双击事件;

  • macOS 上的鼠标前进功能;

  • 屏幕锁定 / 解锁事件。

 Windows

在屏幕坐标转换中添加 DIP

注意:在运行新版本后切换到旧版本的 Electron 需要清除用户数据目录,以避免旧版本崩溃。用户可以通过运行 console.log(app.getPath(“userData”)) 获取用户数据目录,或者查看文档 (https://electronjs.org/docs/api/app#appgetpathname) 以获取更多详细信息。

bug 修复

  • fs.statSyncNoException 抛出异常的问题;

  • 使用 jQuery 加载网页时发生崩溃;

  • net::ClientSocketHandle 析构函数崩溃问题;

  • 立即(而不是在下一个时间点)通知焦点变更。

 macOS

  • 允许在<input file =“type”>文件对话框中选择包的问题 ;

  • 使用异步对话框时阻塞主进程的问题;

  • 上下文菜单单击回调;

  • 重复使用 touchbar 项目时发生事件泄漏;

  • 托盘标题崩溃;

  • 不可拖动的区域;

  • 防止在菜单打开时进行更新;

  • 托盘图标边界不允许负值;

  • 高亮托盘标题时不反色;

  • 在设置 enable_run_as_node == false 时进行 Mac 构建;

  • 无边框窗口的其他问题;

  • 在调用 app.removeAsDefaultProtocolClient 后将 mac 协议设置为 none;

  • MAS 构建中私有 API 的使用不正确;

  • tray.setContextMenu 崩溃;

  • 即使设置了 defaultId,在对话框上按下 esc 键也会关闭它。

 Linux

用于屏幕外窗口的 BrowserWindow.focus()

 其他说明

PDF Viewer 目前无法正常运行,但正在解决当中,很快就可以正常运行;TextField 和 Button API 是实验性的,因此默认情况下处于关闭状态,可以使用 enable_view_api 构建标志来启用它们。

下一步

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

 英文原文

https://electronjs.org/blog/electron-3-0

 课程推荐

今天 0-24 点,《Java 核心技术 36 讲》专栏献上限时拼团价:¥49/2 人成团,9 月 24 日立即恢复原价¥68,长按识别下图二维码,点击“拼团价¥49”按钮,立即拼团!