mirror of
https://github.com/Moe-Sakura/frontend.git
synced 2026-03-16 05:03:18 +08:00
29fdabbb0ef5c1b8ebafd7a47364a67c86b63fe2
- Eliminated the `useAnime` composable and its associated animation functions from ImageViewer.vue, opting for a more straightforward approach to transitions. - Updated the onEnter function to focus solely on sound effects during transitions, enhancing clarity and maintainability of the code.
Refactor ImageViewer component to remove custom animation functions and simplify transition handling
SearchGal Frontend
Galgame 聚合搜索前端 - 基于 Vue 3 + TypeScript + Tailwind CSS
🌐 在线访问: searchgal.homes
✨ 特性
- 🎮 聚合搜索 - 整合多个 Galgame 资源站点的搜索结果
- 🚀 流式响应 - SSE 实时流式显示搜索进度和结果
- 🏷️ 智能标签 - 自动标注资源特性(直接下载、需登录、BT/磁力等)
- 📚 游戏信息 - 集成 VNDB 数据库,显示游戏详情和截图
- 🤖 AI 翻译 - 自动翻译游戏简介为中文
- 💬 评论系统 - 基于 Artalk 的评论功能
- 🖼️ 随机背景 - IndexedDB 缓存的随机背景图片系统
- 📱 响应式设计 - 完美适配桌面和移动设备
- ⚡ 性能优化 - NProgress 进度条、Fancybox 图片预览
- 📲 PWA 支持 - 可安装为桌面/移动应用,支持离线访问
🛠️ 技术栈
核心框架
- Vue 3.5 - 渐进式 JavaScript 框架
- TypeScript 5.9 - 类型安全的 JavaScript 超集
- Vite 7 - 下一代前端构建工具
- Pinia 3 - Vue 状态管理库
UI 框架
- Tailwind CSS 4.1 - 实用优先的 CSS 框架
- Lucide Icons - 现代化 SVG 图标库
功能库
- Artalk 2.9 - 评论系统
- Fancybox 6 - 图片和内容预览
- NProgress - 页面加载进度条
API 集成
- Cloudflare Workers API - 搜索聚合后端
- VNDB API - 游戏数据库
- AI Translation API - 智能翻译服务
📦 安装
前置要求
- Node.js 18+
- pnpm 8+ (推荐) 或 npm
克隆项目
git clone https://github.com/Moe-Sakura/frontend.git
cd frontend
配置环境变量
# 复制环境变量模板
cp .env.example .env
# 根据需要修改 .env 文件中的配置
# 详见 docs/ENV_GUIDE.md
安装依赖
pnpm install
🚀 开发
启动开发服务器
pnpm dev
构建生产版本
pnpm build
预览生产构建
pnpm preview
📁 项目结构
frontend/
├── public/ # 静态资源
│ ├── favicon-*.png # 网站图标
│ └── sw.js # Service Worker
├── src/
│ ├── api/ # API 接口
│ │ └── search.ts # 搜索和 VNDB API
│ ├── components/ # Vue 组件
│ │ ├── SearchHeader.vue # 搜索头部
│ │ ├── SearchResults.vue # 搜索结果
│ │ ├── PlatformNav.vue # 平台导航
│ │ ├── FloatingButtons.vue # 浮动按钮
│ │ ├── CommentsModal.vue # 评论弹窗
│ │ └── VndbPanel.vue # 游戏信息面板
│ ├── stores/ # Pinia 状态管理
│ │ └── search.ts # 搜索状态
│ ├── utils/ # 工具函数
│ │ └── imageDB.ts # IndexedDB 图片缓存
│ ├── types/ # TypeScript 类型定义
│ │ ├── pace-js.d.ts
│ │ └── artalk.d.ts
│ ├── App.vue # 根组件
│ └── main.ts # 入口文件
├── index.html # HTML 模板
├── vite.config.ts # Vite 配置
├── package.json # 项目配置
└── tsconfig.json # TypeScript 配置
🎯 核心功能
1. 聚合搜索
- 支持游戏和补丁两种搜索模式
- SSE 流式实时显示搜索进度
- 多平台并行搜索,结果即时展示
2. 智能标签系统
根据 Cloudflare Workers API 规范,自动标注资源特性:
| 标签 | 含义 | 说明 |
|---|---|---|
| 🟢 直接下载 | NoReq | 无需登录/回复即可下载 |
| 🔵 需登录 | Login | 需要账号登录 |
| 🟡 需付费 | LoginPay | 需登录且支付积分 |
| 🟣 登录+回复 | LoginRep | 需登录并回复/评论 |
| 🔷 需回复 | Rep | 需回复但无需登录 |
| 🎀 自建盘 | SuDrive | 自建网盘盘源 |
| ⚡ 不限速 | NoSplDrive | 不限速网盘(Onedrive/Mega) |
| 🟠 限速盘 | SplDrive | 限速网盘(百度/夸克/天翼) |
| 🔵 混合盘 | MixDrive | 混合网盘盘源 |
| 🟣 BT/磁力 | BTmag | BT 或磁力链接 |
| 🔴 需代理 | magic | 需要代理访问 |
3. 游戏信息展示
- 集成 VNDB 数据库
- 显示游戏封面、截图、标题、别名
- 游戏时长评估
- AI 自动翻译简介
4. 随机背景系统
- 每秒从 API 获取新图片
- 每 5 秒自动切换背景
- IndexedDB 本地缓存(最多 9999 张)
- Fisher-Yates 洗牌算法确保完整遍历
- 预加载机制避免白屏闪烁
5. 评论系统
- 基于 Artalk 的现代化评论系统
- 支持 Markdown 语法
- 表情包支持
- 嵌套回复
🔧 配置
API 端点配置
默认使用 Cloudflare Workers API:
// src/api/search.ts
const apiUrl = 'https://cf.api.searchgal.homes'
支持自定义 API 地址,在搜索页面输入框中填写即可。
本地开发 API
如果使用本地 API 进行开发:
# 在 Wrangler-API 项目中
npx wrangler dev --local
然后在前端使用:http://127.0.0.1:8787
🌐 部署
Vercel
# 安装 Vercel CLI
npm i -g vercel
# 部署
vercel
Netlify
# 安装 Netlify CLI
npm i -g netlify-cli
# 部署
netlify deploy --prod
Cloudflare Pages
# 构建
pnpm run build
# 上传 dist 目录到 Cloudflare Pages
📝 环境变量
项目不需要环境变量配置,所有 API 端点都在代码中硬编码或支持用户自定义。
🤖 LLM 友好
本项目遵循 llms.txt 规范,为 AI 助手和大语言模型提供了结构化的项目文档。
- 📄 访问
/llms.txt获取项目的 LLM 友好文档 - 🔗 在线地址: searchgal.homes/llms.txt
🤝 贡献
欢迎提交 Issue 和 Pull Request!
开发流程
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
代码规范
- 使用 TypeScript 编写代码
- 遵循 Vue 3 Composition API 风格
- 使用 Tailwind CSS 进行样式编写
- 保持代码简洁和可读性
📝 环境变量
项目使用环境变量进行配置管理,所有配置项都可以通过 .env 文件进行自定义。
快速配置
# 复制模板文件
cp .env.example .env
# 编辑配置(可选)
vim .env
主要配置项
- API 地址:
VITE_API_BASE_URL - 功能开关:
VITE_ENABLE_COMMENTS、VITE_ENABLE_VNDB等 - 主题颜色:
VITE_THEME_PRIMARY、VITE_THEME_ACCENT - 性能配置:缓存时长、搜索冷却时间等
详细配置说明请查看:
📄 许可证
本项目采用 MIT 许可证。
🙏 致谢
📮 联系方式
- GitHub: @Moe-Sakura
- 项目主页: searchgal.homes
⭐ 如果这个项目对你有帮助,请给个 Star!
Languages
Vue
48.2%
TypeScript
39.8%
CSS
6%
HTML
3.9%
JavaScript
2.1%