首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Electron 9.0.0发布!带来三项重大改进,不再支持Electron 6

#22336 这是一项持续性工作,针对未来一个需求,即渲染器进程中加载原生 Node 模块应为 N-API 或 Context Aware 之一。...在 Electron 9.0 ,旧序列化算法已被移除,现在,发送这一类不可序列化对象将出现“object could not be cloned(无法克隆对象)”错误。...#23447 BrowserWindow API 更改: 添加了对 BrowserWindow 上某些 getter/setter 对属性访问支持。...另请参阅我们版本控制文档,获取有关 Electron 版本控制更多细节: https://electronjs.org/docs/tutorial/electron-versioning 关于未来...将 contextIsolation 默认值从 false 更改为 true(从 Electron 10 开始) 如果没有 contextIsolation,在渲染器进程运行任何代码都可以很容易地进入

1.8K10

浅谈electron

官网: https://www.electronjs.org/ 使用 JavaScript,HTML 和 CSS 构建跨平台桌面应用程序 Electron相当于一个浏览器外壳,可以把网页程序嵌入到壳里面...Electron 每个网页都在自己进程运行,称为渲染器进程 (renderer process)。 在正常浏览器,网页通常运行在沙盒封装化环境,并且不允许访问本机资源。...每个渲染进程是独立,它只关心它所运行页面。 主进程与渲染进程区别 主进程使用 BrowserWindow 实例创建网页。每个 BrowserWindow 实例都在自己渲染进程运行。...当一个 BrowserWindow 实例被销毁后,相应渲染进程也会被终止。 主进程管理所有页面和与之对应渲染进程。每个渲染进程都是相互独立,并且只关心他们自己网页。...Electron 窗口是使用 BrowserWindow 类型创建一个实例, 它只能在主进程中使用,如下所示: const { BrowserWindow } = require('electron

2.1K20
您找到你想要的搜索结果了吗?
是的
没有找到

sandbox | Electron 安全

0x01 简介 大家好,今天跟大家讨论内容是 sandbox, sandbox 是一项 Chromium 功能,它使用操作系统来显著地限制渲染器进程可以访问内容,在 Electron ,限制方面还要包括...Node.js 能力 这篇文章内容很重要,因为它修正了我们之前 nodeIntegration、contextIsolation、Preload 等内容错误,所以请大家至少把总结章节看完 https...,它可以给任意 C/C++ 应用程序使用,它作为一个 C++ 库,可以在调用后开始保护应用程序,可以创建沙盒进程,这是一种在非常限制环境执行进程。...沙盒进程可以自由使用唯一资源是 CPU 周期和内存。例如,沙盒进程无法写入磁盘或显示自己窗口。他们究竟能做什么是由一个明确策略控制。 Chromium 渲染器是沙盒进程。...脚本来说,它属于是渲染进程一部分,但沙盒化后仍然可以使用部分 Node.js API ,毕竟它要负责渲染器进程和主进程之间通信, Electron 官方给 Preload 脚本提供了一个 require

16010

预加载脚本 | Electron 安全

预加载脚本Node.js https://www.electronjs.org/zh/docs/latest/tutorial/tutorial-preload 预加载脚本意义在于完成主进程和渲染进程之间联络...,因此重要逻辑不应该在预加载脚本中进行,也不应该赋予其过于繁重责任,完成主进程与渲染进程之间通信,将通信结果传递给另一方才是它实际意义,通过暴露方法使这种固定逻辑可以被渲染进程调用 因此预加载脚本在渲染器加载网页之前注入...process https://www.electronjs.org/zh/docs/latest/api/process 这个模块用来处理对象扩展,官方案例获取 Electron、Node.js...,封装成了一个函数,这也就意味着每个新功能,如果需要主进程参与可能都会创建不止一个新函数 如果开发者直接将 ipcRenderer 或 ipcRenderer.invoke 这种 API或非必要函数直接暴露给渲染进程...,但是有些泄漏可能是不容易发现,例如有几个函数只是给 Preload 自己使用,但是不小心暴露给了渲染进程函数是给自己写渲染进程使用,结果同时暴露给了 iframe 这种嵌入内容等 预加载脚本是一个很好代码审计切入点

12710

contextIsolation | Electron 安全

进程可以通过 BrowserWindow 创建窗口,即渲染器进程 渲染器进程 每个 Electron 应用都会为每个打开 BrowserWindow ( 与每个网页嵌入 ) 生成一个单独渲染器进程...恰如其名,渲染器负责渲染网页内容。所以实际上,运行于渲染器进程代码是须遵照网页标准 (至少就目前使用 Chromium 而言是如此) 。...为了在渲染器中直接包含 NPM 模块,您必须使用与在 web 开发时相同打包工具 (例如 webpack 或 parcel) Preload 脚本 预加载(preload)脚本包含了那些执行于渲染器进程...预加载脚本可以在 BrowserWindow 构造方法 webPreferences 选项里被附加到主进程。...,所以这里修改应该是 execa 过程调用 join 和 test,通过修改函数返回值,成功绕过安全检查,执行我们想要程序文件 calc 现在 PoC 有了,如何放到页面执行呢?

