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

宝安品牌设计公司白云百度seo公司

宝安品牌设计公司,白云百度seo公司,不需要备案如何做网站,拼多多网上购物商城每个页面程序通过渲染和主进程通信,主进程根据需求调用Native Api来实现功能。 实际,每个页面和主程序通信时,需要建个桥梁来管理它们的通信,preload.js(自己创建),来管理实现通信。 ----创建preload.js定义桥梁js&a…

每个页面程序通过渲染和主进程通信,主进程根据需求调用Native Api来实现功能。

实际,每个页面和主程序通信时,需要建个桥梁来管理它们的通信,preload.js(自己创建),来管理实现通信

----创建preload.js定义桥梁js:

----关于主程序与渲染层的通信:

写入/传入:send->on   读取:invoke->handle   (预加载脚本 / 桥梁->主进程)

详细解析:
  1. send 和 on 的关系(主进程 <---> 渲染进程):        简易通信不需要返回值
    • send 是发送消息的动作。
    • on 是接收消息的动作。
    • 渲染进程通过 ipcRenderer.send 发送消息,主进程通过 ipcMain.on 接收消息。反之,主进程也可以通过 event.sender.send 向渲染进程发送消息,渲染进程通过 ipcRenderer.on 接收。
  2. invoke 和 handle 的关系(渲染进程 ---> 主进程): 处理异步操作,有返回值        
    • invoke 是发送请求并期望响应的动作。
    • handle 是处理请求并返回响应的动作。
    • 渲染进程通过 ipcRenderer.invoke 发送请求,主进程通过 ipcMain.handle 处理请求并返回结果
 总结:
  • send/on:适用于简单的事件驱动通信,不需要返回值。
  • invoke/handle:适用于需要返回值或处理异步操作的场景,更加现代化和灵活
 main.js(主程序)里的代码:
const {app, BrowserWindow,ipcMain} = require('electron')
const path = require('path')
const fs = require('fs')//写入文件
function writeFile(_, data) {fs.writeFileSync('D:/hello.txt', data)
}
//读取文件
function readFile() {const res = fs.readFileSync("D:/hello.txt").toString()return res
}function createWindow() {//当app准备好后,执行createWindow创建窗口const win = new BrowserWindow({width: 800,//窗口宽度height: 600,//窗口高度autoHideMenuBar: true,//自动隐藏菜单档alwaysOnTop: true,//置顶webPreferences: {  //在main.js中定义preload.js为桥梁preload: path.resolve(__dirname, './preload.js')}})ipcMain.on('file-save', writeFile)ipcMain.handle('file-read', readFile)//引入页面win.loadFile('./pages/index/index.html')win.openDevTools()  //自动打开调试窗口console.log("main.js里的main.js")
}app.on('ready', () => {createWindow()//兼容核心代码1app.on('activate', () => {if (BrowserWindow.getAllWindows().length === 0) createWindow()})})
preload.js(桥梁)里的代码 :
const {contextBridge, ipcRenderer} = require('electron')
contextBridge.exposeInMainWorld('myAPI', {version: process.version,saveFile: (data) => {ipcRenderer.send('file-save', data)},readFile() {//返回的是一个primise的返回值return ipcRenderer.invoke('file-read')}
})
render.js(渲染)里的代码:
const btn1 = document.getElementById("btn1")
const btn2 = document.getElementById("btn2")
const btn3 = document.getElementById("btn3")
const input = document.getElementById("inp")
btn1.onclick = () => {alert(myAPI.version)
}
btn2.onclick = () => {myAPI.saveFile(input.value)
}
btn3.onclick = async() => {const res = await myAPI.readFile()alert(res)
}
html的代码:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'"><title>这里是index页面</title>
</head><body>
<h1>欢迎学习Electron开发!!!</h1>
<button id="btn1">点我</button>
<hr/>
<input type="text" id="inp"/>
<button id="btn2">向D盘写入hello.txt</button>
<hr>
<button id="btn3">读取hello.txt的内容</button>
</body><script type="text/javascript" src="./render.js"></script>
</html>

包结构:
http://www.dtcms.com/wzjs/387828.html

相关文章:

  • 网站建设注册小程序网络营销的优势包括
  • 东莞凤岗网站建设制作百度新闻头条
  • 做爰视频高潮免费网站高清视频线转换线
  • 中山网站模板营销策划方案
  • 免费样机素材网站足球排名世界排名
  • 做网站一条龙网推是干什么的
  • 如何建立自己免费网站百度搜索关键词指数
  • 百度seo优化网站怎么做武汉seo公司哪家专业
  • 安远做网站深圳优化公司哪家好
  • 如何做全景网站百度空间登录入口
  • 网络推广员要怎么做搜索引擎优化作业
  • 资源网站优化排名济南网站设计
  • 嘉兴网站建设解决方案网站链接查询
  • 做网站简历怎么写net的网站建设
  • 怎么在网站后台加框框网站备案查询工信部
  • 网站设计基本流程百度竞价包年推广公司
  • 公司网站建设模板seo网站关键词优化
  • 广州哪些做网站的公司临沂seo网站管理
  • 工业产品设计包括哪些安徽网络优化公司排名
  • 南宁微网站开发百度账号找回
  • 重庆网站建设制作公司哪些平台可以发布推广信息
  • 深圳网站制作哪家好网站seo资讯
  • 网站上banner怎么做百度提升优化
  • 网站建设需准备什么郑州seo网络营销
  • 广西柳州网站制作公司网站快速排名互点软件
  • 做简单手机网站多少钱呀百度有专做优化的没
  • 西南交通建设集团有限公司网站长沙网站优化
  • 大型门户网站建设哪专业商丘网站建设公司
  • 网站空间怎么买销售人员培训课程有哪些
  • 网站代码 字体新媒体运营主要做什么