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', '帮我创建一个新的页面'
  • 相关阅读:
    OK335xS-Android mkmmc-android-ubifs.sh hacking
    OK335xS-Android pack-ubi-256M.sh hacking
    OK335xS Ubuntu 12.04.1 版本 Android 开发环境搭建
    Qt Quick Hello World hacking
    Qt QML referenceexamples attached Demo hacking
    QT 5.4.1 for Android Ubuntu QtWebView Demo
    I.MX6 working note for high efficiency
    QT 5.4.1 for Android Windows环境搭建
    mkbootimg hacking
    Generate And Play A Tone In Android hacking
  • 原文地址:https://www.cnblogs.com/onesea/p/15307594.html
Copyright © 2011-2022 走看看