Electron15的新特性
注意
2021 年 12 月整个月,Electron 的开发工作将会暂停,不会发布Beta或Stable版本,只有可能发修复 0 day漏洞或其他安全相关的版本,pull request、merge、issue 都不会处理。原因是 Electron 团队想休息充电一下,同时他们也提倡其他公司和项目也把十二月作为 「Quiet Month」😆
显著变化
1. Electron版本发布周期变化
从 Electron 15 开始,新的 major 版本发布周期会从 12 周改为 8 周,原因是 Chromium 计划在 Chrome 94 开始把发布周期从 6 周改为 4 周。而 Microsoft 商店政策要求 Chromium 内核的 app 使用的 Chromium 版本不能落后于最新版超过 2 个 major 版本。
2. 技术栈变化
Electron 15 使用以下版本:
- Chromium 94
- Node.js 16.5.0
- V8 9.4
V8 9.4 新特性「class 支持类静态初始化块」,更多请看《V8 9.x 新特性》
亮点特性
1. 新增 safeStorage 字符串加密 API
safeStorage 提供三个 API isEncryptionAvailable()
、encryptString(plainText)
、decryptString(encrypted)
,允许对本地存储的数据做简单的加密解密。
2. WebContents 新增 "frame-created" 事件
当前页面的 content.mainFrame
、<iframe>
或嵌套的 <iframe>
加载完后,即该页面的其中一个frame创建完成后,触发"frame-created"事件。
3. BrowserWindow 的 "will-resize" 事件新增 edge 属性
interface BrowserWindow {
on(event: 'will-resize', listener: (event: Event,
newBounds: Rectangle,
details: { edge: string }
) => void): this;
}
"will-resize"事件的这个属性能告诉我们,用户是通过拖拽窗口的哪个边缘来调整窗口大小。
edge
属性一共有7个值:bottom
, left
, right
, top-left
, top-right
, bottom-left
, bottom-right
这个属性可以让我们更好的根据窗口改变做出不同操作,比如当窗口只在垂直方向 resize 时才调整横纵比(aspect radio)。
突破性变化
Electron 15 的 Breaking Changes 很少,只有一个:
1. nativeWindowOpen: true 成为默认属性
在 Electron 15 之前,window.open()
默认使用 BrowserWindowProxy
来创建窗口并返回一个 BrowserWindowProxy
实例,但 window.open('about:blank')
并不能打开正常打开子窗口。参考:window.open。
在 Electron 15 中,nativeWindowOpen: true
现在从实验室属性,变成默认属性了。
该属性控制是否使用原生的window.open()
,为 false
时需要通过 BrowserWindowProxy
这个 wrapper 来创建窗口。
API 变化
1. dialog.showMessageBox 新增 signal 选项
dialog.showMessageBox 的 signal
选项接收一个 AbortSignal 实例,可以选择性的关闭消息框,该行为和用户关闭消息框的表现一致。在 macOS 上,signal
不适用于没有父窗口的消息框,因为这些消息框由于平台限制而同步运行。
2. Electron Fuses 支持在 macOS 上验证 asar
Electron Fuses 支持 app 在加载的 app.asar 文件时强制执行代码签名。要求最新的 asar
模块(v3.1.0及以上)。
3. Electron Fuses 支持禁用 NODE_OPTIONS 和 --inspect
Electron Fuses 支持在打包好的 app 里禁用 NODE_OPTIONS 和 --inspect 调试参数。
4. 新增 MenuItem.userAccelerator 读取 macOS 用户指定菜单快捷键
不同于已有的 MenuItem.accelerator 读取默认的菜单快捷键,MenuItem.userAccelerator 在 macOS 下可以读取用户指定的菜单快捷键。参考:macOS User Key Equivalent
延伸:
accelerator key、shortcut、hot key 都指快捷键,非要仔细区分,大致可以这么分:
- accelerator key: 一般是指在一个应用内的快捷键,通常是用户指定/修改过的快捷键。
- shortcut: 一般是指本地菜单功能或窗口功能的默认快捷键。
- hot key: 热键一般是系统层面的默认组合键。
参考:StackOverflow - What is difference between hotkey, shortcut and accelerator key?
5. 新增 app.runningUnderARM64Translation 属性检测 x64 应用运行在 ARM 设备转译环境上
app.runningUnderARM64Translation 属性支持检测当前应用是否运行在 ARM64 转译环境上,比如 macOS Rosetta、Windows WOW。当用户错误地在转译环境下运行 x64 版本,可以使用此属性来提示用户下载应用程序的 arm64 版本。
6. 新增 imageAnimationPolicy 网页设置来控制图片动画
imageAnimationPolicy
是 BrowserWindow
下 webPreferences 属性新增的网页功能设置属性。该属性可以指定网页的图片如gif等的动画效果,可选值有 animate
、animateOnce
、noAnimation
,默认为 animate
。
7. 支持通过 contextBridge 发送 blob 数据
Electron 15 支持通过 blob 对象作为参数传入 contextBridge.exposeInMainWorld API。
版本支持
从 Electron 15 开始,到 Electron 19 出来前,会从支持最新 3 个版本,改成支持最新 4 个版本。在 Electron 19 及以后,改回支持最新 3 个版本。即目前 Electron 15 版本期间,还会对 Electern 12 支持。
E15 (21年9月) | E16 (21年11月) | E17 (22年2月) | E18 (22年3月) | E19 (22年5月) |
---|---|---|---|---|
15.x.y | 16.x.y | 17.x.y | 18.x.y | 19.x.y |
14.x.y | 15.x.y | 16.x.y | 17.x.y | 18.x.y |
13.x.y | 14.x.y | 15.x.y | 16.x.y | 17.x.y |
12.x.y | 13.x.y | 14.x.y | 15.x.y | -- |
原文链接
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhcgcgbk
-
微信小程序没声音怎么办
PHP中文网 06-15 -
excel图片置于文字下方的方法
PHP中文网 06-27 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
微信人名旁边有个图标有什么用
PHP中文网 03-11 -
微信提示登录环境异常是什么意思原因
PHP中文网 04-09 -
微信获取用户openid失败怎么办
PHP中文网 03-26 -
photoshop怎么把印章抠出并放在另一张图上
PHP中文网 06-15 -
EhViewer(E绅士)最新版_ehviewer白色版彩色版_Ehviewer显示网络错误怎么办?e站进不去了怎么办
Evanpatchouli 09-19 -
Excel筛选和排序是灰色的怎么办
PHP中文网 06-22 -
photoshop蒙版画笔没反应怎么办
PHP中文网 06-24