18210

electron Dialog模块

dialog 模块是主进程模块,它允许我们在 Electron 应用程序创建各种类型对话框,包括警告框、信息框、文件选择框等。这些对话框可用于与用户交互,获取输入、展示消息、选择文件等操作。...一般会在渲染进程想主进程发送信息,然后弹出消息框,这里为了代码演示方便,直接写到主进程了 const { app, BrowserWindow, dialog } = require('electron..., buttons: ['确定'] }); }) dialog.showMessageBox: 这是一个异步方法,不会阻塞主线程,而是通过 Promise 或回调函数来处理用户响应...各系统之间差异请参考文档:https://www.electronjs.org/zh/docs/latest/api/dialog#dialogshowmessageboxbrowserwindow-options...错误框 (ErrorBox) 错误框用于显示一个错误消息,使用dialog.showErrorBox() dialog.showErrorBox('发生错误', '发生了一个错误!')

31210

Electron入门教程2 ——进程模型

✧ 为什么不是单个进程? Web浏览器是非常复杂应用程序。除了显示网页内容主要功能外,它们还有许多次要职责,比如管理多个窗口(或标签)和加载第三方扩展。...主进程运行在Node.js环境,这意味着它有能力要求模块并使用所有Node.jsapi。 主进程主要目的是使用BrowserWindow模块创建和管理应用程序窗口。...= require('path') // 创建一个createWindow()函数,用于将index.html加载到新BrowserWindow实例 const createWindow = ()...✧ 渲染进程 每个Electron应用程序为每个打开BrowserWindow(和每个web嵌入)生成一个单独渲染进程。顾名思义,渲染器负责渲染网页内容。...这些脚本在呈现器上下文中运行,但通过访问Node.js api被授予了更多特权。预加载脚本可以在BrowserWindow构造函数webPreferences选项附加到主进程

89150

Electron框架 介绍

这个文件控制了主进程,它运行在一个完整Node.js环境,负责控制您应用生命周期,显示原生界面,执行特殊操作并管理渲染器进程(稍后详细介绍)。...然而,你不能直接在主进程编辑DOM,因为它无法访问渲染器 文档 上下文。 它们存在于完全不同进程! 注意:如果您需要更深入地了解Electron进程,请参阅 进程模型 文档。...要将此脚本附加到渲染器流程,请在你现有的 BrowserWindow 构造器中将路径预加载脚本传入 webPreferences.preload 选项。...在此脚本, 我们使用 Electron app 和 BrowserWindow 模块来创建一个浏览器窗口,在一个单独进程(渲染器)显示网页内容。...为了访问渲染器Node.js某些功能,我们在 BrowserWindow 构造函数上附加了一个预加载脚本。 3.

44100

electron桌面端Dooring搭建实战

如果大家有更好方案, 可以随时和我讨论. dooring-electron架构介绍 熟悉Electron朋友也许知道, Electron继承了来自 Chromium 进程架构,这使得Electron...我们可以控制两种类型进程:主进程渲染器。 每个 Electron 应用都有一个单一进程,作为应用程序入口。主进程在 Node 环境运行,我们可以使用所有 Node 能力。...那么主进程我们可以做些什么呢? 主进程主要目的是使用 BrowserWindow 模块创建和管理应用程序窗口。...BrowserWindow每个实例创建一个应用程序窗口,且在单独渲染器进程中加载一个网页。我们可从主进程用 window webContent 对象与网页内容进行交互。...有了以上基础, 我画了一张dooring-electron 简单架构图方便大家理解: 如果相对electron有更多直观理解, 也可以参考其官网: https://www.electronjs.org

1K50

从零使用electron搭建桌面端Dooring

如果大家有更好方案, 可以随时和我讨论. dooring-electron架构介绍 熟悉Electron朋友也许知道, Electron继承了来自 Chromium 进程架构,这使得Electron...我们可以控制两种类型进程:主进程渲染器。 每个 Electron 应用都有一个单一进程,作为应用程序入口。主进程在 Node 环境运行,我们可以使用所有 Node 能力。...那么主进程我们可以做些什么呢? 主进程主要目的是使用 BrowserWindow 模块创建和管理应用程序窗口。...BrowserWindow每个实例创建一个应用程序窗口,且在单独渲染器进程中加载一个网页。我们可从主进程用 window webContent 对象与网页内容进行交互。...有了以上基础, 我画了一张dooring-electron 简单架构图方便大家理解: 如果相对electron有更多直观理解, 也可以参考其官网: https://www.electronjs.org

1.5K30

基于electron快速将任意网站打包成跨平台桌面端软件

相关阅读: 从零使用electron搭建桌面端可视化编辑器Dooring electron一些知识 熟悉Electron朋友也许知道, Electron继承了来自 Chromium 进程架构,这使得...我们可以控制两种类型进程:主进程渲染器。 每个 Electron 应用都有一个单一进程,作为应用程序入口。主进程在 Node 环境运行,我们可以使用所有 Node 能力。...那么主进程我们可以做些什么呢? 主进程主要目的是使用 BrowserWindow 模块创建和管理应用程序窗口。...BrowserWindow每个实例创建一个应用程序窗口,且在单独渲染器进程中加载一个网页。我们可从主进程用 window webContent 对象与网页内容进行交互。...有了以上基础, 我画了一张dooring-electron 简单架构图方便大家理解: 想对electron有更多直观理解, 也可以参考其官网: https://www.electronjs.org/

39410

nodeIntegrationInSubFrames | Electron 安全

,点击文章,会出现一个新窗口来显示文章内容,而不是在原本窗口呢,这样原本窗口可以继续聊天等 https://www.electronjs.org/zh/docs/latest/api/browser-window...在之前一些版本,似乎子窗口会继承父窗口一些配置,但后来主要是为了生命周期等,简单来说,我把父窗口关了,子窗口也会被关闭或其他设置 该参数要在父窗口初始化是配置,而不是子窗口 0x03 测试 iframe...,看起来官方文档描述 child window 并不是官方文档其他部分 child window https://www.electronjs.org/docs/latest/api/browser-window...0x05 探索可能子窗口 既然子窗口不是指主进程创建窗口之间父子关系,那么和 iframe 比较类似的应该就是 和 WebContentsView 了,还有 HTML .../') 我们尝试在 baseWindow 添加两个 WebContentsView,看看 WebContentsView 行为是不是受 baseWindow nodeIntegrationInSubFrames

11710

用JS开发跨平台桌面应用,从原理到实践

每个Electron web页面运行在它自己渲染进程。 主进程使用 BrowserWindow 实例创建页面。 每个 BrowserWindow 实例都在自己渲染进程里运行页面。...但实际上,我们在调用远程对象方法、函数或者通过远程构造函数创建一个新对象,实际上都是在发送一个同步进程间消息。 在上面通过 remote 模块调用 dialog 例子里。...在BrowserWindow构造参数,将frame设置为false可以指定窗口为无边框窗口,将工具栏隐藏后,就会产生两个问题: 1.窗口控制按钮(最小化、全屏、关闭按钮)会被隐藏 2.无法拖拽移动窗口...,而不是尝试手动实现click函数行为。...print第二个参数callback是用于判断打印任务是否发出回调,而不是打印任务完成后回调。所以一般打印任务发出,回调函数即会调用并返回参数true。

6.9K50

第二章 你第首个Electron应用 | Electron in Action(中译)

Electron不是一个框架——它不提供任何框架,也没有关于如何构造应用程序或命名文件严格规则,这些选择都留给了我们这些开发者。...主进程可以使用BrowserWindow创建多个渲染器进程。...根据标准JavaScript约定,这通常意味着我们用new关键字将其调用为构造函数。我们可以使用这个构造函数创建尽可能多渲染器进程,只要我们喜欢,或者我们计算机可以处理。...所有BrowserWindow实例都有一个web content属性,该属性具有几个有用特性,比如将HTML文件加载到渲染器进程窗口中、从主进程渲染器进程发送消息、将页面打印为PDF或打印机等等。...图2.7 在渲染器进程上下文中,BrowserWindow执行JavaScript。

4.6K30

nodeIntegrationInWorker | Electron 安全

我看我像是 Worker ,但是这里说是 Web Worker Web Worker 是一项 HTML5 提出技术,它允许在Web应用程序创建后台线程,以实现JavaScript多线程处理能力。...Web Worker 简介 一个 worker 是使用一个构造函数创建一个对象(例如 Worker())运行一个命名 JavaScript 文件 这个文件包含将在 worker 线程运行代码;...因此,在 Worker 内通过 window 获取全局作用域(而不是self)将返回错误 Worker 分为两类 专用 Worker 一对一关联,即一个 Worker 服务于一个主线程,由创建它脚本独享...主线程与 Worker 通信 这有点像 Electron 进程和渲染进程通信了。...错误处理 为确保程序健壮性,应在主线程监听 Worker error 事件以处理 Worker 执行过程错误 myWorker.addEventListener('error', function

11710
领券