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

专门做老年旅游的网站app定制开发运营推广方案

专门做老年旅游的网站,app定制开发运营推广方案,wordpress提示不安全,王烨乐清文章目录 介绍electron工作流程环境搭建 electron生命周期#xff08;app的生命周期#xff09;窗口尺寸窗口标题自定义窗口的实现阻止窗口关闭父子及模态窗口自定义菜单 介绍 electron技术架构#xff1a;chromium、node.js、native.apis electron工作流程 桌面应用就是… 文章目录 介绍electron工作流程环境搭建 electron生命周期app的生命周期窗口尺寸窗口标题自定义窗口的实现阻止窗口关闭父子及模态窗口自定义菜单 介绍 electron技术架构chromium、node.js、native.apis electron工作流程 桌面应用就是运行在不同操作系统上的软件软件中的功能是通过native.apis跟不同操作系统进行交互实现的想实现什么功能调用响应的API即可 electron主要有两类进程 主进程main process渲染进程renderer process 当我们启动一个APP时他首先会启动主进程一般是main.js或index.js中的代码主进程启动成功后会创建一个native ui然后在nativeui里创建一个或多个Browse window用于呈现界面即web界面每个Browse window可以看作是一个渲染进程每个渲染进程相互独立各自运行在自己的沙箱环境中但是app在使用的过程中不同窗口会进行交互于是electron提供了IPC、RPC通信机制供窗口与窗口进行数据传输 只有主进程能操作原生API能管理所有WEB界面和这些web界面对应的渲染进程 渲染进程支持所有的DOM操作、node api的调用操作 环境搭建 package.json中main字段指定的文件就是app启动后启动的主进程script字段指定的是启动项目的命令 electron生命周期app的生命周期 readyapp初始化完成后会被调用一次一般用于窗口初始化 dom-ready一个窗口中的文本加载完成与dom操作相关有个webcontext对象可以调用 did-finsh-load导航完成时触发即选项卡的旋转器停止旋转时触发且指派了onload事件。由webcontext调用 window-all-closed所有窗口都被关闭时触发如果我们没有监听这个方法那么所有窗口关闭后应用程序就默认退出如果我们监听了这个方法我们就可以自己决定所有窗口关闭后应用程序是否退出如果我们选择不退出那么后续的before-quit、will-quit、quit都失效了 before-quit在关闭窗口之前触发 will-quit在窗口关闭并且应用退出时触发 quit所有窗口被关闭时触发 closed当窗口关闭时触发此时应删除窗口引用 const { app, BrowserWindow } require(electron)// 创建窗口 function createWindow() {let mainWindow new BrowserWindow({width: 800,height:400})mainWindow.loadFile(index.html)// webContents用于操作dommainWindow.webContents.on(did-finish-load,() {console.log(33333------did-finish-load)})mainWindow.webContents.on(dom-ready,() {console.log(22222------dom-ready)})mainWindow.on(close,() {console.log(88888------close)mainWindow null}) }app.on(ready,() {console.log(11111------ready)createWindow() })app.on(window-all-closed,() {console.log(44444------window-all-closed) })app.on(before-quit,() {console.log(55555------before-quit) })app.on(will-quit,() {console.log(66666------will-quit) })app.on(quit,() {console.log(77777------quit) })执行顺序1——2——3——8——4——5——6——7 窗口尺寸 const { app, BrowserWindow } require(electron)// 创建窗口 function createWindow() {let mainWindow new BrowserWindow({x:100,// 设置窗口显示的位置距离左边的距离y:100,// 设置窗口显示的位置距离右边的距离width: 800,height:400,maxHeight:600,// 窗口最大高度minHeight:200,// 窗口最小高度maxWidth:1000,// 窗口最大宽度minWidth:300,// 窗口最小宽度resizable:false// 是否允许缩放窗口默认为true可以缩放窗口设为false})mainWindow.loadFile(index.html)mainWindow.on(close,() {console.log(88888------close)mainWindow null}) }app.on(ready,createWindow)app.on(window-all-closed,() {console.log(window-all-closed)app.quit() })注意此时有个bug窗口弹出来然后有一段白屏时间然后再出现内容这是因为let mainWindow new BrowserWindow()执行完成后就会显示出窗口来此时窗口里面是没有内容的我们设置show:false让窗口创建好也不展示出来然后加载index.html文件加载完成后监听窗口的ready-to-show方法再把窗口展示出来 const { app, BrowserWindow } require(electron)// 创建窗口 function createWindow() {let mainWindow new BrowserWindow({show:false,width: 800,height:400})mainWindow.loadFile(index.html)// 监听窗口已经准备好去展示了mainWindow.on(ready-to-show,(){mainWindow.show()})mainWindow.on(close,() {console.log(88888------close)mainWindow null}) }app.on(ready,createWindow)app.on(window-all-closed,() {console.log(window-all-closed)app.quit() })窗口标题 const { app, BrowserWindow } require(electron)// 创建窗口 function createWindow() {let mainWindow new BrowserWindow({show:false,width: 800,height:400,frame: false,// 是否有边框transparent:true,// 窗体透明只有frame: false时才生效icon:lg.ico,// 图标title:拉钩教育,// 窗口标题autoHideMenuBar: true// 隐藏菜单、选项卡})mainWindow.loadFile(index.html)// 监听窗口已经准备好去展示了mainWindow.on(ready-to-show,(){mainWindow.show()})mainWindow.on(close,() {console.log(88888------close)mainWindow null}) }app.on(ready,createWindow)app.on(window-all-closed,() {console.log(window-all-closed)app.quit() })需求窗口里面提供一个按钮点击按钮再弹出一个窗口 ctrr可以对应用进行重载 25版本后可以使用ipcMain和ipcRenderer实现新窗口 index.html代码如下 版本一主进程允许渲染进程使用BrowserWindow实现main.js代码如下 const { app, BrowserWindow } require(electron)// 创建窗口 function createWindow() {let mainWindow new BrowserWindow({show:false,width: 800,height:400,webPreferences:{nodeIntegration:true,// 允许渲染进程使用node集成环境contextIsolation: false,// 如果nodeIntegration:true失效那么需要添加这行代码 }})mainWindow.loadFile(index.html)// 监听窗口已经准备好去展示了mainWindow.on(ready-to-show,(){mainWindow.show()})mainWindow.on(close,() {console.log(88888------close)mainWindow null}) }app.on(ready,createWindow)app.on(window-all-closed,() {console.log(window-all-closed)app.quit() })index.js代码index.html的js代码如下 版本二主进程允许渲染进程使用remote实现main.js代码如下 const { app, BrowserWindow } require(electron)// 创建窗口 function createWindow() {let mainWindow new BrowserWindow({show:false,width: 800,height:400,webPreferences:{enableRemoteModule:true//允许使用远程模式},autoHideMenuBar: true// 隐藏菜单、选项卡})mainWindow.loadFile(index.html)// 监听窗口已经准备好去展示了mainWindow.on(ready-to-show,(){mainWindow.show()})mainWindow.on(close,() {console.log(88888------close)mainWindow null}) }app.on(ready,createWindow)app.on(window-all-closed,() {console.log(window-all-closed)app.quit() })index.js代码index.html的js代码如下 const { remote } require(electron) window.addEventListener(DOMContentLoaded,() {// 点击按钮打开一个新窗口const oBtn document.getElementsById(btn)oBtn.addEventListener(click,() {// 创建窗口let indexWindow new remote.BrowserWindow({width:200,height:200})indexWindow.loadFile(sub.html)indexWindow.on(close,() {indexWindow null})}) })自定义窗口的实现 需求点击窗口右上角的三个图标分别执行相应操作 index.html代码如下红框中为三个图标的代码 main.js中代码如下 const { app, BrowserWindow } require(electron)// 创建窗口 function createWindow() {let mainWindow new BrowserWindow({show:false,width: 800,height:400,webPreferences:{nodeIntegration:true,// 允许渲染进程使用node集成环境contextIsolation: false,// 如果nodeIntegration:true失效那么需要添加这行代码enableRemoteModule:true//允许使用远程模式},autoHideMenuBar: true// 隐藏菜单、选项卡})mainWindow.loadFile(index.html)// 监听窗口已经准备好去展示了mainWindow.on(ready-to-show,(){mainWindow.show()})mainWindow.on(close,() {console.log(88888------close)mainWindow null}) }app.on(ready,createWindow)app.on(window-all-closed,() {console.log(window-all-closed)app.quit() })index.html的js代码写在index.js中如下 const { remote } require(electron) window.addEventListener(DOMContentLoaded,() {// 利用remote可以获取当前窗口对象let mainWindow remote.getCurrentWindow()// 获取元素添加点击操作的监听let aBtn document.getElementsByClassName(windowTool)[0].getElementsByTagName(div)aBtn[0].addEventListener(click,() {// 关闭窗口mainWindow.close()})aBtn[1].addEventListener(click,() {// 最大化console.log(mainWindow.isMaximized())// 先判断当前窗口是不是最大化如果是则回到原来的大小如果不是最大化则最大化当前窗口if(!mainWindow.isMaximized()){mainWindow.maximize()// 让当前窗口最大化}else{mainWindow.restore()// 让当前窗口回到原来的大小}})aBtn[2].addEventListener(click,() {// 最小化console.log(mainWindow.isMinimized())if(!mainWindow.isMaximized()){mainWindow.minimize()// 让当前窗口最小化}}) })阻止窗口关闭 点击右上角的关闭按钮后弹出浮窗提示用户是否关闭若用户选择关闭则关闭应用否则关闭浮窗index.html页面如下 index.html中的js代码保存在index.js中代码如下 const { remote } require(electron) window.addEventListener(DOMContentLoaded,() {// 监听mainWindow.close()window.onbeforeunload function(){let oBox document.getElementsByClassName(isClose)[0]oBox.style.display block// 弹窗出现let yseBtn oBox.getElementsByTagName(span)[0]let noBtn oBox.getElementsByTagName(span)[1]yseBtn.addEventListener(click, () {// 此时关闭窗口需要用destory// 因为onbeforeunload用于监听mainWindow.close()如果这里还用mainWindow.close关闭的话会陷入死循环mainWindow.destory()})noBtn.addEventListener(click, () {oBox.style.display none// 去掉弹窗})}// 利用remote可以获取当前窗口对象let mainWindow remote.getCurrentWindow()// 获取元素添加点击操作的监听let aBtn document.getElementsByClassName(windowTool)[0].getElementsByTagName(div)aBtn[0].addEventListener(click,() {// 关闭窗口mainWindow.close()})aBtn[1].addEventListener(click,() {// 最大化console.log(mainWindow.isMaximized())// 先判断当前窗口是不是最大化如果是则回到原来的大小如果不是最大化则最大化当前窗口if(!mainWindow.isMaximized()){mainWindow.maximize()// 让当前窗口最大化}else{mainWindow.restore()// 让当前窗口回到原来的大小}})aBtn[2].addEventListener(click,() {// 最小化console.log(mainWindow.isMinimized())if(!mainWindow.isMaximized()){mainWindow.minimize()// 让当前窗口最小化}}) })父子及模态窗口 index.js代码如下 const { remote } require(electron) window.addEventListener(DOMContentLoaded,() {// 点击按钮打开一个新窗口const oBtn document.getElementsById(btn)oBtn.addEventListener(click,() {// 创建窗口let indexWindow new remote.BrowserWindow({parent:remote.getCurrentWindow(),// 指定子窗口的父窗口是主线程的窗口modal:true,// 子窗口是模态化窗口当子窗口出现时父窗口不能游任何操作也不能移动width:200,height:200})indexWindow.loadFile(sub.html)indexWindow.on(close,() {indexWindow null})}) })自定义菜单
http://www.w-s-a.com/news/895949/

