LexHue 是一个面向英语阅读学习的多用户 Web 应用。它可以导入英文文章,自动识别词汇难度,用颜色标注用户可能不熟悉的词,并支持词典管理、水平测评、文章批注、复习和数据导出。
当前版本使用 PostgreSQL 作为运行数据库,支持普通用户和管理员权限隔离。
- 多用户登录:每个用户拥有独立的文章、词汇记录、配置和学习进度。
- 水平测评:从 Level 4 开始,根据用户反馈调整文章难度,最终确定用户英语水平。
- 文章导入:支持粘贴英文文章,也支持输入网页链接自动提取正文。
- 文章阅读标注:按用户等级自动标注词汇陌生度,并统计页面词汇情况。
- 词汇详情:点击单词可查看释义、词性、音标、难度等级等信息。
- 陌生度调整:用户可手动调整词汇陌生度,确认后的个人记录优先生效。
- 划选标注:阅读文章时可拖拽选中文字,快速设置陌生度或添加新词。
- 复习列表:按陌生度和复习时间整理需要复习的词。
- 标签与批注:文章支持标签管理,阅读时可添加批注。
- 管理员功能:管理员可管理词典、系统配置和测评文章库。
- 测评文章管理:管理员可按 Level 0-9 管理测评文章,支持自动评级、链接导入和详情预览。
- 导入导出:支持词汇和数据导出,用于备份或迁移。
LexHue 将词汇标准难度分为 Level 0-9:
| Level | 含义 |
|---|---|
| 0 | 最常用核心词 |
| 1-3 | 高频到中高频词 |
| 4-6 | 中等到低频词 |
| 7-8 | 较生僻词 |
| 9 | 生僻或无词频数据词 |
默认标注规则:
| 词汇标准等级与当前等级的关系 | 陌生度 | 显示 |
|---|---|---|
| 低于当前等级 | 1 精通 | 不标色 |
| 等于当前等级 | 3 熟识 | 青色 |
| 高 1 级 | 5 浅知 | 琥珀色 |
| 高 2 级及以上 | 7 陌生 | 玫瑰色 |
用户手动确认过的词汇会优先使用用户自己的陌生度记录。
初始化后默认包含两个账号:
| 用户名 | 密码 | 权限 |
|---|---|---|
| admin | admin | 管理员 |
| local | lexhue | 普通用户 |
管理员可以看到并使用词典管理、系统设置和测评文章管理页面。普通用户不会看到这些管理入口。
推荐环境:
- Node.js 20 LTS
- npm
- PostgreSQL 14+,推荐 PostgreSQL 16
- Linux / WSL / macOS。Windows 可使用 WSL 运行。
确认 Node 版本:
node -v
npm -v如果使用 nvm:
source ~/.nvm/nvm.sh
nvm use 20LexHue 默认使用以下 PostgreSQL 连接配置:
PGHOST=/tmp/lexhue-pg
PGPORT=5432
PGDATABASE=lexhue
PGUSER=lexhue
PGPASSWORD=lexhue
如果你使用系统 PostgreSQL,可以创建数据库和用户:
sudo -u postgres psql进入 psql 后执行:
CREATE USER lexhue WITH PASSWORD 'lexhue';
CREATE DATABASE lexhue OWNER lexhue;
\q如果 PostgreSQL 监听在默认 TCP 地址,可以用环境变量覆盖连接方式:
export PGHOST=127.0.0.1
export PGPORT=5432
export PGDATABASE=lexhue
export PGUSER=lexhue
export PGPASSWORD=lexhue在项目根目录执行:
cd /home/jlx/project/LexHue
cd server
npm install
cd ../client
npm installcd /home/jlx/project/LexHue/server
npm run init-db初始化会创建表结构、默认账号、默认配置。
重要:恢复完整词典数据(首次部署必需步骤)
项目已包含预备份的完整词典 SQL 数据(约 96 MB,776,408 条词条),位于:
server/data/dictionary-backup/dictionary-20260828-071832.sql
首次部署时,执行完 init-db 后,立即恢复词典数据:
cd /home/jlx/project/LexHue/server
bash scripts/restore-dictionary.sh server/data/dictionary-backup/dictionary-20260828-071832.sql恢复后可验证:
PGHOST=/tmp/lexhue-pg PGPORT=5432 PGDATABASE=lexhue PGUSER=lexhue PGPASSWORD=*** psql -c "SELECT COUNT(*) FROM dictionary;"应显示约 776408 条记录。
如果后续需要重新生成备份,可执行:
bash server/scripts/backup-dictionary.sh备份文件会保存到 server/data/dictionary-backup/,并保留最新 5 个备份。
如果你从旧 SQLite 单机版迁移数据,可在准备好旧数据后执行:
cd /home/jlx/project/LexHue/server
npm run migrate:sqlite注意:SQLite 迁移依赖 better-sqlite3 原生编译,部署时如无法编译,直接使用 SQL 备份恢复即可获得完整词典功能。
启动后端:
cd /home/jlx/project/LexHue/server
npm run dev默认后端地址:
http://localhost:3000
另开一个终端启动前端:
cd /home/jlx/project/LexHue/client
npm run dev默认前端地址:
http://localhost:5173
日常开发和验证建议访问前端地址。
后端也提供基础健康检查接口:
GET /api/health
cd /home/jlx/project/LexHue/client
npm run build
cd ../server
npm start后端会托管 client/dist 中的前端构建产物,访问:
http://localhost:3000
打开前端页面后输入用户名和密码登录。
首次验证可使用:
admin / admin
或:
local / lexhue
进入“水平测评”页面,系统会展示一篇测评文章。
阅读后选择:
- 降低难度
- 确认当前等级
- 升高难度
- 跳过测评
- 取消测评
确认后,系统会保存当前用户等级,并用于后续文章标注。
进入“文章”页面,点击导入文章。
可选择:
- 粘贴文本
- 输入网页链接并提取正文
导入后进入阅读页面,系统会自动识别词汇并进行颜色标注。
阅读页面支持:
- 点击单词查看详情
- 调整单词陌生度
- 划选文本快速标注
- 查看页面词汇统计
- 查看超纲词列表
- 添加批注
标注颜色可帮助判断文章是否适合当前水平,但最终仍以用户自己的阅读感受为准。
进入“复习”或“词汇”页面,可查看已记录的词汇。
可按陌生度筛选,并逐步降低或提高陌生度。
文章支持标签管理。可以为不同主题、课程、来源的文章打标签,便于后续筛选。
管理员登录后会看到额外管理入口。
管理员可搜索、查看、编辑词典条目。
普通用户不能进入词典管理页面。
管理员可调整系统级参数,例如默认用户等级、初始化模式、OOV 默认陌生度等。
测评文章按 Level 0-9 组织,界面类似资源管理器目录。
管理员可以:
- 展开或折叠某个 Level 目录
- 查看该等级下的测评文章标题
- 点击文章标题,在右侧查看文章详情
- 查看文章的词色标注和词汇统计
- 删除测评文章
- 添加新测评文章
- 粘贴正文或使用网页链接导入
- 让系统自动评级并按评级结果保存
进入“导入导出”页面,可导出用户数据或词汇数据。
建议在大量导入文章、调整词典或升级版本前先导出备份。
当前 PostgreSQL 版本支持:
- JSON 全量导出
- CSV 词汇导出
旧版 SQLite 数据库文件下载接口已废弃,不再提供 .db 文件备份下载。
检查 PostgreSQL 是否运行,并确认连接参数:
echo $PGHOST
echo $PGDATABASE
echo $PGUSER如果使用默认系统 PostgreSQL,可尝试:
export PGHOST=127.0.0.1
export PGPORT=5432
export PGDATABASE=lexhue
export PGUSER=lexhue
export PGPASSWORD=lexhue如果访问的是 http://localhost:5173,通常 Vite 会自动热更新。
如果访问的是 http://localhost:3000,需要重新构建前端:
cd client
npm run build这是正常权限控制。只有管理员可以管理词典、系统配置和测评文章。
请确认后端已重启。测评文章和阅读文章默认规则为:低于当前等级不标色,等于当前等级显示熟识颜色。
可能原因包括:
- 网站禁止抓取
- 链接不是公开 HTTP/HTTPS 地址
- 网页正文结构无法解析
- 网页过大或响应超时
可改用手动粘贴正文。
LexHue/
├── client/ # React 前端
│ ├── src/
│ │ ├── pages/ # 页面
│ │ ├── components/ # 通用组件
│ │ ├── api/ # API 客户端
│ │ └── utils/ # 前端工具
│ └── package.json
├── server/ # Node.js 后端
│ ├── database/ # PostgreSQL 初始化与连接
│ ├── routes/ # API 路由
│ ├── services/ # 业务服务
│ ├── scripts/ # 数据导入和迁移脚本
│ └── package.json
├── DEVELOPMENT_PLAN.md # 开发计划
├── README.md # 用户说明
└── start.sh # 启动脚本
当前项目目标是复刻原单机版 LexHue 的界面和核心学习逻辑,并在此基础上加入多用户、权限控制和 PostgreSQL 数据库支持。