HoRain云--Electron 实战项目
通过实战项目可以加深对 Electron 各种特性的理解包括窗口管理、IPC 通信、文件操作、数据存储和界面优化。项目一桌面笔记应用功能设计创建、编辑、删除笔记自动保存与本地存储支持多窗口同时编辑界面简洁提供 Markdown 渲染技术选型前端框架Vue 或 React渲染进程展示笔记内容支持富文本 / Markdown数据存储electron-store保存笔记数据主进程管理窗口、菜单和快捷键IPC 通信渲染进程请求主进程读取或保存数据实现步骤1、创建 Electron 项目mkdir electron-notes cd electron-notes npm init -y npm install electron electron-store2、主进程 main.js实例const { app, BrowserWindow, ipcMain } require(electron)const Store require(electron-store)const store new Store()let mainWindowapp.whenReady().then(() {mainWindow new BrowserWindow({width: 800,height: 600,webPreferences: {preload: ${__dirname}/preload.js}})mainWindow.loadFile(index.html)})// IPC读取笔记ipcMain.handle(get-notes, () store.get(notes, []))// IPC保存笔记ipcMain.handle(save-notes, (event, notes) store.set(notes, notes))3、预加载脚本 preload.js实例const { contextBridge, ipcRenderer } require(electron)contextBridge.exposeInMainWorld(api, {getNotes: () ipcRenderer.invoke(get-notes),saveNotes: (notes) ipcRenderer.invoke(save-notes, notes)})4、渲染进程 index.html实例!DOCTYPE htmlhtmlbodytextarea idnote/textareabutton idsaveBtn保存/buttonscriptconst textarea document.getElementById(note)const btn document.getElementById(saveBtn)window.api.getNotes().then(notes {textarea.value notes.join(\n\n)})btn.addEventListener(click, async () {await window.api.saveNotes([textarea.value])alert(保存成功)})/script/body/html代码解析electron-store负责本地数据存储自动序列化 JSONipcMain.handle/ipcRenderer.invoke实现渲染进程与主进程通信contextBridge安全暴露 API 给渲染进程textarea按钮简单实现笔记内容编辑与保存项目二文件管理器界面设计左侧目录树右侧文件列表支持文件操作新增、删除、重命名拖拽文件到目标目录简单搜索和排序功能文件操作实现Node.js fs 模块读取、写入、删除文件path 模块路径处理IPC 通信渲染进程请求主进程进行文件操作实例// 主进程 main.jsconst fs require(fs)const path require(path)ipcMain.handle(read-dir, (event, dirPath) fs.readdirSync(dirPath))ipcMain.handle(create-file, (event, filePath) fs.writeFileSync(filePath, ))ipcMain.handle(delete-file, (event, filePath) fs.unlinkSync(filePath))实例// 渲染进程window.api.readDir(/Users/username/Documents).then(files {console.log(files)})拖拽功能渲染进程监听dragstart和drop事件主进程使用fs.rename或fs.copyFile移动文件实例// 渲染进程 drop 事件const dropArea document.getElementById(fileList)dropArea.addEventListener(drop, (event) {event.preventDefault()const filePath event.dataTransfer.files[0].pathwindow.api.moveFile(filePath, targetDir)})性能优化对大目录采用异步读取避免阻塞渲染进程文件列表虚拟化减少 DOM 渲染压力对频繁操作使用批量更新或 Web Worker小结通过这两个实战项目你可以掌握窗口与多进程通信父子窗口、IPC本地数据存储electron-store、fs界面与性能优化虚拟列表、懒加载、异步处理原生功能集成文件操作、拖拽、菜单和快捷键这些项目可以作为后续复杂桌面应用开发的基础模板帮助快速搭建功能齐全的 Electron 应用。

相关新闻

【AI大模型】涌现能力:大模型为什么参数越大越聪明

【AI大模型】涌现能力:大模型为什么参数越大越聪明

【AI大模型】涌现能力:大模型为什么参数越大越聪明(含实操代码) 在AI大模型迭代升级的过程中,所有人都能直观发现一个核心规律:模型参数规模越小,能力越平庸,只能完成简单的分词、分类、短句生成任务;而当参数规模突破百亿、千亿级别后,模型会突然解锁海量新能力,逻…

2026/7/16 10:55:19 阅读更多 →
CANN/asc-devkit:SetFixPipeClipRelu寄存器配置

CANN/asc-devkit:SetFixPipeClipRelu寄存器配置

# SetFixPipeClipRelu 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址…

2026/7/16 10:55:19 阅读更多 →
C++内存池原理与性能优化实践

C++内存池原理与性能优化实践

1. 为什么需要内存池?在C/C开发中,我们最常听到的崩溃原因就是"内存泄漏"和"内存碎片"。每次直接调用malloc/free或new/delete时,操作系统都需要在堆内存中寻找合适大小的空闲块。当频繁进行小块内存的申请释放时&#x…

2026/7/16 10:53:18 阅读更多 →

最新新闻

(十)概率及优势回顾

(十)概率及优势回顾

