方法一:主线程与渲染线程通信
(1)在主线程目录main的index.js配置如下,其中 mainWindow是BrowserWindow对象
...
const template = [{
label: '主页',
click() {
mainWindow.webContents.send('href', 'home');
}
},
{
label: '设备',
click() {
mainWindow.webContents.send('href', 'device');
}
},
{
label: '配置',
click() {
mainWindow.webContents.send('href', 'config');
}
}
];
const menu = Menu.buildFromTemplate(template);
Menu.setApplicationMenu(menu);
...
(2)渲染线程目录renderer/router下的index.js,其中router是vuejs的路由
import Vue from 'vue';
import Router from 'vue-router';
Vue.use(Router);
const { ipcRenderer } = require('electron');
Vue.use(Router);
const { ipcRenderer } = require('electron');
let router = new Router({
routes: [{
path: '/',
name: 'home',
component: require('@/page/Home').default
},
{
path: '/device',
name: 'device',
component: require('@/page/Device').default
},
{
path: '/config',
name: 'config',
component: require('@/page/config').default
},
{
path: '*',
redirect: '/'
}
]
});
ipcRenderer.on('href', (event, arg) => {
if (arg) {
router.push({ name: arg });
}
});
export default router;
方法二:路由跳转
(1)在主线程目录main的index.js配置如下,其中 mainWindow是BrowserWindow对象
...
const template = [{
label: '主页',
click() {
mainWindow.loadURL(winURL + '#/home');
}
},
{
label: '设备',
click() {
mainWindow.loadURL(winURL + '#/device');
}
},
{
label: '配置',
click() {
mainWindow.loadURL(winURL + '#/config');
}
}
];
const menu = Menu.buildFromTemplate(template);
Menu.setApplicationMenu(menu);
...
建议用方法一,方法二页面渲染有延迟,用户体验差