当前位置: 首页 > news >正文

站长网站seo查询软件开发流程包括哪些

站长网站seo查询,软件开发流程包括哪些,网站管理助手4.0破解,优良的定制网站建设制作商完成初始应用的创建Electron桌面应用开发:创建应用,随后我们就可以自定义软件的菜单了。菜单可以帮助用户快速找到和执行命令,而不需要记住复杂的快捷键,通过将相关功能组织在一起,用户可以更容易地发现和使用应用程序…

    完成初始应用的创建Electron桌面应用开发:创建应用,随后我们就可以自定义软件的菜单了。菜单可以帮助用户快速找到和执行命令,而不需要记住复杂的快捷键,通过将相关功能组织在一起,用户可以更容易地发现和使用应用程序的各种特性。同时菜单允许开发者提供更多的功能选项而不必担心界面会因此变得拥挤或难以导航,比如下拉菜单弹出菜单等可以在有限的空间内提供大量的选项。
Electron的原始菜单为以下页面:
在这里插入图片描述

取消顶部菜单显示

这里可以使用两种常用的方法,第一种是在窗口创建函数中设置frame: false

const {app, BrowserWindow, Menu} = require('electron');let win = null;function createWindow() {win = new BrowserWindow({width: 800,height: 600,frame: false,webPreferences: {nodeIntegration: true},});win.loadFile('index.html');win.on('closed', () => {win = null;});
}app.on('ready', createWindow);app.on('window-all-closed', () => {if (process.platform !== 'darwin') {app.quit();}
});

这样大小化和关闭按钮、标题也全部消失了,所以只适合个别情况使用。
在这里插入图片描述
第二种是在创建窗口函数中加入Menu.setApplicationMenu(null);设置,这样可以保留标题等内容:

const {app, BrowserWindow, Menu} = require('electron');let win = null;function createWindow() {win = new BrowserWindow({width: 800,height: 600,webPreferences: {nodeIntegration: true},});win.loadFile('index.html');Menu.setApplicationMenu(null);win.on('closed', () => {win = null;});
}app.on('ready', createWindow);app.on('window-all-closed', () => {if (process.platform !== 'darwin') {app.quit();}
});

在这里插入图片描述

自定义子菜单

    这里我们可以在主文件main.js中直接添加自定义菜单的代码,也可以新建一个menu.js文件,随后在main.js中进行引用(个人推荐做法)
在Electron中定义菜单需要先引入Menu

const {Menu} = require('electron')

定义格式如下:

    const template = [{label: '菜单1',submenu: [{label: '子菜单1'},{label: '子菜单2',}]},{label: '菜单2',submenu: [{label: '子菜单1'},{label: '子菜单2',submenu: [{label: '孙子菜单1'},{label: '孙子菜单2'}]}]}]

可以使用click来监听事件,例如:

            {label: '欧耶',accelerator: 'CmdOrCtrl+O',click: () => {console.log('菜单被点击了');}},

main.js中直接添加菜单代码的格式如下:

const { app, BrowserWindow, Menu } = require('electron');let win = null;function createWindow() {win = new BrowserWindow({width: 800,height: 600,webPreferences: {nodeIntegration: true},});win.loadFile('index.html');win.on('closed', () => {win = null;});
}const template = [{label: '菜单1',submenu: [{label: '子菜单1'},{label: '子菜单2',}]},{label: '菜单2',submenu: [{label: '子菜单1'},{label: '子菜单2',submenu: [{label: '孙菜单1'},{label: '孙菜单2'}]}]},{label: '帮助',role: 'help',click() { require('electron').shell.openExternal('https://example.com/help') }}
];const menu = Menu.buildFromTemplate(template);
Menu.setApplicationMenu(menu);app.on('ready', createWindow);app.on('window-all-closed', () => {if (process.platform !== 'darwin') {app.quit();}
});app.on('activate', () => {if (win === null) {createWindow();}
});

这里我们还是推荐使用将创建菜单的代码转移到其他文件中,比如新建一个menu.js,这样可以更加方便的进行代码编写和问题排查:
main.js:

const {app, BrowserWindow, Menu} = require('electron');
// 引入menu.js文件
const menuTemplate = require('./menu.js'); let win = null;function createWindow() {win = new BrowserWindow({width: 800,height: 600,webPreferences: {nodeIntegration: true},});win.loadFile('index.html');win.on('closed', () => {win = null;});// 创建窗口const menu = Menu.buildFromTemplate(menuTemplate(win));Menu.setApplicationMenu(menu);
}app.on('ready', createWindow);app.on('window-all-closed', () => {if (process.platform !== 'darwin') {app.quit();}
});

menu.js:

const {Menu} = require('electron')module.exports = function (win) {const template = [{label: '菜单1',submenu: [{label: '子菜单1'},{label: '子菜单2',}]},{label: '菜单2',submenu: [{label: '子菜单1'},{label: '子菜单2',submenu: [{label: '孙菜单1'},{label: '孙菜单2'}]}]},{label: '帮助',role: 'help',click() { require('electron').shell.openExternal('https://example.com/help') }}]return template;
}

两种方法的最终效果如下:
在这里插入图片描述

上下文菜单

上下文菜单通常在用户右键点击某个元素时显示,通常通过监听事件来创建和显示上下文菜单。
在主文件中需要导入ipcMain模块,main.js:

