Electron快速入门

663 阅读1分钟

官网

一、Hello World

1. 安装electron

官网安装文档 npm install --save-dev electron@version image.png

  • 镜像安装
ELECTRON_MIRROR="https://npm.taobao.org/mirrors/electron/"
ELECTRON_CUSTOM_DIR="{{ version }}"
ELECTRON_USE_REMOTE_CHECKSUMS=1 // 设置为 Electron 使用远程 SHASUMS256.txt 文件来验证校验

npm install --save-dev electron@9.4.4

image.png

  • 离线安装

下载离线版本,运行命令npm install --save-dev electron@version 执行到node install.js时,ctr + c结束运行 image.png 将下载的electron离线文件electron-v9.3.0-darwin-x64.zip放到路径 node_modules/electron/下 找到node_modules/electron/install.js 文件里面的downloadArtifact方法,改成如下的代码

// downloads if not cached
extractFile('./electron-v9.4.0-darwin-x64.zip')

// downloadArtifact({
//   version,
//   artifactName: 'electron',
//   force: process.env.force_no_cache === 'true',
//   cacheRoot: process.env.electron_config_cache,
//   platform: process.env.npm_config_platform || process.platform,
//   arch: process.env.npm_config_arch || process.arch
// }).then(extractFile).catch(err => {
//   console.error(err.stack)
//   process.exit(1)
// })

在node_modules/electron路径下打开终端,运行node install.js, 安装成功 在项目根目录下运行 npx electron --version 查看版本 image.png

2. 创建文件index.html, main.js

index.html

// index.html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP -->
    <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'">
    <meta http-equiv="X-Content-Security-Policy" content="default-src 'self'; script-src 'self'">
    <title>Hello World!</title>
  </head>
  <body>
    <h1>Hello World!</h1>
    We are using Node.js <span id="node-version"></span>,
    Chromium <span id="chrome-version"></span>,
    and Electron <span id="electron-version"></span>.
  </body>

main.js 注意在package.json中指定入口文件 "main": "main.js"

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

function createWindow() {
    const win = new BrowserWindow({
        width: 800,
        height: 600,
        webPreferences: {
            preload: path.join(__dirname, 'preload.js')
        }
    })

    win.loadFile('index.html')
}


app.on('window-all-closed', function () {
    if (process.platform !== 'darwin') app.quit()
})

app.whenReady().then(() => {
    createWindow()

    app.on('activate', function () {
        if (BrowserWindow.getAllWindows().length === 0) createWindow()
    })
})

preload.js

window.addEventListener('DOMContentLoaded', () => {
    const replaceText = (selector, text) => {
        const element = document.getElementById(selector)
        if (element) element.innerText = text
    }

    for (const dependency of ['chrome', 'node', 'electron']) {
        replaceText(`${dependency}-version`, process.versions[dependency])
    }
})

3. 启动应用

在package.json scripts中加运行命令 或者直接运行npx electron . image.png image.png 注意: webpack打包文件时,指定target为 electron-renderer webpack.docschina.org/configurati… image.png

二、打包应用程序

electron-forgeelectron-builderelectron-packager

1. electron-forge

npm install --save-dev @electron-forge/cli npx electron-forge import // 使用其"import"命令设置 Forge 的脚手架 官方文档 image.png 使用make命令打包应用程序 npm run make image.png 打包成功后应用程序会在out文件夹下 image.png