Electron 3.0.0
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.native和fs.realpath.native可用
重大 API 更改
🌐 Breaking API changes
- [#12362] 功能:更新菜单项排序控制
- [#13050] 重构:移除了已记录的弃用 API
- 查看更多详情请参阅文档
- [#12477] 重构:移除了
did-get-response-details和did-get-redirect-request事件 - [#12655] 功能:默认在拖放时禁用导航
- [#12993] 功能:需要 Node
v4.x或更高版本才能使用electronnpm 模块 - [#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 查看器目前无法运行,但正在改进中,很快就会恢复运行。
TextField和ButtonAPI 是实验性的,因此默认是关闭的- 它们可以通过
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.