取自 Lexis (词汇) + Loop (循环),寓意为一个循环记忆的文字练习伴侣。
技术栈:Electron + React + TypeScript + Vite
主要功能目标:极简、专注文本轮播记忆工具,可记忆单词、句子、短语或语料。
- ✅ 文字轮播展示:支持自定义字体大小、颜色、行间距、字体加粗
- ✅ 可配置背景颜色和轮播间隔:个性化定制学习体验
- ✅ 语料管理:添加、编辑、删除语料,支持批量添加(每行一条)
- ✅ 自动保存:所有数据保存在本地存储(localStorage),无需担心丢失
- ✅ 进度显示:实时显示当前进度(当前/总数),窗口较小时自动显示在标题栏
- ✅ 自定义标题栏:功能按钮集成在标题栏,界面简洁美观
- ✅ 主题切换:支持浅色/深色主题切换,适配不同使用场景
- ✅ 响应式布局:窗口高度小于 200px 时,进度自动移至标题栏
- ✅ 极简摸鱼模式:一键切换到极简模式,窗口自动调整为 50px 高度
- ✅ 自动置顶:摸鱼模式下自动开启窗口置顶,始终显示在其他应用上层
- ✅ 可调节大小:摸鱼模式下可自由拖拽调整窗口大小
- ✅ 拖拽移动:左侧提供拖拽手柄,方便移动窗口位置
- ✅ 快速还原:左侧一键还原按钮,快速返回正常模式
- ✅ 窗口置顶:可手动开启/关闭窗口置顶功能
- ✅ 导出语料:支持将语料导出为 TXT 文本文件(每行一条)
- ✅ 暂停/继续播放:默认启动,可随时暂停/继续
- ✅ 语料切换动画:流畅的淡入淡出动画效果
- ✅ 空格键:暂停/继续轮播
- ✅ 左方向键:切换到上一个语料
- ✅ 右方向键:切换到下一个语料
- ✅ ESC:关闭设置页面
确保已安装 Node.js(推荐 v18 或更高版本),然后安装项目依赖:
npm installnpm run dev这个命令会:
- 自动编译主进程代码
- 启动 Vite 开发服务器(端口 5173)
- 自动打开 Electron 窗口
注意:首次启动可能需要等待几秒钟,窗口会自动弹出。
- 添加语料:点击标题栏的 "➕" 按钮,输入语料(每行一条),点击"添加"
- 开始轮播:添加语料后,应用默认自动开始轮播
- 暂停/继续:点击标题栏的 "⏸️/
▶️ " 按钮 - 设置:点击标题栏的 "⚙️" 按钮进行个性化配置
npm run build构建完成后,安装包将输出到 release 目录:
- Windows:
release/LexiLoop Setup x.x.x.exe(NSIS 安装程序) - 未打包版本:
release/win-unpacked/LexiLoop.exe(可直接运行)
- 首次打包:首次打包会自动下载 Electron 二进制文件(约 108MB),需要等待一段时间
- 代码签名:Windows 打包时可能遇到代码签名相关的警告,这是正常的,不影响打包结果
- 清理缓存:如果打包遇到问题,可以清理缓存:
# Windows rmdir /s /q "%LOCALAPPDATA%\electron-builder\Cache"
如果遇到代码签名相关的错误(符号链接创建失败),可以:
- 忽略错误继续等待(通常不影响最终打包)
- 使用管理员权限运行命令提示符
- 清理缓存后重新打包
解决方案:
- 检查终端是否有错误信息
- 确保端口 5173 没有被占用
- 等待几秒钟,首次启动需要编译代码
- 检查是否有防病毒软件阻止窗口显示
直接拖拽窗口边缘即可调整大小,窗口支持任意尺寸(最小高度为标题栏高度)。
所有语料和设置都保存在浏览器的 localStorage 中,关闭应用后数据会自动保留。
- 导出:在设置页面的语料管理区域,点击右上角的 "📥 导出" 按钮,即可导出为 TXT 文件
- 导入:目前暂不支持直接导入,可以将 TXT 文件内容复制后,通过 "➕ 添加语料" 批量添加(每行一条)
lexiloop/
├── main/ # Electron 主进程
│ ├── main.ts
│ └── preload.ts
├── renderer/ # React 前端
│ ├── App.tsx
│ ├── components/
│ │ ├── DisplayView.tsx # 主显示界面
│ │ ├── SettingsView.tsx # 设置页面
│ │ ├── AddCorpusModal.tsx # 添加语料弹窗
│ │ └── Toolbar.tsx # 顶部工具栏
│ ├── store/
│ │ └── useAppStore.ts # Zustand 状态管理
│ └── styles/
│ └── index.css
├── package.json
├── vite.config.ts
└── tsconfig.json
- ⏸️/
▶️ :暂停/继续轮播(默认启动) - ⚙️:打开设置页面
- ➕:添加新语料
- 🐟:进入摸鱼模式(极简模式)
- 📌:窗口置顶/取消置顶
- 🌙/☀️:切换浅色/深色主题
- 字体设置:调整字体大小、颜色、行间距、字体加粗
- 背景设置:自定义背景颜色
- 轮播设置:配置自动切换间隔时间(秒)
- 语料管理:编辑或删除已有语料,支持导出为 TXT 文件
- 空格键:暂停/继续轮播
- 左方向键:切换到上一个语料
- 右方向键:切换到下一个语料
- ESC:关闭设置页面
- Electron: 桌面应用框架
- React: UI 框架
- TypeScript: 类型安全
- Vite: 构建工具
- Zustand: 轻量级状态管理
我们欢迎所有形式的贡献!无论是功能建议、Bug 报告、代码提交,还是文档改进,都非常感谢。
- Fork 本项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
- 克隆项目:
git clone https://github.com/your-username/LexiLoop.git - 安装依赖:
npm install - 启动开发:
npm run dev - 开始开发:修改代码后会自动热重载
- 使用 TypeScript 进行类型检查
- 遵循 ESLint 规则
- 组件使用函数式组件和 Hooks
- 保持代码简洁和可读性
如果你有好的想法或功能建议,欢迎:
- 提交 Issue 描述你的想法
- 或者在 Discussions 中讨论
如果发现 Bug,请提交 Issue 并包含:
- 问题描述
- 复现步骤
- 预期行为
- 实际行为
- 环境信息(操作系统、Node.js 版本等)
MIT License
如果这个项目对你有帮助,欢迎给个 Star ⭐,你的支持是我们持续改进的动力!
Made with ❤️ using Cursor + Electron + React + TypeScript