1. 搭建一个electron

114 阅读3分钟

认识 electron

electron 是基于 chromiumNode.js 让你可以使用 html cssjavascript 构建应用,electron 兼容Mac,Windows,Linux ,可以构建出三个平台的应用程序

搭建第一个 electron

// 创建一个新目录
mkdir electron-demo
// 来到目录下
cd electron-demo
// 初始化npm
npm init -y
// 安装 electron, 注意 nodejs 的版本需要大于 16 , 通过 node -v可查看版本
npm i electron -D
// 为了保持热更新,我们还需要安装一个 nodemon, 这里也可以通过 -g 全局安装
npm i nodemon -D

执行到这里,我们的第一个 electron 项目已经初步搭建好了, 我们先初步了解一下electron 的核心模块 appBrowserWindow

app

appelectron中的一个核心模块,它控制着应用的事件生命周期。 通过app模块可以控制应用的事件如readywindow-all-closed等。

BrowserWindow

BrowserWindowelectron中用于创建浏览器窗口的模块。通过BrowserWindow可以创建出一个浏览器窗口,然后我们可以对这个窗口进行加载url、控制大小、设置菜单等操作。

new BrowserWindow({...})中的参数用于配置创建出来的浏览器窗口的各种属性,常见的有:

  • width、height:设置窗口的宽度和高度

  • minWidth、minHeight:设置窗口的最小宽度和高度

  • maxWidth、maxHeight:设置窗口的最大宽度和高度

  • x、y:设置窗口的初始位置

  • resizable:是否可以改变窗口大小,默认为true

  • fullscreen:是否全屏显示,默认为false

  • titleBarStyle:标题栏样式,默认为default

  • webPreferences:用于配置与渲染进程相关的参数

    • nodeIntegration:是否集成node.js,默认为false
    • contextIsolation:上下文隔离,默认为true
    • preload:指定预加载的js文件路径

运行electron

一个基本的electron应用通常会先通过app.on('ready')监听应用ready事件,然后在这个事件回调函数里面new BrowserWindow,然后加载url。

首先创建一个main.js文件, 同时修改package.json 的入口文件问 main.js,接着我们去试着使用一下

// main.js
const { app, BrowserWindow } = require('electron')

const createWindows = () => {
  const win = new BrowserWindow({
    width: 1280,
    height: 800
  })

  // win.loadURL('https://lsk_ciao.gitee.io/vue-web-admin-frame')
  win.loadFile('index.html')
  // 打开控制台调试工具
  win.webContents.openDevTools()
}

app.whenReady().then(createWindows)

app负责应用生命周期,BrowserWindow负责创建浏览器窗口。二者都是electron中的核心模块,需要配合使用来开发出基本的electron应用,上例中我们创建了win实例, 我们可以通过 win 实例的loadFile加载本地文件的内容,也可以loadURL去加载一个线上环境的内容, 我们可以试试加载本地内容, 项目根目录下创建一个index.html ,如下:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    // 这个 meta 标签是为了消除不安全的警告,使用了 CSP 安全策略
    <meta
      http-equiv="Content-Security-Policy"
      content="default-src 'self'; img-src https://*; child-src 'none';"
    />
    <title>Document</title>
  </head>
  <body>
    <h2>第一个electron应用</h2>
  </body>
</html>

注意这个meta标签的内容, 我们使用了内容安全策略(CSP) - HTTP | MDN来消除控制台的警告,

此时我们想看看效果的话,可以去package.json中配置一下script 脚本指令"start": "nodemon --exec electron .",我们使用electron提供的脚本搭配nodemon 提供的热更新配置即可

// pageage.json
{
  "name": "electron-demo",
  "version": "1.0.0",
  "description": "",
  "main": "main.js",
  "scripts": {
    "start": "nodemon --exec electron ."
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "electron": "^27.0.0"
  }
}

执行 npm start 即可打开窗口看到内容了,windows环境下应该长这样

eb7599daf0b24f4cb9e6a733b969cc33转存失败,建议直接上传图片文件

至此,我们已经初步学习了 electron 并使用它搭建了我们的第一个应用