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

企业网站建设有哪些优势轮播 wordpress

企业网站建设有哪些优势,轮播 wordpress,学做小程序需要哪些基础,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/589761/

相关文章:

  • 常见网站颜色搭配wordpress 文章去重
  • 山西省城乡住房建设厅网站首页平面设计的基本流程是什么
  • 设计素材网站版权问题什么是网络营销的重要特点
  • 网站做360推广需要什么条件wordpress小说主题模板下载
  • 上国外网站哪个dns快个人建站公司
  • 创意网站布局网站开发前端应用程序
  • 建设网站的建设费用包括什么科目app程序
  • 标准网站建设报价wordpress 改变文件属性
  • 正规的手机网站建设儿童故事网站建设
  • 公司网站域名如何建立网站开发语言分类
  • 10个免费网站淘宝客做网站备注怎么写的
  • 科技设计网站有哪些内容seo网络优化教程
  • 网站自动适应屏幕泰安房产网信息网官网
  • 为什么公司网站打开很慢可以查企业的网站
  • saas自助建站网站开发怎么让别人看到
  • 廊坊网站排名优化公司哪家好wordpress mip模版
  • 好用的小程序推荐seo外链友情链接
  • 和萝莉做的电影网站江西省建设厅网站首页
  • php直播网站开发域名注册哪里最便宜
  • 长沙网站建设q.479185700強苏州新区做网站公司
  • 长治网站运营wordpress有一个100的缩略图
  • 游戏租号网站开发建设银行网上银行网站打不开
  • 网站的建设方法有哪些内容办网站需要备案吗
  • 免费音效素材网站佛山外贸网站建设信息
  • 网站添加关键字图片在线压缩
  • 黑别人网站制作一个简单的网站
  • 郴州市住房建设局门户网站免费数据库网站空间
  • 大航母网站建设案例网络营销中网站的目的是
  • 深一网站建设招聘重庆网站推广付费
  • 酒店网站建设工作做网站一般用什么语言