Sve*_*kke 6 vue.js electron ipcmain
我正在创建一个以 vuejs 作为前端的电子应用程序。如何在 main.js 的单独文件中创建所有 ipcMain.on() 函数。我希望这是一个更干净的代码结构。
该应用程序必须离线工作,因此我需要将数据存储在本地数据库中。因此,当我在前端创建一个对象时,我将它与 ipcMain 发送到电子端。然后 Electron 可以将其写入本地数据库。
我想要这样的东西:
main.js:
import { app, protocol, BrowserWindow } from "electron";
import {
createProtocol,
installVueDevtools
} from "vue-cli-plugin-electron-builder/lib";
require("./ipcListeners.js");
Run Code Online (Sandbox Code Playgroud)
ipcListeners.js:
import { ipcMain } from "electron";
ipcMain.on("asynchronous-message", (event, arg) => {
console.log(arg);
event.reply("asynchronous-reply", "pong");
});
ipcMain.on("random-message", (event, arg) => {
console.log(arg);
event.reply("random-reply", "random");
});
Run Code Online (Sandbox Code Playgroud)
这里的问题是只有第一个 ipcMain.on() 函数起作用,但第二个函数......不起作用
小智 1
我不知道这会对我发布我所做的事情有任何帮助。现在你的实现对我有用,但如果我现在需要 100 个文件,那么我仍然遇到问题,在所有这些要求中,我必须重复导入 ipcMain,这将是一个性能问题,所以我所做的是通过插入 electon 和 IpcMain 创建全局对象,然后效果很好
我的 Main.js 文件
const { app, BrowserWindow } = require('electron')
const electron = require('electron');
const { ipcMain } = require('electron')
global.share= {electron,ipcMain};
function createWindow () {
// Create the browser window.
const win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true
}
})
// and load the index.html of the app.
win.loadFile('./views/index.html')
// Open the DevTools.
win.webContents.openDevTools()
}
app.whenReady().then(createWindow);
// Quit when all windows are closed.
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit()
}
})
app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) {
createWindow()
}
})
require('./test.js');
Run Code Online (Sandbox Code Playgroud)
测试.js
global.share.ipcMain.on('synchronous-message', (event, arg) => {
console.log(arg) // prints "ping"
event.returnValue = 'pong'
})
Run Code Online (Sandbox Code Playgroud)
这是我的 html 调用
const { ipcRenderer } = require('electron')
document.querySelector('.btn').addEventListener('click', () => {
console.log(ipcRenderer.sendSync('synchronous-message', 'ping')) // prints "pong"
})
Run Code Online (Sandbox Code Playgroud)
现在这个对我来说非常有用,所以不再有混乱和冗长的 main.js 资源
| 归档时间: |
|
| 查看次数: |
5480 次 |
| 最近记录: |