Electron 开发: 六千字完整教程

前言

本文包含打包自动更新简易API调试进程通信等相关知识点,内容较多,请酌情查看。

electron

简介

Electron 是由 Github 开发,是一个用 Html、css、JavaScript 来构建桌面应用程序的开源库,可以打包为 Mac、Windows、Linux 系统下的应用。

Electron 是一个运行时环境,包含 Node 和 Chromium,可以理解成把 web 应用运行在 node 环境中

结构

Electron 主要分为主进程和渲染进程,关系如下图


image.png

Electron 运行 package.json 中的 main 字段标明脚本的进程称为主进程

在主进程创建 web 页面来展示用户页面,一个 Electron 有且只有一个主进程

Electron 使用 Chromium 来展示 web 页面,每个页面运行在自己的渲染进程

快速开始

接下来,让代码来发声,雷打不动的 hello world

创建文件夹,并执行 npm init -y,生成 package.json 文件,下载 electron 模块并添加开发依赖

mkdir electron_hello && cd electron_hello && npm init -y && npm i electron -D

下载速度过慢或失败,请尝试使用cnpm,安装方式如下

# 下载cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org
# 下载electron
cnpm i electron -D

创建index.js,并写入以下内容

const {app, BrowserWindow} = require('electron')
// 创建全局变量并在下面引用,避免被GC
let win
function createWindow () {
    // 创建浏览器窗口并设置宽高
    win = new BrowserWindow({ width: 800, height: 600 })
    
    // 加载页面
    win.loadFile('./index.html')
    
    // 打开开发者工具
    win.webContents.openDevTools()
    
    // 添加window关闭触发事件
    
    win.on('closed', () => {
        win = null  // 取消引用
    })
}

// 初始化后 调用函数
app.on('ready', createWindow)  
// 当全部窗口关闭时退出。
app.on('window-all-closed', () => {
   // 在 macOS 上,除非用户用 Cmd + Q 确定地退出,
   // 否则绝大部分应用及其菜单栏会保持激活。
   if (process.platform !== 'darwin') {
        app.quit()
   }
})
  
app.on('activate', () => {
// 在macOS上,当单击dock图标并且没有其他窗口打开时,
// 通常在应用程序中重新创建一个窗口。
    if (win === null) {
      createWindow()
    }
})

创建index.html

<!DOCTYPE html>
<html>
    <head>
      <meta charset="UTF-8">
      <title>Hello World!</title>
    </head>
    <body>
        <h1 id="h1">Hello World!</h1>
        We are using node
        <script>
            document.write(process.versions.node)
        </script>
        Chrome
        <script>
            document.write(process.versions.chrome)
        </script>,
        and Electron
        <script>
            document.write(process.versions.electron)
        </script>
    </body>
</html>

最后,修改 packge.json 中的 main 字段,并添加 start 命令

{
    ...
    main:'index.js',
    scripts:{
        "start": "electron ."
    }
}

执行 npm run start 后,就会弹出我们的应用来。

image.png

调试

我们知道 Electron 有两个进程,主进程和渲染进程,开发过程中我们需要怎么去调试它们呢?老太太吃柿子,咱们捡软的来

渲染进程

BrowserWindow 用来创建和控制浏览器窗口,我们调用它的实例上的API即可

win = new BrowserWindow({width: 800, height: 600})
win.webContents.openDevTools() // 打开调试

调试起来是和 Chrome 是一样的,要不要这么酸爽

image.png

主进程

使用 VSCode 进行调试

使用 VSCode 打开项目,点击调试按钮


image.png

点击调试后的下拉框


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
支付 ¥13.99 继续阅读

推荐阅读更多精彩内容