ITPub博客

首页 > 应用开发 > Javascript > 技术解读:鸿蒙PC软件开发框架:ElectronEgg,一套代码,从桌面到鸿蒙_electron egg

技术解读:鸿蒙PC软件开发框架:ElectronEgg,一套代码,从桌面到鸿蒙_electron egg

Javascript 作者:VortexGrid 时间:2026-10-19 09:40:06 0 删除 编辑

摘要

ElectronEgg 是一个基于 Electron 的企业级桌面应用框架,累计 8000+ Star,经过大量团队长期实践验证。v5 最大的变化之一,是同一套代码除了打包 Windows、Mac、Linux,还能直接跑在鸿蒙上。本文把鸿蒙支持能力、环境搭建、资源构建与配置这条链路完整走一遍。

一、ElectronEgg 简介

ElectronEgg 自开源以来,愿景很简单: 让所有开发者都能学会桌面软件研发 。它把前端、服务端的工程化思维带进桌面开发,用一套清晰的 controller / service / preload 分层架构,把 Electron 的复杂度封装起来。

在这里插入图片描述
在这里插入图片描述

v5 在这个基础上做了一次整体升级,其中我们花力气最多的一件事,就是让 ElectronEgg 能跑在鸿蒙设备上。目前还是 测试阶段 ,但整条流程已经跑通了。

1.1 鸿蒙支持:一套代码,跑在 HarmonyOS 上

过去把 Electron 应用搬到鸿蒙上,几乎等于重写一遍。v5 的做法是把构建产物放进 HarmonyOS HAP,交给 HAP 工程的 web 引擎加载——现有的 ElectronEgg 业务代码几乎不用动,就能以鸿蒙应用的形式跑起来。

原本在 Windows / Mac 上运行的那套应用,在鸿蒙端的安装和各项功能都已经验证过了。

在这里插入图片描述

1.2 框架功能

  • TypeScript 全面重构 :所有 API 都有完整类型定义,ee-bin 也补齐了类型体系

  • 双模块格式输出 :CJS 和 ESM 都支持

  • 主进程打包 :主进程代码可以像前端一样 bundle;配套的构建注册表插件复现了运行时的属性名映射逻辑,打包不了的零散文件(比如 jobs)单独转译

  • 构建配置增强 :新增大量精细控制项(minify、drop、external、copy 等)

  • 资源原子化移动 :避免中途失败丢数据

  • Node.js 版本提升 :最低 Node.js >= 20.19.0

  • Pino 日志体系 :日志能力整体重做

  • Bundle 注册表机制 :启动更快

  • 异步控制器加载 :支持 ESM 动态导入,避免同步/异步并发竞争;并发请求之间明确保证无状态污染

  • 配置加载 ESM 兼容 :自动解包 __esModule ,支持函数/类导出

  • EventBus 事件隔离 :生命周期事件不再互相干扰

  • Cross 跨进程改进 :Go / Python 子进程的拉起与日志处理更顺手

  • 加密系统升级 :混淆加密内置到构建链,一条命令搞定(详见第 06 篇的实测)

1.3 谁适合用

  • 想用前端技术栈(Vue / React / HTML)做桌面软件的开发者

  • 需要把内部工具、管理后台、办公软件交付为桌面应用团队

  • 要同时覆盖 Windows、Mac、Linux, 以及鸿蒙 的产品

  • 希望降低 Electron 上手成本、想要一套清晰架构的团队

无论你是前端、服务端、运维还是客户端开发者,都能很快入门。

1.4 开源仓库

  • 框架仓库(AtomGit): https://atomgit.com/dromara/electron-egg

  • 鸿蒙 PC 适配仓(AtomGit PC 社区): https://atomgit.com/OpenHarmonyPCDeveloper/ohos_electron-egg

二、开发准备

2.1 开发资料

  • 鸿蒙应用知识地图 (必看)

  • 鸿蒙系统开发导读 (非必看)

  • Electron 鸿蒙化指导文档 (非必看)

  • 鸿蒙三方库 (了解)

  • 鸿蒙 PC 开发者社区

2.2 环境准备

  • 准备一台 macOS M 芯片电脑 ,方便本地模拟器调试。如果是 Windows 或 macOS Intel 芯片电脑,需要鸿蒙真机设备调试。因为鸿蒙 Electron 是构建好的 arm64 架构软件,非 M 芯片电脑无法运行 arm 架构模拟器。

  • 下载 DevEco Studio

  • 下载 鸿蒙 Electron

2.3 DevEco 设置资源目录(macOS 可忽略)

