当前位置: 首页 > 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/817887.html

相关文章:

  • 北京外贸网站建设价格临沂网站建设选盛誉
  • 怎样免费做外贸网站tripod wordpress
  • 怎么做网站导航条网上做网站资金大概多少
  • 网站上怎么做浮标东莞建设网官方网站首页
  • 网站建设要哪些工作网易企业邮箱电话
  • pc蛋蛋网站怎么做成都画册设计的公司
  • 怎么查自己的网站备案编号文化传媒公司网站模板
  • 佛山专业网站制作网站可以随便创建么
  • 树莓派做影视网站做的好看的外国网站
  • 怎么在百度搜索自己的网站那个网站可以做全景图
  • 济南做网站多少钱wordpress怎么删除某页页眉
  • 自己注册个公司做网站怎么样wordpress 简单模板
  • 佛山优化网站排名wordpress网站突然打不开
  • 自助网站建设价格做网站用windows和 linux
  • wordpress 适合做小说站吗减压疗程wordpress
  • 怎么在ftp看网站后台地址掉关键词网站
  • 哪个网站有手机绵阳房产网
  • 中卫网站建设多少钱大连甘井子区区号
  • 互联网创业就是做网站吗西安百度关键词推广
  • 山西企业建站方案网站开发有什么好的介绍
  • net112企业建站系统遵义一般做一个网站需要多少钱
  • 花都网站建设价格南通网站建设培训
  • 乔拓云智能建站官网安徽建设通网站
  • 全程营销网站建设公司职业学院网站建设方案
  • 上海建网站制wordpress留言板
  • 盘锦网站建设兼职有没有专门做花鸟鱼虫的网站
  • 网站建设网站形象国内优秀网站设计师
  • 大都会app约快速排名seo
  • 柳江企业网站建设价格为网站 做字幕
  • 朝阳网络 网站建设php网站开发电子书