当前位置: 首页 > news >正文

【项目实训】——管理员前端页面开发

在开发后端的题目管理功能时,发现手动在数据库添加题目内容十分繁琐,而且不符合一个项目开发的正常过程,因此开发一个管理员的前端页面。

一、项目整体开发流程
项目采用 Vite 作为构建工具,搭配 TypeScript 实现类型约束,提升代码健壮性与可维护性。
首先通过官方命令初始化 Vue3+TS 基础项目:

npm create vite@latest yotood-mp -- --template vue-ts cd yotood-mp npm install


初始化完成后,根据项目业务需求,修改 package.json 配置运行脚本、安装核心依赖,包括 Vue Router、Axios、TailwindCSS、shadcn-vue 系列工具库,同时配置类型校验、打包编译、接口自动生成等自定义指令。
随后完成 Vite、TS 全局配置,配置路径别名 @ 简化文件引入,配置开发环境代理解决跨域问题,同步完善 Tailwind 全局样式,统一项目视觉风格。
接着搭建标准化目录结构,按功能拆分不同模块:入口配置、路由管理、全局布局、业务页面、接口服务、工具函数、通用 UI 组件、自动生成接口层,清晰的目录划分让代码职责明确,便于后期迭代维护。
基础环境与架构搭建完成后,依次完成路由系统开发、后台布局封装、通用 UI 组件封装、全局请求拦截器编写,最后逐页开发登录页、数据仪表盘、题目管理、创建题目、帮助中心等业务页面,最终完成前后端对接与功能调试,保障系统稳定运行。

代码架构如下:


二、开发核心难点与解决过程
1. 难点一:多级路由布局嵌套混乱,页面联调显示异常

在开发后台管理系统布局时,我采用了公共布局(侧边栏 + 顶部栏)+ 子页面的嵌套路由模式。开发过程中遇到了严重问题:路由层级配置错误,导致页面无法正常渲染、布局与页面无法匹配、跳转后出现空白页,前后端联调时页面结构完全错乱。
因为后台所有页面都需要复用同一个布局,如果路由父子关系写错、component 引入错误、children 结构不规范,就会直接导致页面无法加载、样式失效、路由守卫不生效,严重影响联调进度。
解决思路与过程:
重新梳理路由结构,严格使用父子嵌套路由:AdminLayout 作为父路由容器,仪表盘、题目管理等页面作为子路由放在 children 中;
统一在布局组件中使用 <router-view> 渲染子页面,确保布局与页面正确挂载;
修正路由路径层级,避免路径重复、前缀错误;
重新配置路由守卫,确保登录状态判断与页面跳转逻辑正常;
重启开发服务器,逐页测试跳转、刷新、权限拦截,最终让布局嵌套恢复正常,联调时页面能够稳定显示。
难点二:前后端已配置接口文档,但前端始终找不到接口(404 / 跨域)
项目前后端已经配置好接口文档 http://localhost:8121/api/v3/api-docs,且前端可正常访问文档,但在实际联调时,前端调用接口始终报错 404 找不到接口,或直接出现跨域无法请求的问题。
我一度以为是接口地址写错、后端未成功启动,但检查后发现后端正常运行,接口文档可访问,前端自动生成的代码也无误,但请求就是无法到达后端。
解决思路与过程:
排查发现:后端配置了统一前缀 /api,端口为 8121,而前端直接请求会被浏览器跨域策略阻止;
在 vite.config.ts 中配置代理转发(proxy),将前端 /api 开头的请求转发到 http://localhost:8121/api;
修正接口请求的 baseURL,确保前端请求路径与后端接口一致;
检查 axios 封装逻辑,确认请求头、token、请求格式与后端匹配;
重启前端项目,再次调用接口,成功解决 404 与跨域问题,前后端实现正常联调。

http://www.jsqmd.com/news/707456/

相关文章:

  • Canvas Quest与3D建模工作流结合:生成贴图与概念设计
  • 世界及中国地震相关数据(2012-2024年)
  • Python单变量函数优化算法与应用实践
  • 虚拟级联技术:运营商网络的带宽优化方案
  • 终极抖音下载指南:免费开源工具让你的视频获取效率飙升300%
  • 关于Navicat Premium 17破解方法
  • cv_unet_image-matting WebUI二次开发指南:从改颜色到加功能的完整教程
  • 机器学习核心原理与实践指南:从数据到智能应用
  • 智能体“自我纠错”循环的设计模式:何时重试、何时求助、何时报错?
  • Clink 在 VS 2022 Developer Command Prompt 中的配置与路径精简调校
  • 【CLAUDE】CLAUDE.md 完全实战指南:用好Claude Code的核心记忆体系
  • Rust的#[non_exhaustive]:防止模式匹配穷尽的可扩展枚举
  • 《B4447 [GESP202512 二级] 环保能量球》
  • Flux2-Klein-9B-True-V2效果集:Proteus电路仿真与AI概念艺术设计的碰撞
  • 原创文档:智慧地下管廊知识图谱设计与实现
  • 2026年最新实测:5个降AI工具助我把知网AIGC率从79%降至6.2%(附免费反向优化法) - 降AI实验室
  • 别再用namespace硬隔离了!MCP 2026正式启用硬件辅助隔离(Intel AMX+AMD SVM-V),性能损耗<0.7%?
  • 2026插座选哪个牌子性价比高?实用推荐指南 - 品牌排行榜
  • 登山包/电脑包/军用背包用TPU牛津布厂家推荐:轻便+防水+耐刮
  • 立知多模态重排序模型体验:图片搜索排序新利器
  • Day56基本包装类型
  • SCH16T-K01和K10提供高精度6DoF惯性传感器
  • 2026年毕业论文提交前终审降AI攻略:最后一遍处理完整方案
  • 关于java 调用阿里千问大模型,流式返回,并返回给前端
  • MCP 2026推理加速实战:5步完成KV Cache压缩、量化感知重编译与动态批处理调优,延迟直降63%
  • nli-MiniLM2-L6-H768快速部署:Kubernetes Helm Chart一键部署到生产集群
  • Windows 11锁屏壁纸别浪费!教你一键导出Spotlight精选图库到本地
  • 2026API服务商实测:3款稳定AI大模型接口方案,商用成本参考解析
  • 市场比较好的国标pvdf管厂家(2026年) - 品牌排行榜
  • OpenCV正态贝叶斯分类器在图像分割中的实战应用