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

服装网站建设公司哪家好永兴县网站建设哪个好

服装网站建设公司哪家好,永兴县网站建设哪个好,wordpress登录界面背景图片,创建网站商城Electron进程间通信 使用electron编写程序时经常遇到下面这种场景: 当用户点击一个按钮时,需要将页面输入的信息保存到本地电脑上; 或者是点击菜单时,需要页面窗口做出响应。 用户点击的按钮和窗口展示的内容是运行在渲染进程中&…

Electron进程间通信

使用electron编写程序时经常遇到下面这种场景:
当用户点击一个按钮时,需要将页面输入的信息保存到本地电脑上;
或者是点击菜单时,需要页面窗口做出响应。
用户点击的按钮和窗口展示的内容是运行在渲染进程中,而保存的操作和点击菜单是运行在主进程中的,渲染进程和主进程无法直接通信,
这是就需要使用到进程间通信(IPC)

为了实现这种通信,Electron提供了 ipcMainipcRenderer 模块。

渲染进程到主进程的通信

下面是一个简单的例子,介绍在页面输入文本信息,然后点击按钮将文本信息保存到本地电脑,然后点击查询,读取本地电脑文件并将读取的文本展示出来。

main.js

const { app, BrowserWindow, ipcMain } = require('electron')
const {join} = require("path");
const fs = require("fs");// 应用创建窗口
const createWindow = () => {const win = new BrowserWindow({width: 800,height: 600,webPreferences: {preload: join(__dirname, 'preload.js')}})win.loadFile('index.html')win.webContents.openDevTools();
}
app.whenReady().then(() => {// 处理保存文本的事件ipcMain.handle('save-text', async (event, text) => {const filePath = `./output.txt`;fs.writeFileSync(filePath, text);});// 处理查询文本的事件ipcMain.handle('query-text', async (event) => {const filePath = `./output.txt`;return fs.readFileSync(filePath, {encoding: 'utf-8'});});createWindow()
})

preload.js

const { contextBridge, ipcRenderer } = require('electron')contextBridge.exposeInMainWorld('myAPI', {saveText: (text) => ipcRenderer.invoke('save-text', text),queryText: () => ipcRenderer.invoke('query-text'),
})

index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><label>输入文本信息:<input id="input-name" type="text"></label><input id="save" type="button" value="保存"><div><input id="query" type="button" value="读取文本信息"><div id="text"></div></div><script>const saveButton = document.getElementById('save')saveButton.addEventListener('click', () => {const inputName = document.getElementById('input-name')window.myAPI.saveText(inputName.value)})const queryButton = document.getElementById('query')queryButton.addEventListener('click', async () => {const text = document.getElementById('text')text.innerHTML = await window.myAPI.queryText()})</script>
</body>
</html>

运行结果如下:
输入hello world!,点击保存,然后点击读取按钮,就会把保存的文件内容展示出来。
在这里插入图片描述

这个是渲染进程到主进程的通信,下面介绍一下主进程到渲染进程的通信。

主进程到渲染进程的通信

我们在窗口添加一个设置菜单和两个子菜单+1,-1,
点击子菜单时页面数字做出相应反馈。
main.js

const { app, BrowserWindow, Menu } = require('electron')
const {join} = require("path");// 应用创建窗口
const createWindow = () => {const win = new BrowserWindow({width: 800,height: 600,webPreferences: {preload: join(__dirname, 'preload.js')}})// 设置窗口菜单const menu = Menu.buildFromTemplate([{label: '设置',submenu: [{// 点击+1按钮时触发update-counter事件并传递参数1click: () => win.webContents.send('update-counter', 1),label: '+1'},{// 点击-1按钮时触发update-counter事件并传递参数-1click: () => win.webContents.send('update-counter', -1),label: '-1'}]}])Menu.setApplicationMenu(menu)win.loadFile('index.html')win.webContents.openDevTools();
}
app.whenReady().then(() => {createWindow()
})

preload.js


const { contextBridge, ipcRenderer } = require('electron')contextBridge.exposeInMainWorld('myAPI', {// 渲染进程监听update-counter事件handleCounter: (callback) => ipcRenderer.on('update-counter', callback)
})

index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><div>count:<span id="count">0</span></div><script>const count = document.getElementById('count')// 传入监听update-counter事件的回调函数window.myAPI.handleCounter((event, value) => {const num = Number(count.innerText)count.innerText = num + value})</script>
</body>
</html>

运行结果如下
在这里插入图片描述

以上就是electron的进程间通信,欢迎大家在评论区留言指正,相互学习

http://www.yayakq.cn/news/126775/

相关文章:

  • 株洲公司网站建设舆情网站
  • 黄冈网站推广软件视频下载网络营销方案包括哪些主要内容?
  • 查网站怎么做的如何申请成立公司
  • 广州网站建设484186合肥网站建设 八八四八
  • 福州网站排名提升fireworks8做网站
  • 建一个公司网站费用施工程找工程做哪个网站好
  • wordpress建站事项泰安网站建设平台
  • 赣州做网站的周口市住房和城市建设局网站
  • 住房与城乡建设部网站写作网站排名
  • 柳州网站推广最好的公司抚州哪里有做企业网站的公司
  • 网站管理员是什么意思河北百度代理公司
  • 网站开发一般用的字体类型深圳极速网站建设推荐
  • 黄冈网站建设效果wordpress自定义发文章界面
  • 内蒙古建设协会网站做投融资平台的网站都有哪些
  • 太仓专业网站建设酒泉如何做百度的网站
  • 企业网站查询系统官网西安活动公司
  • 免费做暧暧网站企业网站建设的优缺点
  • 西安网站公司推广汉字市城乡建设规划局官方网站
  • 鹰潭市城乡建设局网站好玩的传奇手游
  • 自己建网站详细流程展厅设计公司招聘
  • 上海网站建设置作wordpress 谷歌搜索
  • 中小企业网站建设如何百度seo发帖推广
  • 建设工程规范在哪个网站下载希爱力双效片用后感受
  • 中国摄影在线网站长春网站制作价格
  • 龙岗网站建设设计服务wordpress会员中心主题
  • 中山网站建设开发企业网络营销
  • 东莞常平汽车站时刻表淘宝客网站免费建站
  • 网站建设怎么谈wordpress cdn缓存
  • 宠物网站设计模板忻州市忻府区
  • 做网站的厂家怎么在自己电脑上建设网站