const { app, BrowserWindow, Menu, ipcMain } = require('electron');
const menuTemplate = require('./menu.js');let win = null;function createWindow() {win = new BrowserWindow({width: 800,height: 600,webPreferences: {nodeIntegration: true,contextIsolation: false,preload: __dirname + './preload.js'},});win.loadFile('index.html');const menu = Menu.buildFromTemplate(menuTemplate(win));Menu.setApplicationMenu(menu);win.on('closed', () => {win = null;});
}app.on('ready', createWindow);app.on('window-all-closed', () => {if (process.platform !== 'darwin') {app.quit();}
});app.on('activate', () => {if (win === null) {createWindow();}
});

renderer.js,DOM内容加载完成后执行的逻辑:

document.addEventListener('DOMContentLoaded', () => {
});

使用preload脚本处理上下文菜单的preload.js, 用于安全地暴露API给渲染进程:

const { contextBridge, ipcRenderer } = require('electron');contextBridge.exposeInMainWorld('electronAPI', {send: (channel, data) => {// 向主进程发送消息ipcRenderer.send(channel, data);},receive: (channel, func) => {// 接收来自主进程的消息ipcRenderer.on(channel, (event, ...args) => func(...args)); }
});

menu.js:

const {Menu} = require('electron')module.exports = function (win) {const template = [{label: '菜单1',submenu: [{label: '子菜单1'},{label: '子菜单2',}]},{label: '菜单2',submenu: [{label: '子菜单1'},{label: '子菜单2',submenu: [{label: '孙菜单1'},{label: '孙菜单2'}]}]},{label: '帮助',role: 'help',click() { require('electron').shell.openExternal('https://example.com/help') }}]return template;
}

index.html:

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" href="./style.css"><title>GGBond勇猛无敌</title>
</head>
<body><h1>Hello GGBond</h1><script src="./renderer.js"></script>
</body>
</html>

在这里插入图片描述

弹出式菜单

弹出式菜单可以通过编程方式手动显示,不需要特定的触发事件。
main.js:

const { app, BrowserWindow, Menu } = require('electron');
const menuTemplate = require('./menu.js'); // 引入自定义菜单模板let win = null;function createWindow() {win = new BrowserWindow({width: 800,height: 600,webPreferences: {nodeIntegration: true,contextIsolation: false, // 在使用nodeIntegration时需要禁用contextIsolationpreload: __dirname + '/preload.js' // 使用preload脚本处理上下文菜单},});win.loadFile('index.html');win.on('closed', () => {win = null;});const menu = Menu.buildFromTemplate(menuTemplate(win));Menu.setApplicationMenu(menu); // 设置为应用菜单
}app.on('ready', createWindow);app.on('window-all-closed', () => {if (process.platform !== 'darwin') {app.quit();}
});app.on('activate', () => {if (win === null) {createWindow();}
});

使用preload脚本处理上下文菜单的preload.js,使用contextBridge来安全地暴露API给渲染进程,允许渲染进程调用showPopupMenu方法。:

const { contextBridge, ipcRenderer } = require('electron');contextBridge.exposeInMainWorld('electronAPI', {showPopupMenu: (x, y) => {ipcRenderer.invoke('show-popup-menu', x, y);}
});

renderer.js:

document.addEventListener('DOMContentLoaded', () => {document.body.addEventListener('click', (event) => {window.electronAPI.showPopupMenu(event.x, event.y);});
});

menu.js:

const {Menu} = require('electron')module.exports = function (win) {const template = [{label: '菜单1',submenu: [{label: '子菜单1'},{label: '子菜单2',}]},{label: '菜单2',submenu: [{label: '子菜单1'},{label: '子菜单2',submenu: [{label: '孙菜单1'},{label: '孙菜单2'}]}]},{label: '帮助',role: 'help',click() { require('electron').shell.openExternal('https://example.com/help') }}]return template;
}

index.html:

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" href="./style.css"><title>GGBond勇猛无敌</title>
</head>
<body><h1>Hello GGBond</h1><script src="./src/renderer.js"></script>
</body>
</html>
http://www.yayakq.cn/news/205088/

相关文章:

  • 网站html模板开发建设网站
  • 视频网站会员系统怎么做宿迁网页设计培训
  • 清远市企业网站seo联系方式哪个网站能查是否做股东
  • 网站开发报价评估成都专业网站建设
  • 如何做门户网站网站上的分享
  • 高端建站属于外包公司么家具网站开发
  • 锁定网站导航栏官网seo是什么
  • 同步网站内容怎么做对商家而言网站建设的好处
  • 网站域名销售设计网站可能遇到的问题
  • iis6.1配置网站网页模板免费下载平台
  • 响应式网站网站建设搜索引擎网站制作
  • 网站空间流量seo如何优化
  • 网站登录注册页面模板wordpress博客字体
  • wordpress个人博客源码奢侈品网站怎么做tuig优化
  • 做门户网站起什么域名好枣庄三合一网站建设公司
  • 网站建设找睿智骄阳江西通威公路建设集团有限公司网站
  • 宁波网站建设费用是多少钱网站建设方案书设计图
  • 邢台网站网页设计wordpress速度好慢
  • 网站域名使用代理免费素材图片下载
  • 十堰网站建设_网站制作_软件开发_网店培训 优易湖州住房和城乡建设局网站
  • 做农村电商要多少钱厦门seo专业培训学校
  • 邵东做网站的公司聊城集团网站建设加盟
  • 网站宣传文案范例做网站英文编辑有前途吗
  • 廊坊网站建站建设网站建设的总体目标考核指标
  • 张裕网站建设的目标我的家乡网站建设模板
  • 网站排版用什么软件做微信封面模板下载网站
  • 百斯特网站建设阳山县网站住房和建设局
  • 建网站需要软件PHP网站开发与管理设计心得
  • 特色的合肥网站建设郴州网站建设哪家比较好
  • php网站开发实例电子版wordpress 发送邮件