news 2026/4/22 22:13:52

Electron 快速入门教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Electron 快速入门教程

Electron 是一个基于Node.jsChromium的跨平台桌面应用开发框架,你可以用 HTML、CSS、JavaScript 构建 Windows、macOS、Linux 三端一致的桌面应用,比如 VS Code、Figma 都是基于 Electron 开发的。

本教程会带你从环境搭建打包第一个应用,快速上手 Electron 开发。

一、前置条件

  1. 安装 Node.js
    确保你的电脑已安装 Node.js(推荐 LTS 版本),可以通过以下命令验证:

    node-vnpm-v

    下载地址:Node.js 官网

  2. 基础技术储备
    熟悉 HTML、CSS、JavaScript 基础语法,了解 Node.js 基本使用(如require、模块)。

二、步骤 1:创建项目并初始化

  1. 新建项目文件夹

    mkdirmy-first-electron-appcdmy-first-electron-app
  2. 初始化 npm 项目
    执行命令并根据提示填写信息(也可以直接npm init -y快速生成):

    npminit

    生成的package.json需要确保两个关键配置:

    • main:入口文件(默认index.js,后续会编写)
    • scripts:添加启动脚本

三、步骤 2:安装 Electron

在项目根目录执行安装命令(推荐安装到开发依赖):

npminstallelectron --save-dev

四、步骤 3:编写核心代码

Electron 应用分为主进程渲染进程,我们需要编写 3 个核心文件:main.js(主进程)、index.html(渲染进程页面)、package.json(配置脚本)。

1. 配置 package.json

修改package.json,添加启动脚本start

{"name":"my-first-electron-app","version":"1.0.0","description":"A simple Electron app","main":"main.js","scripts":{"start":"electron ."},"devDependencies":{"electron":"^28.0.0"}}

2. 编写主进程文件:main.js

主进程负责管理窗口生命周期、系统事件、IPC 通信等,是 Electron 应用的入口。

// 引入 Electron 的核心模块const{app,BrowserWindow}=require('electron');constpath=require('path');// 定义创建窗口的函数functioncreateWindow(){// 创建一个浏览器窗口constmainWindow=newBrowserWindow({width:800,// 窗口宽度height:600,// 窗口高度webPreferences:{// 预加载脚本路径(可选,用于安全暴露 API)preload:path.join(__dirname,'preload.js')}});// 加载本地的 index.html 文件mainWindow.loadFile('index.html');// 开发环境下,打开开发者工具(可选)// mainWindow.webContents.openDevTools();}// Electron 初始化完成后,创建窗口app.whenReady().then(()=>{createWindow();// macOS 特有:当所有窗口关闭后,重新打开窗口app.on('activate',()=>{if(BrowserWindow.getAllWindows().length===0){createWindow();}});});// 所有窗口关闭后,退出应用(Windows & Linux)app.on('window-all-closed',()=>{if(process.platform!=='darwin'){app.quit();}});

3. 编写预加载脚本(可选):preload.js

预加载脚本运行在渲染进程中,但拥有 Node.js 权限,用于安全地向渲染进程暴露 API,避免直接在渲染进程中操作 Node.js 带来的安全风险。

const{contextBridge}=require('electron');// 向渲染进程暴露全局 APIcontextBridge.exposeInMainWorld('electronAPI',{appVersion:()=>process.versions.electron});

4. 编写渲染进程页面:index.html

这是应用的界面,和普通网页完全一致,你可以用任何前端框架(Vue/React)替换。

<!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>我的第一个 Electron 应用</title><style>body{text-align:center;padding:50px;font-family:Arial,sans-serif;}</style></head><body><h1>Hello Electron!</h1><p>当前 Electron 版本:<spanid="version"></span></p><script>// 调用预加载脚本暴露的 APIdocument.getElementById('version').innerText=window.electronAPI.appVersion();</script></body></html>

五、步骤 4:运行应用

