news 2026/5/7 10:33:41

ElectronOpenHarmony 跨平台实战开发(一):electron-vite 与 Vue3 架构搭建指南 PC适配

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ElectronOpenHarmony 跨平台实战开发(一):electron-vite 与 Vue3 架构搭建指南 PC适配

前言

Electron 本身提供了完善的桌面能力,但如果希望在渲染层使用 Vue3 并保持高效的开发体验,electron-vite是当前最易用的解决方案。本文整理从零初始化、交互式选项选择、项目结构到最终产出 HAP 的完整流程,帮助你快速复制可落地的架构。

为什么选择 electron-vite

对比项Electron Forge + Webpackelectron-vite
构建速度中等极快(Vite 原生 ESM)
Vue3 支持需手动配置 loader模板内置
热更新体验依赖 HMR 插件默认即开
TypeScript额外配置模板可直接选择
产物拆分需自定脚本electron-vite build自动输出main/preload/renderer

环境准备

  • Node.js ≥ 18.17(建议 LTS)
  • 包管理器任选:npm / pnpm / yarn
  • 全局无需额外依赖,只需npm create electron-vite@latest

交互式初始化(只需选择模板)

npm create electron-vite@latest my-vue-electron-app

交互式选择:

? Project template: » Vue (使用方向键选择,回车确认)
  • Vue

  • React

  • Vanilla

注意:

  • 项目名称已在命令中指定,不会询问

  • 包管理器根据调用命令自动检测(npm create → npm,pnpm create → pnpm)

如需使用 pnpm,请使用:pnpm create electron-vite@latest my-vue-electron-app

cd my-vue-electron-app npm install # 或 pnpm install(如果使用 pnpm create) npm run dev # 或 pnpm dev

交互式选项详解

提示作用说明
Project template决定渲染进程模板Vue(快速)或Vue + TypeScript(生产)
注意:只有模板选择会交互式询问
项目名称目录 +package.json名称已在命令中指定,不会询问
包管理器配套锁文件与命令根据调用命令自动检测
-npm create→ npm
-pnpm create→ pnpm
-yarn create→ yarn

项目结构速览(最新模板)


文件目录

my-vue-electron-app/ ├─ electron/ # Electron 主/预加载模块 │ ├─ main.ts # 主进程入口 │ ├─ preload.ts # 预加载脚本入口 │ └─ electron-env.d.ts # 类型声明 ├─ src/ # Vue3(Vite)渲染层 │ ├─ main.ts │ ├─ App.vue │ ├─ components/ │ ├─ assets/ │ └─ style.css ├─ index.html # 渲染层 HTML 模板 ├─ vite.config.ts # Vite + Electron 联合配置 ├─ electron-builder.json5 # 可选:electron-builder 打包配置 ├─ package.json └─ tsconfig*.json

配置文件要点

  • vite.config.ts:通过defineConfig同时配置主进程(build.rollupOptions.input = electron/main.ts)、预加载(electron/preload.ts)以及渲染层(默认 Vite 配置,可添加vue()插件、别名、代理等)。
  • package.json(模板示例):
    {"main":"dist-electron/main/index.js","scripts":{"dev":"vite dev","build":"vite build && electron-builder","preview":"vite build && electron ."}}
    实际脚本可能略有差异,但核心是main字段指向构建后的主进程入口。
  • electron-builder.json5:若需要生成安装包可启用;仅用于 HAP 集成时,可忽略该文件。
  • tsconfig.json/tsconfig.node.json:若选择vue-ts模板,已启用严格模式;可按需补充pathstypes等。

常用扩展

需求操作
引入 Vue Routerpnpm add vue-router,在renderer/src/main.ts注册
全局状态(Pinia)pnpm add pinia,同样在renderer入口挂载
UI 组件库建议使用支持 Vite 的库,如 Element Plus、Naive UI
环境变量新建.env,.env.production,通过import.meta.env访问

如何打包与产物

pnpmbuild# 输出:# dist/ ← 渲染层(供 WebView/WebEngine 使用)# dist-electron/# ├─ main/ ← 主进程 bundle# └─ preload/ ← 预加载 bundle
  • dist等价于传统 Electronresources/app中的前端资源。
  • dist-electron/maindist-electron/preload分别对应主进程与预加载脚本,可直接复制到鸿蒙web_engine模块。
  • 若借助electron-builder继续打包桌面安装包,会在dist/下生成.exe/.dmg等,与 HAP 集成无关,可忽略。