详细回顾一下概率以及优势。 1.概率定义 概率用来衡量一个事件将要发生的可能性。在安全规约中主要与一个方案的成功攻击和一个问题实例的正确解决有关。有四个概率定义,分别针对于数字签名,加密,计算问题,判定问题。 数字签名。令 Pr ⁡ [ W i n S i g ] \Pr[\mathrm{Wi…

2026/7/16 11:43:41 阅读更多 →
Windows控制台I/O机制与API实战指南

Windows控制台I/O机制与API实战指南

1. Windows控制台I/O机制深度解析控制台作为人机交互最基础的界面,其输入输出机制直接影响着命令行程序的用户体验。Windows平台通过一组精密的API函数实现了控制台的高效读写操作,这些函数构成了控制台应用程序的底层通信基础。在Windows系统中&#xf…

2026/7/16 11:43:41 阅读更多 →
Cloud Document Converter:终极飞书文档转Markdown解决方案,快速提升工作效率

Cloud Document Converter:终极飞书文档转Markdown解决方案,快速提升工作效率

Cloud Document Converter:终极飞书文档转Markdown解决方案,快速提升工作效率 【免费下载链接】cloud-document-converter Convert Lark Doc to Markdown 项目地址: https://gitcode.com/gh_mirrors/cl/cloud-document-converter Cloud Document …

2026/7/16 11:41:41 阅读更多 →
从安装到扫描:log4shell-detector完整使用手册,保护你的服务器安全

从安装到扫描:log4shell-detector完整使用手册,保护你的服务器安全

从安装到扫描:log4shell-detector完整使用手册,保护你的服务器安全 【免费下载链接】log4shell-detector Detector for Log4Shell exploitation attempts 项目地址: https://gitcode.com/gh_mirrors/lo/log4shell-detector log4shell-detector是一…

2026/7/16 11:41:41 阅读更多 →
Ubuntu 18.04无线网络故障排查与驱动修复指南

Ubuntu 18.04无线网络故障排查与驱动修复指南

1. Ubuntu 18.04无线网络故障全面排查指南刚装完Ubuntu 18.04发现WiFi图标消失?这可能是每个Linux新手都会遇到的经典问题。作为从Ubuntu 12.04一路用过来的老用户,我经历过无数次无线网卡驱动引发的"血案"。不同于Windows即插即用的便利&…

2026/7/16 11:39:41 阅读更多 →
基于DeepSeek R1与LangChain构建中文RAG系统的实践指南

基于DeepSeek R1与LangChain构建中文RAG系统的实践指南

1. 项目背景与核心价值DeepSeek R1作为国产开源大模型新秀,在中文场景下的表现已经达到商用级别。结合LangChain框架构建RAG(Retrieval-Augmented Generation)系统,能够有效解决大模型在专业领域知识不足、事实性错误频发的问题。…

2026/7/16 11:37:40 阅读更多 →

日新闻

HarmonyOs应用《重要日》开发第6篇 - 数据持久化存储

HarmonyOs应用《重要日》开发第6篇 - 数据持久化存储

本篇深入剖析 ImportantDays 项目的数据持久化方案——基于 HarmonyOS ArkData 模块的 Preferences 轻量级存储,以及 PreferenceUtil 工具类的单例封装。一、HarmonyOS 数据存储方案对比 HarmonyOS 提供了多种数据存储方案:方案适用场景特点Preferences轻…

2026/7/16 0:08:27 阅读更多 →
Python实现跨境电商商品图批量翻译教程

Python实现跨境电商商品图批量翻译教程

一、问题引入做跨境电商的卖家朋友,你是否遇到过这样的困扰?每次上架新品到亚马逊、Shopee或Lazada等平台,都需要处理大量商品图片的多语言版本。比如上架200款衣服,每款需要翻译成英语、日语、韩语等5种语言,这意味着…

2026/7/16 0:08:27 阅读更多 →
鸿蒙 7 新特性实战①:从 0 到 1 掌握 @kit 标准导入规范

鸿蒙 7 新特性实战①:从 0 到 1 掌握 @kit 标准导入规范

从鸿蒙 7(HarmonyOS NEXT)开始,官方全面完成了从 ohos.* 零散模块到 kit.* 领域套件的体系重构。对开发者来说,第一道门槛不是 API 用法变化,而是统一的导入规范——旧体系默认导入、解构导入混用的混乱局面被彻底终结…

2026/7/16 0:10:29 阅读更多 →

周新闻

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨 在一个阳光明媚的上午,互联网大厂的面试官坐在桌前,准备迎接他的面试候选人——燕双非,一个以搞笑和幽默著称的程序员。第一轮提问 面试官:燕双非,作…

2026/7/15 21:09:01 阅读更多 →
车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估在智能驾驶和车联网技术快速发展的今天,车载以太网作为新一代车载网络的核心传输技术,其物理层性能直接决定了数据传输的可靠性和稳定性。1000BASE-T1作为当前主流的…

2026/7/15 19:42:20 阅读更多 →
VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战指南嵌入式开发领域正经历一场工具链的静默革命。当传统Keil用户首次打开VSCode的扩展市场搜索EIDE时,往往会惊讶于这个看似简单的插件竟能重构十余年的开发习惯。本文将揭示如何用五个精准步骤&#xff0…

2026/7/15 17:52:08 阅读更多 →

月新闻