Categories
程式開發

Electron 8多个版本发布:引入调用栈日志和可选的HTTP解析选项


最近发布的Electron 8.0、8.1和8.2做出了重大改进。这些版本的亮点包括:提升了主进程和渲染进程之间通信的性能、对调用栈更好的控制、在打包的Electron应用程序中添加了HTTP解析选项,以及用于提升会话Cookie存储安全性的新标记useSessionCookies。

Electron 8.0修改了package.json主脚本和页面脚本之间的进程间通信。V8的序列化结构克隆算法减少了进程间通信所需的时间,而且不会影响两个进程之间的消息延迟。

Electron 8.0还增加了“–enable-api-filter-logging”命令行开关,以便更好地控制调用栈。这个命令可以开启desktopCapturerremote API的调用栈日志。

Electron 8.0还增加了一个timeoutType属性,可以用来控制Linux和Windows系统通知的持续时间。新API session.downloadURL()取代了webContents.downloadURL(),在通过页面origin来触发下载时可避免做安全检查。

在以前,开发者可以在macOS浏览器窗口标题栏上自定义设定红绿灯的位置。在Electron 8.1,开发者可以通过一对API动态地设置这个属性。

Electron 8多个版本发布:引入调用栈日志和可选的HTTP解析选项 1

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 8多个版本发布:引入调用栈日志和可选的HTTP解析选项 2

在最近发布的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多个版本发布:引入调用栈日志和可选的HTTP解析选项 3

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