可选:把系统组件、SDK、模拟器等,下载到非 C 盘,避免占用 C 盘空间:

  • ark-ui 目录修改: D:\dev_soft\harmony\ArkUI-X\Sdk

  • codeGenie / 知识库 / 文档: D:/dev_soft/harmony/Doc

  • OpenHarmonySdk: D:\dev_soft\harmony\OhSdk

  • 设备管理器: D:/dev_soft/harmony/emulator

2.4 获取一个示例项目

  • 下载示例项目

git
clone https://atomgit.com/OpenHarmonyPCDeveloper/ohos_electron-egg.git
  • 下载官方框架,主要是为了获取 ohos_hap/electron 资源

git
clone https://atomgit.com/dromara/electron-egg.git
git
checkout
-b
demo-ohos remotes/origin/ohos/demo-37.2.2
  • 把 electron-egg/ohos_hap/electron/libs 整个目录复制(或替换)到 ohos_electron-egg/ohos_hap/electron/libs 。 这里放的是构建好的引擎运行时库,体积比较大,没有跟着示例项目一起托管,建议你放进自己的仓库里。

  • 工程目录结构

ohos_electron-egg
├── electron/          # 主进程源码(controller / service / preload)
├── frontend/          # Vue 3 前端
├── go/                # Go 后端(可选)
├── cmd/               # bin.js 与 builder*.json 构建配置
├── public/            # 构建产物与静态资源
└── ohos_hap/          # 鸿蒙 HAP 工程
    ├── AppScope/      # 应用级配置与图标资源
    ├── electron/      # 鸿蒙 entry HAP(Ability、ArkUI 页面)
    └── web_engine/    # 核心 HAR 引擎层,承载前端资源

2.5 构建资源

把 electron-egg-ohos 项目构建产物,同步到 ohos_hap 工程的资源目录中。

注意: cmd/builder-xxx.json 中的 asar 属性需要是 false 。
  • 构建 ElectronEgg 产物

npm
run build-m
  • 同步资源到 ohos_hap 资源目录

npm
run ohos
  • (可选)不打包,直接复制资源到 ohos_hap 资源目录,用于代码修改后的快速测试

npm
run ohos-test

三、使用 DevEco Studio 运行项目

3.1 打开项目

  • 启动 DevEco Studio

  • 选择 File -> Open

  • 打开 ./ohos_hap 目录

3.2 配置签名

如果是首次运行,需要配置应用签名:自动生成调试签名或配置发布签名。

在这里插入图片描述

3.3 连接鸿蒙真机设备

使用 USB Type-C 数据线连接开发电脑和鸿蒙设备。

在设备上启用开发者模式和 USB 调试模式:

  • 激活开发者模式 :进入「设置」> 搜索或找到「软件版本」,连续快速点击 7 次,弹出确认框后点击"确定";部分版本需重启设备生效。

  • 进入开发者选项 :重启后返回「设置」>「系统」>「开发者选项」(若未显示请确认已重启且处于机主模式)。

  • 开启 USB 调试 :在开发者选项列表中找到"USB 调试",点击开关并确认弹窗授权;HarmonyOS 5+ 可能需同步开启"仅充电模式下允许 ADB 调试"(若存在该选项)。

  • 连接验证 :使用原装 USB 线连接电脑,手机端弹出"允许 USB 调试"对话框时勾选"始终允许"并确认;通知栏 USB 用途建议选择"文件传输/MTP"。

在 DevEco Studio 中确认设备已连接(顶部工具栏会显示设备名称)。

3.4 编译和运行

点击「运行」按钮,系统会自动进行以下操作:

  • 编译 HAP 包

  • 重新签名

  • 安装到设备

  • 启动应用

在这里插入图片描述

四、调试

4.1 渲染进程调试

调用 openDevTool() API 来打开开发者工具。

4.2 主进程调试

控制台日志

由于 IDE 打印的日志较多,你可以在控制台搜索过滤。其中 ... [ohos] xxx ... 是代码里 console 打印的日志。

在这里插入图片描述

文件日志

/storage/Users/currentUser/appdata/el2/base/com.electronegg.ohos/files/应用名/data
/storage/Users/currentUser/appdata/el2/base/com.electronegg.ohos/files/应用名/logs

五、鸿蒙资源配置

5.1 配置方法

上一节用的现成命令,背后就是这段配置。资源提取由 ee-bin 的 ohos 命令完成,规则沿用 electron-builder 的 extraResources FileSet 规范( from / to / filter )。在 bin.js 的 ohos 字段下按用途分组声明,每个条目是一个 FileSet:

