electron开发计算器

本文介绍了如何使用Electron框架开发一个桌面计算器应用。详细讲述了从 Electron 的基本概念,包括主进程、渲染进程及其通信,到创建应用界面、添加菜单项、实现颜色和字体设置功能,再到桌面应用的隐藏到托盘以及最终的打包过程。通过这个教程,读者可以了解到Electron开发桌面应用的基本流程。
摘要由CSDN通过智能技术生成

electron完成一个简易的桌面计算器

效果:
在这里插入图片描述

目录
  • 什么是electron,它能做什么

  • 使用electron展示一个桌面应用程序的界面(简单的窗口展示)

  • electron中菜单的添加和配置

  • electron中的主进程

  • electron中的渲染进程

  • electron中主进程和渲染进程之间的通信

  • electron中系统托盘的简单实现

  • electron应用程序的打包(windows环境下)

1:大前端的发展现状

现在前端的发展已经到了大前端的时代了。大前端时代是WEB统一的时代,利用html5或者6甚至7,不但可以开发传统的网站,做炫酷的网页动态效果,更可以实现BS架构应用程序、开发手机端web应用,移动端的app应用、移动端Native应用程序、智能设备(比如可穿戴智能手表,可穿戴智能衣服)等,同时使用node.js还可以实现后台开发。甚至还可以实现桌面应用程序的开发。下面我们要介绍的electron就是用来实现跨平台的桌面应用程序开发的。

2:electron介绍

Electron是由Github开发,用HTML,CSS和JavaScript来构建跨平台桌面应用程序的一个开源库。 Electron通过将ChromiumNode.js合并到同一个运行时环境中,并将其打包为Mac,Windows和Linux系统下的应用来实现这一目的。简单说,electron 是一个可以让我们使用js创建桌面应用程序的框架,并且可以很简单的实现跨平台,让我们可以更轻松的书写业务逻辑,而不用担心跨平台的问题

2.1.它能做什么

Electron 可以让我们使用纯 JavaScript 调用丰富的原生(操作系统) API 来创造桌面应用。除了常规的 HTML5 接口,这些应用能够使用所有的 Node.js 模块,以及 Electron 特有的模块

2.2.开发环境

你可以使用原生的Node.js开发环境来开发Electron应用。 为了打造一个Electron桌面程序的开发环境,你只需要安装好的Node.js、npm、一个顺手的代码编辑器,同时了解一些操作系统命令行客户端的常规操作

3:使用electron完成一个简易计算器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NFnugQN4-1577030250965)(E:\electron\文档资料\images\00-demo.png)]

