# 截图生成模板(Vue 3 + TypeScript + Vite) 一个基于 Vue 3 的前端项目,用于生成截图模板,支持登录、注册、验证码、图片上传与效果预览等功能。项目集成了 Pinia、Vue Router、Element Plus、TailwindCSS 等,开发体验友好、构建快速。 ## 技术栈 - Vue 3、TypeScript、Vite - Pinia、Vue Router - Element Plus、TailwindCSS - Axios ## 快速开始 1. 安装依赖 - `npm install` 2. 选择并启动应用(需要传入 appname) - 开发:`npm run dev -- dy` - 构建:`npm run build -- dy` - 预览:`npm run preview` > 说明:`dy` 是示例 appname,必须与 `config/index.json` 中的键一致。开发时写入 `.env.development` 并启动 Vite(默认端口 `3001`),构建时写入 `.env.production` 并输出到 `html/`。 ## 环境与配置 - `config/index.json` 管理多应用配置,示例: ```json { "dy": { "appName": "dy", "accountList": [16888888887, 16888888888, 16888888889] } } ``` - 启动/构建脚本会将所选应用写入 `.env.*`: - `VITE_APP_NAME` - `VITE_APP_CONFIG`(JSON 字符串) - 前端通过 `src/config/index.ts` 读取并解析: - `appName` 与 `appConfig` - `imgHost` 将回退到 `appUrl`(若存在) ## 开发与构建 - 开发服务:`npm run dev -- dy` - 写入 `.env.development` - 启动命令:`vite --port 3001 --host` - 访问 `http://localhost:3001/` - 构建产物:`npm run build -- dy` - 输出目录:`html/` - 预览构建结果:`npm run preview` - 默认端口见 `vite.config.ts`(示例:`8000`) ## 接口与代理 - 统一通过 `/api` 访问后端接口(见 `vite.config.ts` 中 `server.proxy`)。 - 示例:`/api/login`、`/api/register`、`/api/captcha/new`、`/api/upload` 等 - 默认代理目标示例:`http://192.168.1.168:8090`(请按需修改) - 响应拦截: - 登录态失效(`code === 401`)自动跳转 `'/login'` - 业务错误通过 `ElMessage` 提示 - `blob` 响应(验证码图片)直接返回原始数据,避免按业务码处理 ## 主要功能模块 - 登录、注册与验证码 - 登录提交:账号、密码、验证码 - 注册提交:账号、密码、确认密码、验证码 - 验证码接口:`GET /api/captcha/new`,前端 `blob` 展示并支持刷新 - 截图生成与图片上传 - 图片上传走 `/api/upload`,上传成功后更新预览数据 - 头像、评论图片等均可在页面操作与替换 ## 关键文件 - `src/views/common/login/index.vue`:登录/注册页,集成验证码展示与刷新逻辑 - `src/store/user.ts`:用户状态与登录提交逻辑(含验证码校验) - `src/api/login.ts`:登录、注册、验证码 API 封装 - `src/request/index.ts`:Axios 实例与拦截器(401 处理、blob 直返) - `vite.config.ts`:Vite 插件、构建与开发代理配置 - `bin/index.js`:根据 `appname` 写入 `.env.*` 并调用 Vite(开发/构建) ## 常见问题 - 开发脚本必须携带 `appname`:`npm run dev -- dy` - 后端地址变化需修改 `vite.config.ts` 中代理目标 - 验证码刷新:前端会带时间戳参数避免缓存 - 401 未授权:自动清理登录态并跳转登录页 ## 许可 本项目供内部或学习交流使用,若需开源协议请自行补充。