index.js
/** * 使用模板创建原生应用菜单 * 1、应用菜单(窗口菜单) * Window、Linux和Mac OS X * 2、上下文菜单 * * 1、模板 * 2、代码 * electron-packager * npm install electron-packager -g * electron-packager . firstmenu --electron-version=3.0.0 * dmg(Mac OX X) exe(Window) * * * 通用role undo redo cut copy paste pasteAndMatchStyle selectAll delete minimize:最小化当前窗口 close:关闭当前窗口 quit:退出应用程序 reload:重新装载当前窗口 forceReload:重新装载当前窗口(不考缓存) toggleDevTools:在当前窗口显示开发者工具 toggleFullScreen:全屏显示当前窗口 resetZoom:重新设置当前页面的尺寸为最初的尺寸 zoomIn:将当前页面放大10% zoomOut:将当前页面缩小10% editMenu:整个“Edit”菜单,包括Undo、Copy等。 windowMenu:整个“Window”菜单,包括Minimize、Close等。 下面的角色仅用于Mac OS X系统。 Mac OS X独有的role about:显示“关于”对话框 hide:隐藏 hideOthers:隐藏其他应用程序。 unhide:取消隐藏其他应用程序。 startSpeaking:开始说话。 stopSpeaking:停止说话。 front:映射arrangeInFront动作 zoom:映射performZoom动作 taggleTabBar:显示TabBar. selectNextTab:选择下一个Tab selectPreviousTab:选择前一个Tab mergeAllWindows:合并所有的窗口 moveTabToNewWindow:移动Tab到新有窗口 window:Window的子菜单 help:Help的子菜单 services:Services的子菜单 recentDocuments:Open Recent菜单的子菜单 clearRecentDocuments:清除最近打开的文档 */ /** * 菜单类型 * 1、normal:默认的菜单类型 * 2、separator:分割线 * 3、submenu:子菜单 * 4、checkbox:多选菜单 * 5、radio:单选菜单 */ /** * 为菜单项添加图标 * windows * ico * 其他系统 * png * icon设置图标 * 图标会按照实际大小显示 */ /** * 动态创建菜单 */ /** * 上下文菜单 * */ // const electron = require('electron'); // const app=electron.app; // const BrowserWindow=electron.BrowserWindow; // const Menu=electron.Menu; const {app,BrowserWindow,Menu} = require('electron'); function createWindow(){ win = new BrowserWindow({ //show:false, webPreferences:{ nodeIntegration: true, // 是否集成 Nodejs enableRemoteModule: true, contextIsolation: false, } }); win.loadFile('index.html'); //定义菜单模板 // const template=[ // {label:"文件",submenu:[ // {label:"关于", // //role:'about', // click:()=>{ // var aboutWin=new BrowserWindow({width:300,height:200,parent:win,modal:true}); // aboutWin.loadURL("https://www.baidu.com"); // }}, // {type:"separator"}, // {label:"关闭",accelerator:"Ctrl+Q",click:()=>{win.close();}} // ]}, // {label:"编辑",submenu:[ // {label:"复制",click:()=>{win.webContents.insertText('复制');}}, // {label:"粘贴",click:()=>{win.webContents.insertText('粘贴');}}, // {type:"separator"}, // {label:"查找",accelerator:"Ctrl+F",click:()=>{win.webContents.insertText('查找');}}, // {label:"替换",accelerator:"Ctrl+H",click:()=>{win.webContents.insertText('替换');}} // ]}, // ] // if(process.platform=="darwin"){ // //添加Mac OS X特有的菜单 // } //菜单角色 // const template=[ // {label:"编辑",submenu:[ // {label:"撤销",role:"undo"}, // {label:"重做",role:"redo"}, // {label:"剪切",role:"cut"}, // {label:"复制",role:"copy"}, // {label:"粘贴",role:"paste"}, // ]}, // {label:"调试",submenu:[ // {label:"显示调试工具",role:"toggleDevTools"}, // ]}, // {label:"窗口",submenu:[ // {label:"全屏显示窗口",role:"toggleFullScreen"}, // {label:"窗口放大10%",role:"zoomIn"}, // {label:"窗口缩小10%",role:"zoomOut"}, // ]}, // ] // if(process.platform=="darwin"){ // //添加Mac OS X特有的菜单 // template.unshift( // {label:"Mac",submenu:[ // {label:"关于",role:"about"}, // {label:"开始说话",role:"startSpeaking"}, // {label:"停止说话",role:"stopSpeaking"}, // ]} // ) // } //菜单类型 // const template=[ // {label:"编辑",submenu:[ // {label:"撤销",role:"undo"}, // {label:"重做",role:"redo"}, // {type:"separator"}, // {label:"剪切",role:"cut"}, // {label:"复制",role:"copy"}, // {label:"粘贴",role:"paste"}, // ]}, // {label:"我的菜单",submenu:[ // {label:"多选1",type:"checkbox"}, // {label:"多选2",type:"checkbox"}, // {label:"多选3",type:"checkbox"}, // {label:"单选1",type:"radio"}, // {label:"单选2",type:"radio"}, // {label:"Windows",type:"submenu",role:"windowMenu"} // ]}, // ] //菜单图标 // var icon=""; // if(process.platform=="win32"){ // icon="./images/logn.jpg";//.ico // }else{ // icon="./images/folder.png";//.png // } // const template=[ // {label:"文件",submenu:[ // {label:"打开",icon:icon,role:"undo"}, // {label:"重做",role:"redo"}, // ]}, // ] // console.info(Menu); // const menu=Menu.buildFromTemplate(template); // Menu.setApplicationMenu(menu); win.on("ready-to-show",()=>{ win.show(); }); if(process.platform!="darwin"){ win.setIcon("images\\logn.jpg"); } win.on('closed',()=>{ console.log('closed') win=null; }); } app.on('ready',createWindow); app.on('window-all-closed',()=>{ console.log('window-all-closed'); if(process.platform!='darwin'){ } }); app.on('activate',()=>{ console.log('activate'); if(win==null){ createWindow(); } });