Electron 开发入门

361 阅读2分钟

从开发的角度来说,Electron应用本质上是一个Node.js 应用。

核心内容

  • Electron包含三个核心
    • Chromium 用于显示网页内容
    • Node JS 用于本地文件系统和操作系统
    • 自定义APIs 用于使用经常需要的OS本机函数
  • 主进程和渲染进程
    • 主进程通过创建BrowserWindow实例来创建网页。每个实例在起渲染过程中运行网页,当实例销毁时,对应渲染过程也会被终止。
    • 主进程管理所有网页及其对应的渲染进程,渲染进程只能管理相应的网页。
    • 渲染进程通过IPC于主进程通信在网页上执行GUI操作。

安装

// 创建一个文件夹并安装Electron
mkdir my-electron-app && cd my-electron-app
npm init -y
npm i --save-dev electron

API

  • app:控制应用程序的事件生命周期(主进程)
    • whenReady():当Electron完成初始化,返回Promise
    • isReady():如果Electron完成初始化,返回true
    • app对象会发出以下事件:app.on(event, function(){})
      • ready:当Electron完成初始化时,发出一次
      • window-all-closed:当所有的窗口都被关闭时触发
      • quit:在应用程序退出时发出,windows系统中系统关机重启注销时事件不触发
  • BrowserWindow:创建和控制浏览器窗口(主进程)
    • 无边框窗口:将frame设置为false
    • 保留窗口控制按钮:将titleBarStyle设置为hidden
    • 透明窗口:将transparent设置为true
    • 父子窗口:新建一个BrowserWindow实例,将parent设置为父窗口实例
    • 网页功能设置:webPreferences
      • 启用node集成:将nodeIntegration 设置为true
      • 启用远程模块:将enableRemoteModule 设置为true
      • 禁用同源策略:将webSecurity 设置为false
      • 启用插件:将plugins 设置为true
    • 实例方法:
      • 加载html文件:win.loadFile( filePath[, options] )
      • 加载url地址:win.loadURL(url[, options])
      • 开启控制台:win.webContents.openDevTools()
      • 显示并聚焦于窗口:win.show()
    • 实例会发出以下事件:win.on(event, () => {})
      • ready-to-show:渲染进程第一次绘制后窗口未被显示,渲染进程会发出该事件。
      • close:当窗口关闭时发出,收到此事件后需要手动删除对窗口的引用,并避免再次使用它。
  • ipcMain:从主进程到渲染进程的异步通信(主进程)
    • 发送消息:可以从主进程向渲染进程发送消息
      • 发送消息时,事件名称为 channel
      • 回复同步消息时,需要设置event.returnValue值
      • 回复异步消息时,使用event.reply(channel, 回复值)
    • 以下方法来侦听事情
      • on(channel, listener(event, args))  监听channel,当接受到新消息时listener回调函数会被调用
      • once(channel, listener) 监听channel第一次调用,回调触发之后移除该监听
    • 渲染进程向主进程发送消息例子: *渲染进程发送数据:ipcRenderer.send('channel-message', '渲染进程的数据') *主进程监听接收数据:ipcMain.on('channel-message', (event, arg) => { // arg == '渲染进程的数据' })