React + Electron 实战项目

以下是 React + Electron 实战项目的最实用、最推荐指南(2025 年 12 月最新版)。
React + Electron 的最佳起点是 Vite + React + TypeScript + Electron 组合,速度快、安全性高、社区活跃度最高。

1. 超级推荐起点模板(5 分钟跑起来)

使用 electron-vite 官方 React + TypeScript 模板(最现代、最干净):

# 方式一:一键创建(强烈推荐)
npx create-electron-vite@latest my-react-app --template react-ts

# 方式二:克隆官方模板(功能更全)
git clone https://github.com/electron-vite/electron-vite-react.git my-react-app
cd my-react-app
npm install
npm run dev          # 启动开发模式(热重载 + Electron 窗口)
npm run build        # 打包成可执行文件

为什么这个模板最好?

  • Vite 热重载超快(比 Webpack 快 10 倍)
  • 内置 TypeScript + 安全 preload + contextBridge
  • 支持多窗口、自动更新、打包发布
  • 社区活跃,2025 年仍在持续更新

其他优秀模板(如果你不喜欢官方的):

  • guasam/electron-react-app → 内置 Shadcn UI + TailwindCSS,美观现代
  • electron-react-boilerplate → 老牌经典(Webpack 版),适合喜欢传统配置的人

2. 实战项目推荐(由简单到复杂)

序号项目名称核心技术栈学习重点(你能掌握什么)难度推荐指数为什么适合你做
1Todo 待办清单React + electron-store + Context API文件存储、多窗口、托盘最小化、快捷键、持久化数据★★☆★★★★★入门必做,10 小时完成,简历神器
2Markdown 编辑器React + CodeMirror / Monaco + marked实时预览、文件读写、拖拽上传、主题切换、语法高亮★★★★★★★★经典项目,展示 UI + 文件系统能力
3API 测试工具React + Axios + electron-net网络请求、历史记录、环境变量、Mock 数据、JSON 美化★★★★★★★★★企业常用,实用性极高
4本地 AI 聊天客户端React + Ollama / LM Studio API长连接、流式响应、Utility Process 后台任务、历史记录★★★★★★★★★2025 年最热门,AI 时代必备
5图片批量处理工具React + sharp + electron-dialog图片压缩、水印、格式转换、进度条、多线程处理★★★★★★★★☆展示原生模块集成能力
6剪贴板历史管理器React + electron-clipboard剪贴板监听、搜索、分类、快捷键触发★★★★★★★☆日常实用,代码量少

3. 推荐学习路径(1–2 个月成为高手)

周数项目顺序你将掌握的核心技能
1–2Todo 应用 + Markdown 编辑器窗口管理、IPC、文件系统、electron-store、菜单、托盘
3–4API 测试工具 + 图片处理工具网络请求、原生模块(sharp)、进度反馈、多窗口
5–6本地 AI 聊天 + 剪贴板管理器长连接、Utility Process、插件化思维、性能优化
7+自己做作品集项目自动更新、代码签名、跨平台测试、发布到 GitHub

4. 个人作品集爆款项目建议(放简历/面试/开源必备)

  1. 极简 Markdown 笔记 + 云同步(类似 Typora 轻量版)
  2. API 调试 + Mock 神器(比 Postman 更轻、更快)
  3. 本地 AI 对话 + 知识库(接入 Ollama,离线可用)
  4. 图片/视频批量压缩 + 水印工具(日常刚需)
  5. Git 轻量 GUI(只做 commit/push/diff,超实用)

5. 快速启动 Todo 应用示例代码结构(复制粘贴就能跑)

# 先用上面模板创建项目,然后替换 src/App.tsx
// src/App.tsx
import { useState, useEffect } from 'react';
import Store from 'electron-store';

const store = new Store();

function App() {
  const [todos, setTodos] = useState<string[]>(store.get('todos', []) as string[]);
  const [input, setInput] = useState('');

  const addTodo = () => {
    if (!input) return;
    const newTodos = [...todos, input];
    setTodos(newTodos);
    store.set('todos', newTodos);
    setInput('');
  };

  const deleteTodo = (index: number) => {
    const newTodos = todos.filter((_, i) => i !== index);
    setTodos(newTodos);
    store.set('todos', newTodos);
  };

  return (
    <div className="p-6 max-w-md mx-auto">
      <h1 className="text-2xl font-bold mb-4">我的待办清单</h1>
      <div className="flex mb-4">
        <input
          value={input}
          onChange={(e) => setInput(e.target.value)}
          className="flex-1 p-2 border rounded-l"
          placeholder="输入新任务..."
        />
        <button onClick={addTodo} className="bg-blue-500 text-white p-2 rounded-r">
          添加
        </button>
      </div>
      <ul className="space-y-2">
        {todos.map((todo, i) => (
          <li key={i} className="flex justify-between p-2 bg-gray-100 rounded">
            {todo}
            <button onClick={() => deleteTodo(i)} className="text-red-500">
              删除
            </button>
          </li>
        ))}
      </ul>
    </div>
  );
}

export default App;

运行 npm run dev 就能看到一个能持久保存的 Todo 桌面应用!

想马上开始哪个项目?

  • 告诉我你更喜欢 Tailwind + Shadcn UI 还是 Material UI
  • 想做 Todo / Markdown / AI 聊天 还是其他?
    我可以直接给你完整代码结构 + 核心功能拆解 + 一步步实现指南!
文章已创建 3420

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部