module
.
exports
=
{
ohos
:
{
resources
:
[
{
from
:
'./out/mac-arm64/ee.app/Contents/Resources/app'
,
to
:
'./ohos_hap/web_engine/src/main/resources/resfile/resources/app'
,
filter
:
[
"**/*"
,
"!README.md"
,
"!README.zh-CN.md"
]
}
,
{
from
:
'./build/extraResources-ohos'
,
to
:
'./ohos_hap/web_engine/src/main/resources/resfile/resources/extraResources'
,
filter
:
[
"**/*"
]
}
]
}
}

5.2 配置字段说明

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| from | string | 源路径(相对项目根目录),即要拷贝的构建产物 |
| to | string | 目标路径(相对项目根目录),位于 HAP 资源目录内 |
| filter | string[] | glob 匹配规则。 **/* 匹配所有; !pattern 表示排除。默认 ['**/*'] |

5.3 使用命令

package.json 里的两个脚本分别对应上面两组配置:

npm
run ohos
npm
run ohos-test

--cmds 接受逗号分隔的 ohos 下的 key 列表;省略则处理 ohos 下所有数组类型的配置项。

六、迁移能力分档:T0 / T1 / T2

「能不能跑在鸿蒙上」这个问题的答案,分三档看才准确。下面按 T0 / T1 / T2 给出 ElectronEgg 当前的支持程度,验收口径都落在具体动作上,不做模糊表述。

| 阶段 | 目标 | 验收内容 |
| --- | --- | --- |
| T0:可启动 | HAP 能安装并打开首页 | npm run build-m 产出 arm64 产物; npm run ohos 同步进 HAP 工程;DevEco Studio 编译签名后安装、启动 EntryAbility,主界面正常显示、无白屏 |
| T1:核心业务可用 | 前端资源与主进程能力可用 | Vue 前端资源随 HAP 加载;controller / service 路由正常;IPC 调用有返回;窗口创建、日志落盘正常 |
| T2:可发布 | 覆盖产品的实际使用边界 | 多窗口与多实例、托盘、系统通知、网络权限声明、代码加密、自动升级按目标设备与业务场景逐项回归 |

三档的关系是递进的:T0 不通过,后面都是空谈;T1 决定框架能力有没有真的用上;T2 则是把「能跑」推到「能交付」。

  • T0、T1 已经在鸿蒙真机上跑通 ,本文第三章的操作流程就是走这两档。

  • T2 不是一次性完成的清单 ,而取决于业务实际用到了哪些桌面能力——用到托盘就验托盘,用到通知就验通知,每项都要在目标设备上重新确认。桌面端能跑不等于 HAP 自动具备同样权限,这一点在第三篇《功能适配鸿蒙PC》里有展开。

项目的迁移能力与分档结论同样写在仓库的 README.OpenHarmony_CN.md 里,随版本更新。

七、总结

ElectronEgg v5 的鸿蒙支持,让前端开发者不用再去啃一套全新的鸿蒙原生开发体系,用熟悉的技术栈(Vue / React / HTML + Electron)就能做出鸿蒙 PC 应用。整条链路其实就四步:装好 DevEco Studio 和鸿蒙 Electron, npm run build-m 出 arm64 产物, npm run ohos 同步进 HAP 工程,最后用 DevEco Studio 打开 ohos_hap 、连真机跑起来。

桌面软件(办公类、个人工具)未来十几年仍然是 PC 端的刚需。框架已经在记账、政务、企业、医疗、学校、股票交易、ERP、娱乐、视频等领域的客户端上跑了很多年,可以放心用。

如果这篇对你有帮助,欢迎 Star,也欢迎来社区一起交流。

参考与延伸

  • PC 社区项目平台(AtomGit): https://atomgit.com/OpenHarmonyPCDeveloper

  • ElectronEgg 框架仓库(AtomGit): https://atomgit.com/dromara/electron-egg

  • ElectronEgg 鸿蒙 PC 适配仓(AtomGit PC 社区): https://atomgit.com/OpenHarmonyPCDeveloper/ohos_electron-egg

  • DevEco Studio 下载: https://developer.huawei.com/consumer/cn/download/deveco-studio

  • OpenHarmony 官方文档: https://docs.openharmony.cn/

  • 华为开发者文档: https://developer.huawei.com/consumer/cn/doc/


转载声明:本文为转载整理,原文版权归原作者及原站点所有。

原文来源:CSDN HarmonyOS

原创地址:https://blog.csdn.net/weixin_43151418/article/details/165843852

原文作者:xcLeigh;如有侵权,请联系管理员删除。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2023-02-03

  • 博文量
    1
  • 访问量
    201