当前位置: 首页 > article >正文

6.electron之上下文隔离,预加载JS脚本

如果可以实现记得点赞分享,谢谢老铁~

Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 Electron 将 Chromium 和
Node.js 嵌入到了一个二进制文件中,因此它允许你仅需一个代码仓库,就可以撰写支持 Windows、macOS 和 Linux
的跨平台应用。

1.项目效果, 我的目的是通过在渲染线程自定义事件,然后在主线程中监听。
在这里插入图片描述
2.在渲染线程中,如果直接导入,会报错… “require is not defined” 这是因为官方为了安全性,将 electron v12.0.0 的 contextIsolation 的默认值改了。

index.tsx

const {ipcRenderer} = require("electron");

在这里插入图片描述
3. 所以不能直接在index.tsx 里面直接导入。而是需要在主进程里进行配置

const {
    app,
    BrowserWindow,
    dialog,
    ipcMain,
} = require("electron");
const path = require("path");

mainWindow = new BrowserWindow({
        width: 1200,
        height: 700,
        minWidth: 1200, // 设置窗口的最小宽度
        minHeight: 700, // 设置窗口的最小高度
        icon: __dirname + "/favicon.ico",
        webPreferences: {
            preload: path.join(__dirname, "preload.js"),
            nodeIntegration: true,
            // 关闭上下文隔离
            contextIsolation: false,
        }
    });

PS:上述代码中 将 contextIsolation: false ,关闭上下文隔离。 然后在public 下创建一个preload.js 脚本,进行预加载处理。

4.我们看看preload.js 脚本

window.ipcRenderer = require('electron').ipcRenderer;

哈哈哈哈,没错就只有一句代码,将模块赋值给全局window即可。

想要看具体实现,看下下一篇文章讲解《7.electron之渲染线程发送事件,主进程监听事件》

5.运行以下命令来构建React项目:

npm run build
```**

6.运行以下命令来启动Electron应用程序:

```powershell
npm run electron:dev

这将启动Electron应用程序,并加载React应用程序的构建文件。

7.运行以下命令来打包Electron应用程序:

npm run electron:build

收工!谢谢老铁们的点赞收藏~


http://www.kler.cn/a/231661.html

相关文章:

  • 【蓝桥杯备赛】深秋的苹果
  • 搭建Spring gateway网关微服务
  • OMV7 树莓派 tf卡安装
  • 第 14 章 -Go语言 错误处理
  • [ 网络安全介绍 3 ] 网络安全事件相关案例有哪些?
  • ONLYOFFICE8.2版本测评,团队协作的办公软件
  • Windows搭建Emby媒体库服务器,无公网IP远程访问本地影音文件
  • MySQL数据库基础与SELECT语句使用梳理
  • DC-7靶机渗透详细流程
  • 案例分享:频域与时域仿真的区别
  • 机器学习1一knn算法
  • 如何使用phpStudy搭建网站并结合内网穿透远程访问本地站点
  • @RequestBody、@RequestParam、@RequestPart使用方式和使用场景
  • 线程之间如何通信?
  • 制作jdk17+pinpoint-agent基础镜像
  • Unity类银河恶魔城学习记录4-1,4-2 Attack Logic,Collider‘s collision excepetion源代码 P54 p55
  • Rust开发WASM,浏览器运行WASM
  • 虚继承 -- 解决菱形继承问题以及无法跨继承访问
  • 【flink状态管理(四)】MemoryStateBackend的实现
  • NDK Could NOT find OpenGL (missing: OPENGL_glx_LIBRARY) Ubuntu
  • VTK 体渲染设置帧率
  • 单片机无线发射的原理剖析
  • GEE详细教程之:将Landsat8与Landsat9影像合成一个影像
  • Windows下MySQL的界面安装
  • [每日一题] 02.07 - 小鱼比可爱
  • 【射影几何13 】梅氏定理和塞瓦定理探讨