Electron-开发实践:定制Mac菜单
【前言】
前面几篇文章讲了从开发electron应用到mac打包,
相关文章:
Electron-开发实践:使用Monorepo管理Electron项目
本文讲一下自定义mac菜单
【默认mac菜单】
使用electron开发mac应用,
如果没有定制mac菜单,
默认的效果如下,

【menu】
使用electron的menu可以自定义mac菜单栏,
https://www.electronjs.org/zh/docs/latest/api/menu
核心代码如下,其中的template是一个menu模板数组,
const menu = Menu.buildFromTemplate(template);
Menu.setApplicationMenu(menu);
使用封装好的role
菜单模板中一种常见的方式是使用封装好的role,
就是electron将常见的菜单项和点击操作封装为了一个role,
如下,
[
{
label: "Edit",
submenu: [
{ role: "undo" },
{ role: "redo" },
{ type: "separator" },
{ role: "cut" },
{ role: "copy" },
{ role: "paste" },
],
},
];
例如上面的copy这个role,点击后就会执行复制操作
使用自定义菜单项
除了使用内置的role,还可以自定义菜单项,如下
[
{
role: "help",
submenu: [
{
label: "Learn More",
click: async () => {
const { shell } = require("electron");
await shell.openExternal("https://electronjs.org");
},
},
],
},
];
常见模板
按国内的应用菜单,准备了一个常见的模板,如下
[
{
label: "app",
submenu: [
{
label: "关于",
role: "about",
},
{
type: "separator",
},
{
label: "隐藏",
role: "hide",
},
{
label: "隐藏其他",
role: "hideOthers",
},
{
type: "separator",
},
{
label: "退出",
role: "quit",
},
],
},
{
label: "编辑",
submenu: [
{
label: "撤销",
role: "undo",
},
{
label: "重做",
role: "redo",
},
{
type: "separator",
},
{
label: "剪切",
role: "cut",
},
{
label: "复制",
role: "copy",
},
{
label: "粘贴",
role: "paste",
},
{
label: "删除",
role: "delete",
},
{
label: "选中所有",
role: "selectAll",
},
],
},
{
label: "窗口",
submenu: [
{
label: "最小化",
role: "minimize",
},
{
label: "关闭",
role: "close",
},
{
label: "自动全屏",
role: "togglefullscreen",
},
],
},
{
label: "调试",
submenu: [
{
label: "调试",
role: "toggleDevTools",
},
],
},
];
效果

【qiao-x-menu】
封装了一个操作electron menu的库,欢迎使用,
https://code.insistime.com/#/qiao-x-menu
上面定制mac菜单的操作可以简化为,
import { setApplicationMenu } from "qiao-x-menu";
setApplicationMenu(menus); 相关推荐
Electron-开发实践:本地日志
【前言】 使用electron开发好本地应用后, 本地日志记录必不可少, 这样可以通过日志获取用户操作信息以及定位bug等, 本地日志与实时性的埋点上报稍微有不同, 本地日志量更大,信息更全,且不是所有信息都时候上报。 【与nodejs本地日志的异同】 electron写本地日志和nodejs写本地
Electron-开发实践:注册快捷键
【前言】 本文介绍一下electron应用中如何注册快捷键 【主进程】 主进程注册快捷键比较简单,需要注意的是在app ready后使用, 常见键盘映射: https://www.electronjs.org/docs/latest/api/accelerator 另外在推出app时需要将所有注册的
Electron-开发实践:几种更新方式
【前言】 Electron开发桌面APP后, 接着涉及一个问题就是如何更新后续的版本, 本文介绍几种更新的方式。 【Electron架构】 用Electron开发的桌面APP, 其实包含几个部分: 1\. Electron本身的环境 2\. 主进程,主进程中又分为Nodejs部分,和非Nodejs部
Electron-开发实践:包体积精简
【前言】 前面几篇文章讲了从开发electron应用到mac打包, 相关文章: 一篇文章学会Electron Electron开发实践:本地数据库SQLite Electron开发实践:使用Monorepo管理Electron项目 Electron开发实践:Mac打包 Electron开发实践:注册
Electron-开发实践:DMG安装包定制
【前言】 dmg文件是mac端常见的安装包格式, 前面几篇文章已经使用electron开发并打包好一个应用了, 本文主要讲下定制dmg安装包, 前面几篇文章: 一篇文章学会Electron Electron开发实践:本地数据库SQLite Electron开发实践:使用Monorepo管理Elect