什么?不会C语言也可以搭建窗口级应用程序?(Electron)

第一章 搭建Electron框架

1.Electron是什么?

简单来说,Electron 就是给你的网页套了一个"浏览器壳"(Chromium),让它能在 Windows 和 Mac 上像独立软件一样运行。

它内部有两类进程:

  • 渲染进程 :负责显示你看到的界面(页面样式、按钮等),只管"展示",不参与任何计算或数据收集。
  • 主进程 :负责所有"幕后工作" ------调用 Electron 自带的各种系统 API(比如文件读写、系统通知),也可以调用外部接口。计算好或收集完数据后,通过 IPC 通道 把结果传给渲染进程,让界面显示出来。

简单概括:渲染进程管"看",主进程管"干",两者用 IPC 通信。

2. 搭建基本框架,让窗口显示出来

2.1 创建 package.json

先创建一个空白文件夹,在文件夹地址栏中输入 CMD(在当前目录下打开命令提示符),然后输入:

sh 复制代码
npm init -y

这条命令会自动生成 package.json 文件并填充默认字段。为本教程的目的,有几条规则需要留意:

  • 入口点main)应当为 main.js(你很快就会创建它)
  • authorlicensedescription 可以填任意值,但后面的打包步骤会用到它们
2.2 安装 Electron

在同一个 CMD 窗口中输入以下命令:

sh 复制代码
npm install electron --save-dev

回车后等待约 30 秒,可以看到文件夹中多出了两个内容:

  • node_modules 文件夹:存放 Electron 的各种依赖文件
  • package-lock.json 文件:用于锁定版本,保证团队协作时依赖一致性
2.3 修改package.json文件

打开 package.json,在 "scripts" 字段中添加一条启动命令(注意末尾要有逗号):

json 复制代码
"start": "electron ."

这条命令定义了 Electron 的启动方式。修改完成后记得 Ctrl+S 保存。

2.4 创建主进程文件 main.js

在根目录中创建 main.js 文件,写入以下代码:

js 复制代码
const { app, BrowserWindow } = require('electron')

const createWindow = () => {
  const win = new BrowserWindow({
    width: 800,
    height: 600
  })

  win.loadFile('index.html')
}

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

这就是前文提到的主进程文件。它定义了窗口尺寸、要加载的 HTML 页面,以及应用启动时的行为。

2.5 创建渲染进程文件 index.html

在根目录中创建 index.html 文件,写入以下代码:

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 from Electron renderer!</title>
  </head>
  <body>
    <h1>Hello from Electron renderer!</h1>
    <p>👋</p>
  </body>
</html>

这就是渲染进程------说白了就是最普通的 HTML 网页代码。

2.6 启动 Electron 项目

准备工作完成后,在终端中执行以下命令,即可启动 Electron 应用:

sh 复制代码
npm run start

看到窗口弹出来了吧?其实挺简单的。不过后续会涉及进程间通信(IPC)、Electron API 或外部 API 的调用,那部分可能会稍微复杂一些。慢慢来,一步步掌握就好。

相关推荐
wifi___16 小时前
全局异常处理的原理
java·开发语言
平常心的技术小牛20 小时前
Qt-快速上手-QMenuBar
开发语言·qt
青 春 记 忆20 小时前
零基础入门Python11|Git实战:为任务管理器建立版本历史
开发语言·git·vscode·python·python3.11
余额瞒着我当琳1 天前
C++--深拷贝三件套 + swap + 写时拷贝 + vector 扩容 + reserve
java·开发语言·c++
坐吃山猪1 天前
WebClient内存配置解析
开发语言·springboot·webflux
jdksjw1 天前
同步与异步、阻塞与非阻塞、多线程、协程超详细讲解(Python并发编程从入门到精通)
开发语言·python
Zach_菠萝侠1 天前
【DeepSeek Harness 研究】进化方向4:安全加固 思考、设计与实现
开发语言·安全·deepseek
SL-staff1 天前
技术实践:HR如何用JVS-Logic可视化编排实现考勤数据同步(含节点配置与异常处理)
开发语言·python·低代码·钉钉·可视化编排·jvs-logic·hr技术
SomeB1oody1 天前
【RustyML入门】6.0. 数学工具
开发语言·后端·机器学习·rust·教程
进制树1 天前
【飞控开发实战·⑲】ROS2无人机开发环境搭建:Jazzy安装、工作空间与hello_drone节点实战
开发语言·安全·无人机·课程设计