# 25秋软分-前端开发 **Repository Path**: ma-lufeng/ThinkVerse-fronted ## Basic Information - **Project Name**: 25秋软分-前端开发 - **Description**: 此仓库用于前端开发 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-19 - **Last Updated**: 2025-12-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ThinkVerse 前端项目(Vue3 + Vite) 本仓库为 ThinkVerse 学术成果分享平台的**前端**。实际可运行的前端工程位于 `fronted/` 目录(项目名里虽然写了 fronted,但它就是前端工程根目录)。 --- ## 1. 环境要求 - **Node.js**:建议 **16+**(`vite@4` 需要 `^14.18.0 || >=16.0.0`,用 16/18 更稳) - **npm**:随 Node 自带即可 - **Sass(SCSS 预处理器)**:项目里有页面使用了 `lang="scss"`,需要安装 `sass` 依赖(本仓库已加入 `devDependencies`) - **后端网关**:开发环境默认通过 Vite 代理转发到 `http://localhost:8080`(见 `fronted/vite.config.js`);如需自定义可设置 `VITE_PROXY_TARGET` 环境变量 --- ## 2. 一键运行(Windows / PowerShell) 在仓库根目录执行: ```bash cd fronted npm install npm run dev ``` 启动后: - **前端地址**:通常是 `http://localhost:3000` - Vite 配置默认 **端口 3000** 并自动打开浏览器(见 `fronted/vite.config.js`) --- ## 3. 构建与预览(上线前常用) ```bash cd fronted npm run build npm run preview ``` - `build`:打包产物到 `fronted/dist/` - `preview`:本地预览打包结果(不是开发模式) --- ## 4. 项目入口与运行链路(最重要) 页面渲染主链路如下: 1. `fronted/index.html`:提供 `
` 挂载点 2. `fronted/src/main.js`:创建 Vue 应用并注册插件 - `vue-router`(路由) - `pinia`(状态管理) - `element-plus`(UI 组件库) 3. `fronted/src/App.vue`:根组件只渲染 `` 4. `fronted/src/router/index.js`:定义路由表与路由守卫(登录拦截) --- ## 5. 登录与权限(为什么没登录会被踢去登录页) 路由守卫位于 `fronted/src/router/index.js`: - 除了 `Login` / `Register` 以外的页面,**若本地没有 `localStorage.token` 会强制跳转到登录页** - 管理端页面路由带了 `meta: { requiresAdmin: true }`,但当前守卫只做“是否登录”的检查(是否管理员通常在页面逻辑或后端鉴权完成) 本地存储(见 `fronted/src/store/auth.js`): - `token`:JWT Token(请求会自动带上) - `userInfo`:用户信息 JSON - `userId`:用户 ID(请求会额外带 `X-USER-ID`) --- ## 6. 后端地址/网关配置(请求打到哪里) 所有 API 请求统一由 `fronted/src/utils/request.js` 封装: - **baseURL**:默认 `"/"`(同源),依赖 Vite 代理把请求转发到网关;生产环境可在构建时注入 `VITE_API_BASE_URL` 为绝对地址 - **请求拦截器**:若有 `token`,自动加请求头: - `Authorization: Bearer ` - `X-USER-ID: `(如果存在) - **响应拦截器**:支持后端统一返回结构: - 若响应包含 `code`:`code === 200` 时返回 `data`,否则弹错并 reject - 若不包含 `code`:直接返回响应体 如果你的后端网关不是 `8080` 或不是本机: - 开发环境:设置环境变量 `VITE_PROXY_TARGET`(例如 `http://localhost:8080`) - 生产环境:设置 `VITE_API_BASE_URL`(例如 `http://your-host:8080`) --- ## 7. 目录结构怎么读(快速理解) `fronted/src/` 下关键目录: - **`api/`**:接口封装(按业务域拆分) - `auth.js`:登录/注册/验证码/用户信息/改密 - `paper.js`:论文列表、搜索、详情、预览、交互、下载 - `recommendation.js`:推荐相关接口 - `search.js`:搜索(高级搜索/全文/分层/建议/健康检查) - `admin.js`:后台审核、审计日志、用户列表等 - **`router/`**:路由表与守卫(`index.js`) - **`store/`**:Pinia store(当前主要是 `auth.js`) - **`utils/`**:通用工具(当前核心是 `request.js` 请求封装) - **`views/`**:页面组件(按路由对应) - 常规页面:`Home.vue`、`Login.vue`、`Register.vue`、`Paper.vue`、`PaperDetail.vue`、`Recommendation.vue`、`SearchResult.vue` - 管理页面:`views/admin/*` - **`mock/`**:模拟数据(例如 `paperMock.js`,用于接口失败兜底/本地展示) --- ## 8. 路由一览(你能访问哪些页面) 定义于 `fronted/src/router/index.js`: - `/`:首页 `Home` - `/login`:登录 `Login` - `/register`:注册 `Register` - `/paper`:论文页 `Paper` - `/paper/:id`:论文详情 `PaperDetail` - `/recommendation`:推荐页 `Recommendation` - `/search`:搜索结果 `SearchResult` - `/admin/review`:审核管理 `ReviewManagement`(按需加载) - `/admin/audit-logs`:审计日志 `AuditLogs`(按需加载) - `/admin/permissions`:权限管理 `Permissions`(按需加载) --- ## 9. 常见问题(排查思路) ### 9.1 页面一直跳转到登录页 - 检查浏览器 `localStorage` 是否有 `token` - 或者先正常走登录接口(见 `src/api/auth.js` 的 `login`) ### 9.2 接口请求失败 / 404 / CORS - 确认后端网关是否启动,且地址为 `http://localhost:8085` - 若后端在别的地址:修改 `fronted/src/utils/request.js` 的 `baseURL` - 当前 Vite 配置里**没有代理**(`vite.config.js` 仅设置端口与 open) ### 9.3 下载接口拿到的是乱码 - `paperAPI.downloadPaper` 使用了 `responseType: 'blob'`,前端需要用 Blob 方式保存文件(一般在页面里做) --- ## 10. 我建议你从哪里开始读代码(入门路线) 1. 先看 `fronted/src/router/index.js`(了解页面与跳转逻辑) 2. 再看 `fronted/src/utils/request.js`(了解请求怎么发、token 怎么带) 3. 最后按功能看 `fronted/src/views/*` 与对应的 `fronted/src/api/*`