返回

告别键盘党和鼠标党,巧用 Electron 菜单与快捷键

前端

  1. Electron 菜单

Electron 菜单是 Electron 应用中用于组织和显示命令的元素。它通常位于应用程序窗口的顶部,可以包含多个菜单项,每个菜单项可以包含子菜单或直接执行某个命令。

1.1 创建菜单

在 Electron 中创建菜单非常简单,只需要使用 Menu 模块即可。以下是一个创建菜单的示例代码:

const {Menu, app} = require('electron');

const template = [
  {
    label: '文件',
    submenu: [
      {
        label: '新建',
        click: () => { console.log('新建文件'); }
      },
      {
        label: '打开',
        click: () => { console.log('打开文件'); }
      },
      {
        label: '保存',
        click: () => { console.log('保存文件'); }
      },
      {
        label: '另存为',
        click: () => { console.log('另存为'); }
      }
    ]
  },
  {
    label: '编辑',
    submenu: [
      {
        label: '撤销',
        click: () => { console.log('撤销'); }
      },
      {
        label: '重做',
        click: () => { console.log('重做'); }
      },
      {
        label: '剪切',
        click: () => { console.log('剪切'); }
      },
      {
        label: '复制',
        click: () => { console.log('复制'); }
      },
      {
        label: '粘贴',
        click: () => { console.log('粘贴'); }
      }
    ]
  },
  {
    label: '帮助',
    submenu: [
      {
        label: '关于',
        click: () => { console.log('关于'); }
      }
    ]
  }
];

const menu = Menu.buildFromTemplate(template);

Menu.setApplicationMenu(menu);

这段代码首先创建了一个菜单模板,然后使用 Menu.buildFromTemplate() 方法将模板转换为一个 Menu 对象,最后使用 Menu.setApplicationMenu() 方法将菜单设置为应用程序的菜单。

1.2 自定义菜单

除了使用默认的菜单模板外,您还可以自定义菜单的外观和行为。例如,您可以设置菜单项的图标、禁用某些菜单项或添加自定义菜单项。

以下是一个自定义菜单的示例代码:

const {Menu, app} = require('electron');

const template = [
  {
    label: '文件',
    submenu: [
      {
        label: '新建',
        click: () => { console.log('新建文件'); },
        icon: './images/new.png'
      },
      {
        label: '打开',
        click: () => { console.log('打开文件'); },
        icon: './images/open.png'
      },
      {
        label: '保存',
        click: () => { console.log('保存文件'); },
        icon: './images/save.png'
      },
      {
        label: '另存为',
        click: () => { console.log('另存为'); },
        icon: './images/save-as.png'
      },
      {
        type: 'separator'
      },
      {
        label: '退出',
        click: () => { app.quit(); }
      }
    ]
  },
  {
    label: '编辑',
    submenu: [
      {
        label: '撤销',
        click: () => { console.log('撤销'); },
        accelerator: 'CmdOrCtrl+Z'
      },
      {
        label: '重做',
        click: () => { console.log('重做'); },
        accelerator: 'CmdOrCtrl+Y'
      },
      {
        type: 'separator'
      },
      {
        label: '剪切',
        click: () => { console.log('剪切'); },
        accelerator: 'CmdOrCtrl+X'
      },
      {
        label: '复制',
        click: () => { console.log('复制'); },
        accelerator: 'CmdOrCtrl+C'
      },
      {
        label: '粘贴',
        click: () => { console.log('粘贴'); },
        accelerator: 'CmdOrCtrl+V'
      }
    ]
  },
  {
    label: '帮助',
    submenu: [
      {
        label: '关于',
        click: () => { console.log('关于'); }
      }
    ]
  }
];

const menu = Menu.buildFromTemplate(template);

Menu.setApplicationMenu(menu);

在这段代码中,我们为菜单项设置了图标和快捷键。我们还添加了一个分隔符来分隔不同的菜单项组。

2. Electron 快捷键

Electron 快捷键是用于触发特定命令的键盘组合。快捷键可以与菜单项关联,也可以独立使用。

2.1 创建快捷键

在 Electron 中创建快捷键非常简单,只需要使用 globalShortcut 模块即可。以下是一个创建快捷键的示例代码:

const {globalShortcut} = require('electron');

globalShortcut.register('CmdOrCtrl+N', () => { console.log('新建文件'); });
globalShortcut.register('CmdOrCtrl+O', () => { console.log('打开文件'); });
globalShortcut.register('CmdOrCtrl+S', () => { console.log('保存文件'); });
globalShortcut.register('CmdOrCtrl+Q', () => { app.quit(); });

这段代码使用 globalShortcut.register() 方法注册了四个快捷键,分别用于触发新建文件、打开文件、保存文件和退出应用程序。

2.2 自定义快捷键

除了使用默认的快捷键外,您还可以自定义快捷键的组合。例如,您可以将 CmdOrCtrl+N 快捷键改为 Ctrl+N

以下是一个自定义快捷键的示例代码:

const {globalShortcut} = require('electron');

globalShortcut.register('Ctrl+N', () => { console.log('新建文件'); });
globalShortcut.register('Ctrl+O', () => { console.log('打开文件'); });
globalShortcut.register('Ctrl+S', () => { console.log('保存文件'); });
globalShortcut.register('Ctrl+Q', () => { app.quit(); });

3. 最佳实践

在使用 Electron 菜单和快捷键时,请遵循以下最佳实践:

  • 使用简洁明了的菜单项和快捷键名称。
  • 使用图标来帮助用户识别菜单项和快捷键。
  • 将相关的菜单项和快捷键分组在一起。
  • 使用分隔符来分隔不同的菜单项组和快捷键组。
  • 避免使用不常用的菜单项和快捷键。
  • 在文档中记录菜单项和快捷键的用法。

4. 结语

Electron 菜单和快捷键是两种重要的交互元素,可以极大地提升用户体验和开发效率。通过遵循本文介绍的方法,您可以轻松地在 Electron 应用中创建和使用菜单和快捷键。