最近发布的 Electron 8.0、8.1 和 8.2 做出了重大改进。这些版本的亮点包括:提升了主进程和渲染进程之间通信的性能、对调用栈更好的控制、在打包的 Electron 应用程序中添加了 HTTP 解析选项,以及用于提升会话 Cookie 存储安全性的新标记 useSessionCookies。
Electron 8.0 修改了 package.json 主脚本和页面脚本之间的进程间通信。V8 的序列化结构克隆算法减少了进程间通信所需的时间,而且不会影响两个进程之间的消息延迟。
Electron 8.0 还增加了“–enable-api-filter-logging”命令行开关,以便更好地控制调用栈。这个命令可以开启desktopCapturer和remote API 的调用栈日志。
Electron 8.0 还增加了一个 timeoutType 属性,可以用来控制 Linux 和 Windows 系统通知的持续时间。新 API session.downloadURL()取代了 webContents.downloadURL(),在通过页面 origin 来触发下载时可避免做安全检查。
在以前,开发者可以在 macOS 浏览器窗口标题栏上自定义设定红绿灯的位置。在 Electron 8.1,开发者可以通过一对 API 动态地设置这个属性。
Electron 在内部使用了 Node.js,而在 Node.js 11.5 中,默认的 HTTP 解析器被替换掉了,影响到了一些使用场景,并导致 HTTP 头部解析和有效性验证更为严格。Electron 8.1 引入了“–http-parser=parser”选项,开发者可以切换成其他 HTTP 解析器。
在之前的 Electron 版本中,audioMuted 属性对 WebViews 不起作用。webview.audioMuted = true 本来是用来关闭 WebViews 的声音的,但却触发了如下所示的警告。Electron 8.1 解决了这个问题。
在最近发布的 Electron 版本中,用于发送 HTTP/HTTPS 请求的 net 模块被设计成可以从主进程发送 fetch 风格的请求。不过这个模块缺乏安全性支持,不能像 fetch 请求那样使用 Cookie。这个局限性会让黑客和不怀好意的人直接利用 Cookie 头部里的信息。
Electron 8.2 为网络请求引入了一个新的 useSessionCookies 标记,可以像 fetch 请求那样安全地使用会话 Cookie 存储。这个新标志利用了 Chromium 的内部 Cookie 存储逻辑。
Electron 8.2 还为 Webpreferences 引入了disableDialog选项,可以像 safeDialogs 选项那样禁用对话框,并能够完全覆盖 safeDialogs 的行为。
Electron 8.2 修复了在进程间发送数组可能会发生崩溃的问题。该版本还修复了另一个问题,即修改全局 Object prototype 可能会导致 Electron 内部逻辑抛出错误。
开发者对调用栈日志记录和可替代 HTTP 解析器给予了积极的响应,不过仍然存在一些问题。setBackground 属性在 Electron 8.x 中不起作用,而且更新到最新版本后,页面渲染性能显著下降。由于 remote 模块的安全性问题,开发者希望默认情况下禁用该模块。在未来,Electron 计划移除进程模型补丁,以便获得更好的性能、安全性和可维护性。
Electron 是一个开源框架,利用了 Node.js 和 Chromium,旨在使用 JavaScript、HTML 和 CSS 来构建跨平台的桌面应用程。Electron 采用 MIT 许可。开发者可加入 Electron 的GitHub代码库成为贡献者,贡献者需要遵守 Electron 的贡献者指南和行为准则。
原文链接:
Electron 8 Releases Introduce Caller Stack Logging, HTTP Parsing Alternative
评论