相关文章:

  • 国外开发网站手机网站建设制作
  • 怎么把自己做的网站传网上青岛工程建设监理公司网站
  • 网站301跳转效果商丘网站公司
  • 公司网站建设西安网站的架构与建设
  • 食品科技学校网站模板花溪村镇建设银行网站
  • 图片渐隐 网站头部flash地方志网站建设自查报告
  • 深圳做商城网站视觉品牌网站建设
  • 永康电子商务网站建设弹幕网站怎么做
  • 百川网站企业做网站要注意哪些
  • 球迷类的网站如何做网站建设需要哪些素材
  • 请问有重庆有做网站吗电子政务系统网站建设的基本过程
  • 建设银行管方网站官网最新版cmsv6
  • 网站开发工程师需要会写什么深圳网站(建设信科网络)
  • 台州网站搭建网站建设需求计划
  • 网站app免费下载软件大全大连百度推广哪家好
  • 网站建设的面试要求iis做的网站手机怎么访问
  • 定州市住房保障和城乡建设局网站上海网站建设排行
  • 网站发帖百度收录网站改版后不收录
  • 昆明建设局网站号码网站开发 浏览器兼容性
  • 湖北专业网站建设大全室内设计联盟app下载
  • 网站建设的意义和作用江苏城市建设档案馆网站
  • 华为云速建站贴心的广州网站建设
  • 网页网站开发公司天津seo推广
  • 网站线框图用什么做共享门店新增礼品卡兑换模式
  • 互联网建站是什么seo服务公司上海
  • 象山县城乡建设局网站做网站客户要求分期
  • 什么是网络营销型网站手机网站 图标
  • 全国新农村建设网站外包和劳务派遣哪个好
  • 网站权限控制什么软件做网站描述
  • 建网络商城网站wordpress关于