什么?不会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 的调用,那部分可能会稍微复杂一些。慢慢来,一步步掌握就好。

相关推荐
geovindu19 小时前
Java: Chain of Responsibility Pattern
java·开发语言·后端·设计模式·责任链模式·行为模式
Cachel wood20 小时前
hands-on-modern-rl:动手学强化学习 贝尔曼方程
开发语言·网络·python·学习·embedding
格兰芬多呼神护卫20 小时前
# Agent 企业评估方案深度分析:从“看答案”到持续质量闭环_码士教育
java·开发语言·jvm
冻柠檬飞冰走茶20 小时前
PTA基础编程题目集 7-24 约分最简分式(C语言实现)
c语言·开发语言·数据结构·算法
weixin_5859511721 小时前
CH592F 2.4G 低功耗
c语言·开发语言
秋田君21 小时前
QT_QInputDialog类输入对话框
开发语言·qt
name好难取诶21 小时前
通过对云基座和离线基座的对比,帮助开发者理解如何在不同场景下选择合适的打包方案。 什么是“基座” 在 UniApp 中,基座(也称“ ...
开发语言·uni-app·php
程序喵大人1 天前
【C++进阶】STL容器与迭代器 - 07 迭代器是容器和算法之间的通用游标
开发语言·c++·算法
名字还没想好☜1 天前
Next.js App Router 约定式文件实战:loading、error、not-found 怎么兜住加载态与异常
开发语言·前端·javascript·react·next.js