微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Electron学习笔记

Electron学习笔记

主进程 - Main Preocess

  • 可以使用和系统对接的Electron API -创建菜单,长传文件
  • 创建 渲染进程 - Renderer Process
  • 全面支持 Node.js
  • 只有一个,作为整个程序的入口点

渲染进程 - Renderer Prodess

  • 可以有多个,每个对应一个窗口
  • 每个都是一个单独的进程
  • 全面支持Node.js 和 DOM API
  • 可以使用一部分Electron 提供的API

进程之间的通讯方式

  • 使用IPC在进程之间进行通讯

Domo

main.js

const {app ,browserWindow , ipcMain} = require('electron')

app.on('ready',() => {
	// 创建主窗口
	const mainWindow = new browserWindow({
		width: 800,
	    height: 600,
        webPreferences: {
        	// 可以使用node.js 的 API
        	nodeIntegration: true
        }
    })
    // 调用文件
    mainWindow.loadFile('index.html')
    // 第一个是事件对象(复杂结构),第二个接受的事件数据
    ipcMain.on('message',(e,arg)=>{
    	console.log(arg)
    	// e.sender -触发该事件的发送者 === mainWindow
    	e.sender.send('reply', 'hello from main') 
    })

	// 创建子窗口
	const secondWindow = new browserWindow({
		width: 800,
	    height: 600,
        webPreferences: {
        	// 可以使用node.js 的 API
        	nodeIntegration: true
        },
        parent:mainWindow  // 依赖父窗口,当父窗口关闭,子窗口也关闭
    })
    // 调用文件
    secondWindow.loadFile('second.html')
})

renderer.js

const { ipcRenderer } = require('electron')

window.addEventListener('DOMContentLoaded', () => {
  ipcRenderer.send('message', 'hello from renderer') // 事件名称,事件数据
  ipcRenderer.on('reply', (e, arg) => {
    document.getElementById('message').innerHTML = arg;
  })
})

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