# MyDICT **Repository Path**: poormonitor/MyDICT ## Basic Information - **Project Name**: MyDICT - **Description**: MDX 字典 Web 客户端 - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: https://dict.techo.cool - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-06-28 - **Last Updated**: 2026-01-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MyDICT MyDICT 是一个基于 Web 的词典应用,允许您查询多个 MDict 格式(`.mdx`, `.mdd`)的词典。它拥有基于 FastAPI 的高性能 Python 后端和现代化的 Vue 3 前端。 ## 功能特性 - **MDict 支持**:兼容 `.mdx`(词典数据)和 `.mdd`(资源数据,如图片/音频)文件。 - **高性能后端**:使用 [FastAPI](https://fastapi.tiangolo.com/) 构建,性能卓越。 - **现代化前端**:使用 [Vue 3](https://vuejs.org/)、[Vite](https://vitejs.dev/) 和 [Naive UI](https://www.naiveui.com/) 开发。 - **统一搜索**:同时查询多个词典。 - **丰富内容**:支持显示词典文件中的样式、图片和音频。 ## 项目结构 - `main.py`:FastAPI 应用的入口点。 - `func.py`:词典加载和查询的核心逻辑。 - `routes/`:API 路由定义。 - `mdict/`:用于读取 MDict 文件的库。 - `dicts/`:存放词典文件的目录。 - `view/`:前端源代码(Vue.js 应用)。 ## 前置要求 - **Python**: 3.8 或更高版本。 - **Node.js**: 16.0 或更高版本(用于构建前端)。 - **pnpm**: 推荐使用 pnpm 管理前端依赖。 ## 安装 ### 1. 后端设置 创建虚拟环境并安装依赖: ```bash # 创建虚拟环境 python -m venv venv # 激活虚拟环境 # Linux/macOS: source venv/bin/activate # Windows: # venv\Scripts\activate # 安装依赖 pip install -r requirements.txt ``` ### 2. 前端设置 安装 Node.js 依赖: ```bash cd view pnpm install cd .. ``` ### 3. 添加词典 将您的 `.mdx` 和 `.mdd` 文件放入 `dicts/` 目录。应用程序会自动扫描该目录下的可用词典。 ## 运行应用 ### 开发模式 分别运行后端和前端,支持热重载: **后端:** ```bash # 在根目录下 uvicorn main:app --reload ``` API 将在 `http://localhost:8000` 上可用。 **前端:** ```bash cd view pnpm run dev ``` 前端将在 `http://localhost:5173`(或终端中显示的端口)上可用。 ### 生产模式 将应用作为一个整体服务运行: 1. **构建前端:** ```bash cd view pnpm run build cd .. ``` 这将在 `view/dist` 中生成静态文件。 2. **运行后端:** ```bash uvicorn main:app --host 0.0.0.0 --port 8000 ``` 3. **访问应用:** 打开浏览器并访问 `http://localhost:8000`。 ## License 本程序是自由软件:你可以再分发之和/或依照由自由软件基金会发布的 GNU 通用公共许可证修改之,无论是版本 3 许可证,还是(按你的决定)任何以后版都可以。 发布该程序是希望它能有用,但是并无保障;甚至连可销售和符合某个特定的目的都不保证。请参看 GNU 通用公共许可证。 你应该随程序获得一份 GNU 通用公共许可证的副本。如果没有,请看