3.1.初体验-展示一个桌面应用程序界面
  • electron的下载和引入

    npm install electron --save-dev
    npm install electron -g
    -----------------
    const {
          app,BrowserWindow } = require('electron'
  • app的ready事件:main.js

    • electron会自动的触发ready事件

    • 在这个事件中可以创建electron窗口

      app.on('ready', () => {
             
          hm_createWindow() //创建窗口的函数调用
      })
      
  • electron应用程序窗口的创建(hm_createWindow函数)

    • 引入BrowserWindow

    • 通过BrowserWindow函数创建窗口对象

    • 对窗口进行配置

      win = new BrowserWindow({
             
          width:390,
          height:670,
          //  设置标题
          title:'计算器'
      })
      
  • electron窗口的常见操作

    • 加载其它指定的页面

      win.loadURL(path.join(__dirname,'./views/index.html')) //使用了path模块生成路径
      
    • 开启调试工具

      win.webContents.openDevTools()
      
    • 添加关闭窗口的事件

      win.on('close',() => {
             
          // 实现关窗口之后的操作
          win = null
          // 关闭主窗口的时候同时也关闭整个应用程序
          app.quit()
      })
      
  • electron应用程序的启动

    • electron main.js
    • electron .
    • 添加package.json的script配置:“start”: “electron main.js”,之后使用npm start启动electron
3.2.添加应用程序的菜单项
  • 添加菜单项的方法:Menu.buildFromTemplate(菜单项模板)

  • 创建菜单项模板

    • label:菜单项文本设置

    • click:单击事件,指定事件处理函数

    • role:指定菜单项的角色

    • accelerator:触发当前菜单项的快捷键

    • 设置子菜单项:通过submenu设置

      let template = [
          {
             
              label:'计算器',
              submenu:[
                  {
             
                      label:'退出',
                      accelerator:'F11',
                      // role String (可选)-内置事件, 定义菜单项的行为, 当指定 click 属性时将被忽略
                      role:'quit',
                      click:() => {
             
                           app.quit()
                      }
                  }
              ]
          }
      ]
      
  • 添加菜单到应用程序:

    Menu.setApplicationMenu(menu)
    
3.3.主进程和渲染进程
  • 主进程:在Electron中运行package.json和main脚本的进程称为主进程。例如,main.js文件属于主进程,同时在main.js文件中直接引入的js文件也属于主进程(如:require(’./mainProcess/menu.js’))
  • 渲染进程:electron使用Chromium的多进程机制来渲染页面,每个页面拥有一个自己的进程,该进程称为渲染进程。如main.js文件中加载了index.html文件,在index.html文件中引入的index.js就属于渲染进程
  • 主进程和渲染进行之间通信的常见方式:(注意,这些方法全部需要在主进程已经创建了BrowserWindow之后才有效)
    • ipcRenderer用于渲染进程
      • ipcRenderer.on(channel, listener) --> channel为事件频道,字符串.listener为触发回调函数,用于响应webContent.send()
      • ipcRenderer.send(channel, data) --> 概念同上,用于向ipcMain发送异步信息
    • ipcMain用于主进程,响应从渲染进程中发送的消息
      • ipcMain.on(channel,listener) --> 响应从ipcRender中相同channel
    • event.sender:主进程监听到渲染进程发送的消息,在响应事件回调函数中使用event.sender.send()方法可以向渲染进程发送消息
    • webContent:ipcMain本身是无法直接发送事件的,只能通过响应事件回调的event来发送,那如果我们想先让主进程发送消息就可以使用webcontent.这个webcontent是在BrowserWIndow实例中的方法
      • webContent.send(channel,data) --> 主进程向渲染进程发送消息
  • 不同渲染进程之间共享数据
    • 我们可以简单的使用HTML5中提供的API来实现,如localStorage和sessionStorage
    • 在electron中,我们可以在主进程中将一个对象存储为全局变量,在渲染进程中通过remote模块进行操作
3.4.完成菜单项功能:颜色设置
  • 添加设置颜色的静态页面:color.html

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XdUtUlrn-1577030250966)(E:\electron\文档资料\images\01-setColor.png)]

  • 添加设置颜色菜单项

    {
         
        label:'颜色',
            click:() => {
         
                wh_createColorWindow()
            }
    
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
一个用全局勾子写简单的计算器,附源码。 神的寄语: 很明显,你应该是遇到了麻烦,或者是无意中按下了某个该死的组合键(Ctrl+F7),于是,你看到了这段话,不过这不重要,重要的是你要继续阅读下去,因为将会有一个编程天才--->不才在下小哥我--->申伟,给你带来无私的帮助。 很好,就这样,继续读,下面是快捷键的列表: 小键盘的所有键的功能,我就不想多说了。只说说这之外的特殊的几个。 退格键 <- 是的,它大多时候就长这个样子,或者你也可以叫它BackSpace,主要功能。。呃。。。嗯嗯。。。体会。。。悟性。。。。真谛。。。。好的,你删掉了一位数字。。。 清屏键 Ctrl+退格 是的,有时候垃圾数字就如同你现在看到的这些废话一样的多,一个一个的删掉会很累,所以,好吧,就这么一并删了吧。 开方 Ctrl+s 小学的时候觉得这个很是难算,不过还好,在这里不用感谢CCTV和MTV,因为他们并没有帮上什么忙,这一切的一切都归功于万能的Math。。。。 平方 Ctrl+p 呃。。。。嗯嗯。。。平方。。。是的平方。。你可以用它计算你家里床的面积,然后在上面尽情的打滚,不至于从上面摔下。。。 立方 Ctrl+c 比如你可以用它来计算你家里厕所的体积,以方便你下次好准备带多少大便进去解决。 取模 Ctrl+m 我并不是想把这个写得跟MSDN一样的详细,但是我可以把它写得像MSDN一样的烂。。。 正负转换 Ctrl+x 当然,也许MSDN写得并不烂。但是当你读过这些文字之后,你会发现其实,我比较看重实用性,就像刚才那个上厕所的例子。。。 OK,天才名字:申伟,QQ43725443,邮箱:jhkemail@163.com 如果你觉得你还没看够,或者喜欢有人唠叨,千万不要点击下面的按键。偶打字很累滴=。=!!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值