Electron 20 值得关注的变化

简介: Electron 20 值得关注的变化
编者按:近日,Electron 20.0.0 发布,并在官方博客发布文章,本文内容是语雀工程师佳心根据博客的内容整理的她认为那些值得关注的变化、新特性及相关内容。
Electron 20.0.0 博客地址:https://www.electronjs.org/zh/blog/electron-20-0

最近几个版本开始,Electron 的更新日志都有对应的中文版翻译,所以之后就不再做重复的直译,主要列举我认为那些值得关注的变化、新特性及相关内容。


Chromium 104

Node.js 16.15.0

V8 10.4


一、支持 Windows 沉浸式暗黑模式

Electron 目前支持通过设置 nativeTheme.themeSource = 'dark' 来使用暗黑模式。

但是我个人测了两台 Windows 10,并没有感受到很大的区别,还是只有 context menu  和 devtools 有暗色:

看 PR close 了 #32913,应该是要在 nativeTheme.themeSource = 'system' 支持 titlebar 匹配暗色模式的:

但是实测下来,在默认应用模式为暗时,titlebar 并没有变为暗色,还是如上图的亮色,感觉是个 bug;只有在设置「在以下区域显示主题色」勾选「标题栏」时 titlebar 颜色才改为主题色(可能是各种彩色)。

🔗 https://github.com/electron/electron/pull/34549

二、macOS 新增 panel 类型 BrowserWindow

在 macOS 上,BrowserWindow 的表现形式除了以往支持的 desktoptextured,新增了 panel 类型:

来看看这三种窗口的具体表现:

  • textured 类型:增加金属色泽的外观 (NSTexturedBackgroundWindowMask)。

  • desktop 类型:将窗口置于桌面背景级别 (kCGDesktopWindowLevel - 1),窗口不会接收焦点、键盘或鼠标事件。

  • panel 类型:窗口可以浮动在全屏应用上

🔗 https://github.com/electron/electron/pull/34665


、Renderer 默认沙盒化

在 Electron 20 之前,Renderer 的预加载脚本是默认不启用沙盒的,即可以直接在  preload.js 里使用 Node.js。

在 Electron 20 中,Renderer 默认开启沙盒化,如果不指定  nodeIntegration: truesandbox: false,将无法使用 Node.js

🔗 https://github.com/electron/electron/pull/35125


四、构建原生模块时注意依赖版本

构建原生模块时,建议 node-gyp 最小版本 8.4.0,electron-rebuild 最小版本 3.2.9。

🔗https://github.com/electron/electron/pull/35160


五、Chrome 104、103 带来的变化

获取本地字体

通过 window.queryLocalFonts() 可以获取设备的所有本地字体信息:


const pickedFonts = await window.queryLocalFonts();const fontData = pickedFonts[0];console.log(fontData.postscriptName);console.log(fontData.fullName);console.log(fontData.family);console.log(fontData.style);

HTTP 状态码 103 - Early Hints

允许浏览器在服务器还在准备响应数据的时候预加载一些其他资源:


<link as="font" crossorigin="anonymous" href="..." rel="preload"><link as="font" crossorigin="anonymous" href="..." rel="preload"><link href="https://web-dev.imgix.net" rel="preconnect">

New in Chrome 104:https://developer.chrome.com/blog/new-in-chrome-104/

New in Chrome 103:https://developer.chrome.com/blog/new-in-chrome-103/


注:语雀桌面客户端就是使用 Electron 开发的,如果你有兴趣可以下载体验:https://www.yuque.com/download
相关文章
|
12月前
|
前端开发
【React工作记录六十五】ant design子组件渲染不能及时渲染
【React工作记录六十五】ant design子组件渲染不能及时渲染
116 0
|
12月前
|
前端开发 数据处理
【React工作记录五十五】子组件的数据无法实时渲染
【React工作记录五十五】子组件的数据无法实时渲染
76 0
|
12月前
|
前端开发
【React工作记录四十三】ant design From实时刷新
【React工作记录四十三】ant design From实时刷新
119 0
|
算法 JavaScript 索引
Vuejs设计与实现 —— 渲染器核心 Diff 算法(上)
Vuejs设计与实现 —— 渲染器核心 Diff 算法
44 0
|
存储 算法 JavaScript
Vuejs设计与实现 —— 渲染器核心 Diff 算法(下)
Vuejs设计与实现 —— 渲染器核心 Diff 算法
62 0
|
JavaScript 算法 前端开发
Vuejs设计与实现 —— 渲染器核心:挂载与更新
Vuejs设计与实现 —— 渲染器核心:挂载与更新
106 0
|
应用服务中间件 API nginx
分享下我近期研究, Electron 的自动更新机制
Electron的自动更新机制并不算复杂,但团队内似乎没有相关文档,正好笔者搞明白了,就简单说明一下,以MacOS的arm平台为例说明,具体代码可以参考Postcat的相关配置,本篇文章就不以具体代码举例了。
分享下我近期研究, Electron 的自动更新机制
electron+vue音乐集成软件
上下曲播放有很多方法,可已根据当前播放的URL和列表数组里去遍历和这一个URL相等的那个数组的索引,当点击下一曲时,把那个索引加一,然后获取到这个数组的当前加一的索引,上一曲也是一样,不过这样有个问题,就是点击下一曲时,如有15个歌曲的数组 我判断当前的索引加一小于15
electron+vue音乐集成软件
|
存储 缓存 监控
基于vue + electron创造一个随心开发组件的跨端桌面应用(持续更新~)(一)
下面我会从这个应用的一些功能的实现细节讲起,包括初始化,托盘菜单,开机自启,存储用户数据,GitHub信息健康,翻页时钟,打包配置除此之外还有还有项目的使用方式与功能介绍,希望可以给掘友带来帮助。
193 0
|
存储 监控 JavaScript
基于vue + electron创造一个随心开发组件的跨端桌面应用(持续更新~)(二)
下面我会从这个应用的一些功能的实现细节讲起,包括初始化,托盘菜单,开机自启,存储用户数据,GitHub信息健康,翻页时钟,打包配置除此之外还有还有项目的使用方式与功能介绍,希望可以给掘友带来帮助。
283 0
基于vue + electron创造一个随心开发组件的跨端桌面应用(持续更新~)(二)