嵌入 OpenHarmony HAP 的建议流程

  1. PC 端自测:使用pnpm dev/pnpm build确认 Electron 功能正常。
  2. 复制产物
    • distdist-electron/maindist-electron/preload内的文件合并至ohos_electron_hap/web_engine/src/main/resources/resfile/resources/app/
    • 保留package.json,确保main字段指向复制后的主进程脚本(如main/index.js)。
    • 若启用了 asar,需先解包再拷贝。
  3. DevEco Studio 构建 HAP:在鸿蒙工程中执行Build Hap(s),得到electron-*-signed.hap,随后完成签名与安装。

调试技巧

  • pnpm dev默认带来主进程 + 渲染层热更新;可在electron/main.ts中设置process.env.ELECTRON_DISABLE_SECURITY_WARNINGS = "true"辅助调试。
  • pnpm build && pnpm preview可在 Electron 外壳中加载dist资源,复制到 HAP 前先做回归测试。
  • 若需精细控制依赖打包方式,可在vite.config.tsbuild.rollupOptions中指定externalplugins等;逻辑与旧版forge.config.js一致。

总结

  • 最新模板将主/预加载脚本集中在electron/目录,渲染层沿用 Vite 默认的src/;看似与旧文档不同,但职责划分完全一致。
  • pnpm build产出的dist+dist-electron与传统 Electronresources/app等价,可直接复制到web_engine/src/main/resources/resfile/resources/app/
  • 迁移到鸿蒙时,确保package.jsonmain指向正确入口并按 DevEco Studio 流程生成 HAP,即可完成 Electron → OpenHarmony 的适配。

源码地址:https://atomgit.com/Axxx12345678/harmony-count-app
欢迎加入开源鸿蒙PC社区:https://harmonypc.csdn.net/

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/7 10:33:37

PaddleOCR模型训练避坑指南:解决GPU内存不足、配置修改与推理模型导出

PaddleOCR模型训练避坑指南:解决GPU内存不足、配置修改与推理模型导出 当你第一次尝试训练PaddleOCR模型时,可能会遇到各种意想不到的问题。从GPU内存不足的报错到配置文件参数的一头雾水,再到模型导出的各种坑,每一步都可能让初学…

作者头像 李华
网站建设 2026/5/7 10:32:32

AI编码代理并行管理工具AoE:基于tmux与Git工作树的多会话隔离方案

1. 项目概述:AI编码代理的“帝国指挥官” 如果你和我一样,每天的工作流里已经离不开Claude Code、Cursor这类AI编码助手,那你肯定也遇到过这个甜蜜的烦恼:一个项目,多个分支,每个分支都想让AI去探索不同的重…

作者头像 李华
网站建设 2026/5/7 10:32:31

终极植物大战僵尸修改器:PvZ Toolkit完全指南与使用教程

终极植物大战僵尸修改器:PvZ Toolkit完全指南与使用教程 【免费下载链接】pvztoolkit 植物大战僵尸 PC 版综合修改器 项目地址: https://gitcode.com/gh_mirrors/pv/pvztoolkit PvZ Toolkit是一款专为植物大战僵尸PC版设计的开源游戏辅助工具,通过…

作者头像 李华
网站建设 2026/5/7 10:32:29

PyTorch 2.8镜像快速部署:支持4bit/8bit量化的低显存大模型推理方案

PyTorch 2.8镜像快速部署:支持4bit/8bit量化的低显存大模型推理方案 1. 镜像概述与核心优势 PyTorch 2.8深度学习镜像为基于RTX 4090D 24GB显卡和CUDA 12.4深度优化的通用计算环境,专为大规模AI模型推理与训练设计。这个预配置环境消除了复杂的依赖安装…

作者头像 李华
网站建设 2026/5/7 10:31:38

从RLHF到Safe RLHF:大模型安全对齐实战指南与框架解析

1. 项目概述:从RLHF到Safe RLHF,我们为什么需要“安全对齐”? 如果你在过去一年里关注过大语言模型(LLM)的发展,那么“RLHF”(基于人类反馈的强化学习)这个词对你来说一定不陌生。它…

作者头像 李华