Thanks to visit codestin.com
Credit goes to github.com

Skip to content

取自 Lexis (词汇) + Loop (循环),寓意为一个循环记忆的文字练习伴侣。 也可中文命名为 「词回环」

Notifications You must be signed in to change notification settings

leongaooo/LexiLoop

Repository files navigation

LexiLoop(词回环)

取自 Lexis (词汇) + Loop (循环),寓意为一个循环记忆的文字练习伴侣。

技术栈:Electron + React + TypeScript + Vite

主要功能目标:极简、专注文本轮播记忆工具,可记忆单词、句子、短语或语料。

✨ 功能特性

🎯 核心功能

  • 文字轮播展示:支持自定义字体大小、颜色、行间距、字体加粗
  • 可配置背景颜色和轮播间隔:个性化定制学习体验
  • 语料管理:添加、编辑、删除语料,支持批量添加(每行一条)
  • 自动保存:所有数据保存在本地存储(localStorage),无需担心丢失
  • 进度显示:实时显示当前进度(当前/总数),窗口较小时自动显示在标题栏

🎨 界面特色

  • 自定义标题栏:功能按钮集成在标题栏,界面简洁美观
  • 主题切换:支持浅色/深色主题切换,适配不同使用场景
  • 响应式布局:窗口高度小于 200px 时,进度自动移至标题栏

🐟 摸鱼模式(特色功能)

  • 极简摸鱼模式:一键切换到极简模式,窗口自动调整为 50px 高度
  • 自动置顶:摸鱼模式下自动开启窗口置顶,始终显示在其他应用上层
  • 可调节大小:摸鱼模式下可自由拖拽调整窗口大小
  • 拖拽移动:左侧提供拖拽手柄,方便移动窗口位置
  • 快速还原:左侧一键还原按钮,快速返回正常模式

🔧 实用功能

  • 窗口置顶:可手动开启/关闭窗口置顶功能
  • 导出语料:支持将语料导出为 TXT 文本文件(每行一条)
  • 暂停/继续播放:默认启动,可随时暂停/继续
  • 语料切换动画:流畅的淡入淡出动画效果

⌨️ 快捷键支持

  • 空格键:暂停/继续轮播
  • 左方向键:切换到上一个语料
  • 右方向键:切换到下一个语料
  • ESC:关闭设置页面

快速开始

1. 安装依赖

确保已安装 Node.js(推荐 v18 或更高版本),然后安装项目依赖:

npm install

2. 启动开发模式

npm run dev

这个命令会:

  • 自动编译主进程代码
  • 启动 Vite 开发服务器(端口 5173)
  • 自动打开 Electron 窗口

注意:首次启动可能需要等待几秒钟,窗口会自动弹出。

3. 使用应用

  1. 添加语料:点击标题栏的 "➕" 按钮,输入语料(每行一条),点击"添加"
  2. 开始轮播:添加语料后,应用默认自动开始轮播
  3. 暂停/继续:点击标题栏的 "⏸️/▶️" 按钮
  4. 设置:点击标题栏的 "⚙️" 按钮进行个性化配置

📦 打包构建

构建生产版本

npm run build

构建完成后,安装包将输出到 release 目录:

  • Windows: release/LexiLoop Setup x.x.x.exe(NSIS 安装程序)
  • 未打包版本: release/win-unpacked/LexiLoop.exe(可直接运行)

打包注意事项

  1. 首次打包:首次打包会自动下载 Electron 二进制文件(约 108MB),需要等待一段时间
  2. 代码签名:Windows 打包时可能遇到代码签名相关的警告,这是正常的,不影响打包结果
  3. 清理缓存:如果打包遇到问题,可以清理缓存:
    # Windows
    rmdir /s /q "%LOCALAPPDATA%\electron-builder\Cache"

打包问题排查

如果遇到代码签名相关的错误(符号链接创建失败),可以:

  1. 忽略错误继续等待(通常不影响最终打包)
  2. 使用管理员权限运行命令提示符
  3. 清理缓存后重新打包

常见问题

Q: 运行 npm run dev 后窗口没有出现?

解决方案

  1. 检查终端是否有错误信息
  2. 确保端口 5173 没有被占用
  3. 等待几秒钟,首次启动需要编译代码
  4. 检查是否有防病毒软件阻止窗口显示

Q: 如何修改窗口大小?

直接拖拽窗口边缘即可调整大小,窗口支持任意尺寸(最小高度为标题栏高度)。

Q: 数据保存在哪里?

所有语料和设置都保存在浏览器的 localStorage 中,关闭应用后数据会自动保留。

Q: 如何导入/导出语料?

  • 导出:在设置页面的语料管理区域,点击右上角的 "📥 导出" 按钮,即可导出为 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 报告、代码提交,还是文档改进,都非常感谢。

如何贡献

  1. Fork 本项目
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

开发环境设置

  1. 克隆项目:git clone https://github.com/your-username/LexiLoop.git
  2. 安装依赖:npm install
  3. 启动开发:npm run dev
  4. 开始开发:修改代码后会自动热重载

代码规范

  • 使用 TypeScript 进行类型检查
  • 遵循 ESLint 规则
  • 组件使用函数式组件和 Hooks
  • 保持代码简洁和可读性

功能建议

如果你有好的想法或功能建议,欢迎:

  • 提交 Issue 描述你的想法
  • 或者在 Discussions 中讨论

Bug 报告

如果发现 Bug,请提交 Issue 并包含:

  • 问题描述
  • 复现步骤
  • 预期行为
  • 实际行为
  • 环境信息(操作系统、Node.js 版本等)

📄 许可证

MIT License

⭐ Star History

如果这个项目对你有帮助,欢迎给个 Star ⭐,你的支持是我们持续改进的动力!


Made with ❤️ using Cursor + Electron + React + TypeScript

About

取自 Lexis (词汇) + Loop (循环),寓意为一个循环记忆的文字练习伴侣。 也可中文命名为 「词回环」

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published