Electron本地文件
前言
做本地应用程序的时候经常需要用到nodeJS来保存数据
这时候就涉及到了主进程和渲染进程的数据传递了
Electron读写本地文件其实和nodeJs差不多,只是中间加了一层API
废话不多说直接上内容
读取文件
首先按需导入
ipcMain模块注册事件(注意:ipcMain里on注册事件的名字可以自定义),调用时跟渲染进程的调用的名称一样即可
渲染进程向主线程发送请求时也必须回应,不然数据请求不过来
主进程代码:
// 主进程
import { app, BrowserWindow, Menu,ipcMain } from 'electron';
ipcMain.on('asynchronous-message', function(event, arg) {
// arg是从渲染进程返回来的数据
console.log(arg);
// 这里是传给渲染进程的数据
fs.readFile(path.join(__dirname,"../renderer/data/data.json"),"utf8",(err,data)=>{
if(err){
event.sender.send('asynchronous-reply', "读取失败");
}else{
event.sender.send('asynchronous-reply', data);
}
})
});
渲染进程代码
// 渲染进程
const ipcRenderer = require("electron").ipcRenderer;
// 这里是接收主进程传递过来的参数,这里的on要对应主进程send过来的名字
ipcRenderer.on("asynchronous-reply", function(event, arg) {
// 这里的arg是从主线程请求的数据
console.log("render+" + arg);
});
// 这里的会传递回给主进程,这里的第一个参数需要对应着主进程里on注册事件的名字一致
ipcRenderer.send("asynchronous-message", "传递回去ping");
写入文件
写入文件其实跟读文件是一样的
主进程代码:
// 主进程
import { app, BrowserWindow, Menu,ipcMain } from 'electron';
ipcMain.on('asynchronous-message', function(event, arg) {
// arg是从渲染进程返回来的数据
fs.writeFile(path.join(__dirname, "../renderer/data/data.json"),JSON.stringify(arg), "utf8",(err)=>{
if(err){
event.sender.send('asynchronous-reply', "写入失败");
}else {
event.sender.send('asynchronous-reply', "写入成功");
}
})
// 通过event.sender.send给渲染进程传递数据
});
渲染进程代码
// 渲染进程
const ipcRenderer = require("electron").ipcRenderer;
// 这里是接收主进程传递过来的参数,这里的on要对应主进程send过来的名字
ipcRenderer.on("asynchronous-reply", function(event, arg) {
// 这里的arg是从主线程请求的数据
console.log("render+" + arg);
});
// 这里的会传递回给主进程,这里的第一个参数需要对应着主进程里on注册事件的名字一致
ipcRenderer.send("asynchronous-message", "传递回去ping");
版权声明:本文为weixin_46187747原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。