在项目根目录执行启动命令:

npmstart

此时会弹出一个 800×600 的窗口,显示Hello Electron!和当前 Electron 版本,说明应用运行成功。

六、步骤 5:打包应用(生成可执行文件)

开发完成后,需要将应用打包成对应平台的可执行文件(如.exe.dmg.deb),推荐使用electron-forge工具。

  1. 安装 electron-forge

    npminstall--save-dev @electron-forge/cli npx electron-forgeimport
  2. 打包应用

    npmrunmake

    打包完成后,会在项目根目录生成out文件夹,里面包含对应平台的可执行文件:

    • Windows:out/my-first-electron-app-win32-x64下的.exe文件
    • macOS:out下的.dmg文件
    • Linux:out下的.deb.snap文件

七、核心概念梳理

进程类型作用运行环境
主进程管理窗口、系统事件、IPC 通信、权限操作(文件读写、网络请求)Node.js 环境
渲染进程负责应用界面渲染,和普通网页一致Chromium 环境
预加载脚本作为主进程和渲染进程的桥梁,安全暴露 API两者之间

八、进阶方向

  1. IPC 通信:使用ipcMain.handle+ipcRenderer.invoke实现主进程和渲染进程的数据交互(如读取本地文件)。
  2. 集成前端框架:将index.html替换为 Vue/React 项目的打包产物,开发更复杂的界面。
  3. 添加系统功能:集成托盘图标、菜单、快捷键、文件拖拽等 Electron 特有能力。
  4. 性能优化:关闭不必要的开发者工具、优化渲染进程、使用内存缓存。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/21 23:50:15

Python 金融初级学习计划(金融专业学生版)

目录 核心设计原则&#xff08;兴趣提升关键&#xff09; 前置准备&#xff08;1 天搞定&#xff0c;零门槛&#xff09; 1. 工具安装&#xff08;一键完成&#xff0c;不用配环境&#xff09; 2. 数据来源&#xff08;免费无门槛&#xff09; 第一阶段&#xff1a;入门准…

作者头像 李华
网站建设 2026/4/20 13:56:26

CAPTCHA 验证码自动化处理方案

一、验证码在测试中的挑战与自动化必要性 CAPTCHA&#xff08;全自动公共图灵测试&#xff09;是网站防止机器人滥用的核心防护机制&#xff0c;但在软件测试中常成为自动化流程的“绊脚石”。例如&#xff0c;UI自动化测试或持续集成&#xff08;CI&#xff09;流程中&#x…

作者头像 李华
网站建设 2026/4/18 15:07:08

一周之内,32G DDR3由200涨到350

上周电脑升级&#xff0c;32G DDR3 200&#xff0c;觉得贵。 这几天研究了一下存储形式&#xff0c;判断还要大涨&#xff0c;于是就想多买几条。结果已经要350了。

作者头像 李华
网站建设 2026/4/21 12:12:20

硬件架构的艺术:工程师视角下的数字电路设计方法与技术

在数字电路工程里&#xff0c;“功能能跑”只是及格线。真正拉开差距的&#xff0c;是架构是否稳健、时钟是否干净、跨时钟是否可靠、功耗是否可控、系统是否可长期维护。《硬件架构的艺术&#xff1a;数字电路的设计方法与技术》这本书&#xff0c;正是站在工程实践而非纯理论…

作者头像 李华
网站建设 2026/4/18 6:28:36

Oracle迁移避坑实战:一位DBA的“兼容性”与“成本”权衡日记

Oracle迁移避坑实战&#xff1a;一位DBA的“兼容性”与“成本”权衡日记 当领导拍板决定“去O”那一刻&#xff0c;我就知道&#xff0c;未来三个月甚至更长时间&#xff0c;我的工作和血压都将迎来巨大挑战。从“问题词”的诡异报错&#xff0c;到“兼容性挑战”的层层剥茧&am…

作者头像 李华