zoukankan      html  css  js  c++  java
  • 理解Electron中的主进程和渲染进程

     

    什么是主进程
    • electron项目启动的时候运行main.js的进程就是主进程
    • 一个项目有且只有一个主进程
    • 创建窗口等所有系统事件都要在主进程中进行
      简单的说就是我们的electron项目的主进程只有一个, 主进程的执行代码需要写到main.js中, 所有跟系统事件相关的代码统统都要写在这里
    什么是渲染进程
    • 我们每创建一个web页面都会创建一个渲染进程
    • 每个web页面运行在它自己的渲染进程中
    • 每个渲染进程是独立的, 它只关心它所运行的页面
      简单理解就是一个web页面一个渲染进程
    主进程和渲染进程的区别
    • 主进程通过BrowserWindow创建页面
    • 每个BrowserWindow实例都在自己的渲染进程中运行, 当BrowserWindow实例被销毁后, 相应的渲染进程也会被终止
    主进程和渲染进程怎么通信

    我们如何在一个页面打开另外一个页面?我们的思路应该是这样的

    1. 从我们第一个页面发出一个指令,也就是说从渲染进程中发出一个指令
    2. 发送指令到主进程,因为只有主进程才可以创建新的页面
      这个时候我们就需要解决主进程和渲染进程之间通信的问题,怎么通信呢?
      官方为我们提供类多种实现方式,我们常用的是使用ipcRenderer 和 ipcMain模块发送消息来解决通信问题
      ipcRenderer和ipcMain怎么发送消息?看下面示例代码
    • 主进程代码
    const { ipcMain } = require('electron')
    // 监听渲染进行发送的消息
    ipcMain.on('renderer-msg', (event, arg) => {
      console.log(arg) // prints "帮我创建一个新的页面",  
      // 执行创建页面的操作
      event.reply('main-msg', '好的');  // 给渲染进程回复消息
    })
    
    • 渲染进程代码
    const { ipcRenderer } = require('electron');
    ipcRenderer.on('main-msg', (event, arg) => {
      console.log(arg) // prints "好的"
    })
    ipcRenderer.send('renderer-msg', '帮我创建一个新的页面'
  • 相关阅读:
    [开发笔记]-使用bat命令来快速安装和卸载Service服务
    [开发笔记]-多线程异步操作如何访问HttpContext?
    [开发笔记]-Windows Service服务相关注意事项
    [开发笔记]-VS2012打开解决方案崩溃或点击项目崩溃
    Chrome 开发者工具有了设备模拟器
    Mysql查看数据库表容量大小
    golang操作mysql数据库
    golang命令和VSCode配置
    golang广度优先算法-走迷宫
    golang爬取免费代理IP
  • 原文地址:https://www.cnblogs.com/onesea/p/15307594.html
Copyright © 2011-2022 走看看