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

2026山东大学软件学院项目实训(一)

Vue 3工程化实践与组件设计核心任务概述本次项目实训聚焦Vue 3前端工程化配置与全局组件开发目标是通过模块化设计提升代码复用率并建立规范的前后端协作流程。核心任务包括使用Pinia实现全局状态管理基于Ant Design Vue完成响应式布局组件封装统一的HTTP请求层工程化配置实践项目采用Vite构建工具初始化Vue 3 TypeScript模板引入Router和PiniaRouter路由管理const router createRouter({ history: createWebHistory(import.meta.env.BASE_URL), routes: [ { path: /, name: home, component: HomePage, }, ], })Pinia状态管理全局组件开发BasicLayout.vue作为基础布局组件整合导航菜单与页脚template a-layout classbasic-layout !-- 顶部导航栏 -- GlobalHeader / !-- 主要内容区域 -- a-layout-content classmain-content router-view / /a-layout-content !-- 底部版权信息 -- GlobalFooter / /a-layout /template script setup langts import GlobalHeader from /components/GlobalHeader.vue import GlobalFooter from /components/GlobalFooter.vue /script style scoped .basic-layout { background: none; } .main-content { width: 100%; padding: 0; background: none; margin: 0; } /styleimport GlobalHeader from /components/GlobalHeader.vueimport GlobalFooter from /components/GlobalFooter.vue将GlobalHeader 和GlobalFooter抽离成组件结构更清晰在GlobalHeader.vue中给 GlobalHeader 的菜单组件绑定跳转事件import { useRouter } from vue-router const router useRouter() // 处理菜单点击 const handleMenuClick: MenuProps[onClick] (e) { const key e.key as string selectedKeys.value [key] // 跳转到对应页面 if (key.startsWith(/)) { router.push(key) } }高亮同步刷新页面后 发现当前菜单项并没有高亮所以需要同步路由的更新到菜单项高亮。同步高亮原理1. 点击菜单时Ant Design 组件已经通过 v-model 绑定 current 变量实现了高亮。2. 刷新页面时需要获取到当前 URL 路径然后修改 current 变量的值从而实现同步。使用Vue Router的 afterEach 路由钩子实现每次改变路由或刷新页面时都会自动更新 current 的值从而实现高亮// 当前选中菜单 const selectedKeys refstring[]([/]) // 监听路由变化更新当前选中菜单 router.afterEach((to, from, next) { selectedKeys.value [to.path] })请求层封装方案Axios拦截器配置包含错误统一处理逻辑import axios from axios import { message } from ant-design-vue // 创建 Axios 实例 const myAxios axios.create({ baseURL: http://localhost:8080/api, timeout: 60000, withCredentials: true, }) // 全局请求拦截器 myAxios.interceptors.request.use( function (config) { // Do something before request is sent return config }, function (error) { // Do something with request error return Promise.reject(error) }, ) // 全局响应拦截器 myAxios.interceptors.response.use( function (response) { const { data } response // 未登录 if (data.code 40100) { // 不是获取用户信息的请求并且用户目前不是已经在用户登录页面则跳转到登录页面 if ( !response.request.responseURL.includes(user/get/login) !window.location.pathname.includes(/user/login) ) { message.warning(请先登录) window.location.href /user/login?redirect${window.location.href} } } return response }, function (error) { // Any status codes that falls outside the range of 2xx cause this function to trigger // Do something with response error return Promise.reject(error) }, ) export default myAxios自动生成请求代码如果采用传统开发方式针对每个请求都要单独编写代码很麻烦。 所以使用 OpenAPI 工具直接根据后端接口文档自动生成前端请求代码即可这种方式会比 AI 生成更可控。// 根据后端接口生成前端请求和 TS 模型代码 // npm run openapi2ts export default { requestLibPath: import request from /request, // schemaPath: Your OpenAPI schema path, schemaPath: http://localhost:8080/api/v3/api-docs, serversPath: ./src, }生成的模型直接应用于Pinia Action确保前后端参数类型一致。经验总结模块化设计使布局组件复用率提升40%自动生成的API代码减少手动声明类型的时间消耗

相关文章:

2026山东大学软件学院项目实训(一)

Vue 3工程化实践与组件设计 核心任务概述 本次项目实训聚焦Vue 3前端工程化配置与全局组件开发,目标是通过模块化设计提升代码复用率,并建立规范的前后端协作流程。核心任务包括: 使用Pinia实现全局状态管理基于Ant Design Vue完成响应式布…...

5分钟解锁全网视频下载:为什么res-downloader能让你的数字生活更自由?

5分钟解锁全网视频下载:为什么res-downloader能让你的数字生活更自由? 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-…...

QQ空间历史说说一键导出终极指南:GetQzonehistory完整备份解决方案

QQ空间历史说说一键导出终极指南:GetQzonehistory完整备份解决方案 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾想永久保存QQ空间里的青春记忆?那些深…...

FanControl中ADLXWrapper初始化失败解决方案

FanControl中ADLXWrapper初始化失败解决方案 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/FanControl.Releases…...

绝地求生压枪难题如何破解?5个核心技巧让罗技鼠标宏成为你的制胜法宝

绝地求生压枪难题如何破解?5个核心技巧让罗技鼠标宏成为你的制胜法宝 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 还在为绝地求生…...

百度网盘秒传链接全平台解决方案:告别漫长等待,实现文件瞬间转移

百度网盘秒传链接全平台解决方案:告别漫长等待,实现文件瞬间转移 【免费下载链接】baidupan-rapidupload 百度网盘秒传链接转存/生成/转换 网页工具 (全平台可用) 项目地址: https://gitcode.com/gh_mirrors/bai/baidupan-rapidupload 你是否曾因…...

网络安全应用初探:使用Qwen1.5-1.8B GPTQ分析日志与生成安全报告

网络安全应用初探:使用Qwen1.5-1.8B GPTQ分析日志与生成安全报告 想象一下这个场景:凌晨两点,安全运营中心的告警大屏上,成千上万条日志和告警信息像瀑布一样滚动。值班的安全分析师强打精神,试图从这片信息的海洋里分…...

从手动15秒到自动0.8秒:米哈游游戏扫码登录的智能革命

从手动15秒到自动0.8秒:米哈游游戏扫码登录的智能革命 【免费下载链接】MHY_Scanner MHY扫码登录器,支持从直播流抢码。 项目地址: https://gitcode.com/gh_mirrors/mh/MHY_Scanner 在直播抢码、多账号切换的激烈竞争中,你是否还在为手…...

C++11三大核心特性深度解析:类型特征、时间库与原子操作

C11三大核心特性深度解析&#xff1a;类型特征、时间库与原子操作 引言 C11标准的发布标志着C语言进入了现代编程的新纪元。在众多令人瞩目的新特性中&#xff0c;类型特征&#xff08;<type_traits>&#xff09;、时间库&#xff08;&#xff09;和原子操作&#xff0…...

BAAI/bge-m3新手指南:快速上手多语言文本语义分析服务

BAAI/bge-m3新手指南&#xff1a;快速上手多语言文本语义分析服务 1. 认识BAAI/bge-m3语义分析引擎 BAAI/bge-m3是由北京智源人工智能研究院开发的多语言通用嵌入模型&#xff0c;它能够将文本转换为高维向量表示&#xff0c;从而计算不同文本之间的语义相似度。这个模型在MT…...

开源工具Untrunc:视频文件恢复的技术实践指南

开源工具Untrunc&#xff1a;视频文件恢复的技术实践指南 【免费下载链接】untrunc Restore a damaged (truncated) mp4, m4v, mov, 3gp video. Provided you have a similar not broken video. 项目地址: https://gitcode.com/gh_mirrors/unt/untrunc 在数字时代&#…...

别再折腾本地环境了!用Google Colab免费GPU跑通YOLOv8的保姆级教程

别再折腾本地环境了&#xff01;用Google Colab免费GPU跑通YOLOv8的保姆级教程 第一次接触YOLO目标检测模型时&#xff0c;我被它强大的实时检测能力震撼了——直到尝试在本地配置环境。CUDA版本冲突、PyTorch安装报错、显卡驱动不兼容...这些坑让我的热情迅速降温。直到发现G…...

游戏开发实战:Unity中合并带材质的.obj模型文件全攻略

Unity游戏开发实战&#xff1a;高效合并带材质的.obj模型文件全流程解析 在游戏开发中&#xff0c;资源优化始终是提升性能的关键环节。当项目涉及大量.obj格式的3D模型时&#xff0c;合并这些文件不仅能减少Draw Call&#xff0c;还能显著简化资源管理流程。本文将深入探讨如何…...

如何用Python实现非奇异快速终端滑模控制(NTSM)?附完整仿真代码

Python实现非奇异快速终端滑模控制(NTSM)的工程实践指南 滑模控制因其强鲁棒性在工业控制领域广受青睐&#xff0c;但传统方法存在奇异性与抖振问题。本文将手把手带您用Python实现非奇异快速终端滑模控制(Non-singular Terminal Sliding Mode Control, NTSM)&#xff0c;包含完…...

深蓝词库转换:打破30+输入法壁垒的终极解决方案

深蓝词库转换&#xff1a;打破30输入法壁垒的终极解决方案 【免费下载链接】imewlconverter ”深蓝词库转换“ 一款开源免费的输入法词库转换程序 项目地址: https://gitcode.com/gh_mirrors/im/imewlconverter 深蓝词库转换&#xff08;imewlconverter&#xff09;是一…...

拼多多数据采集实战指南:用scrapy-pinduoduo轻松获取电商市场情报

拼多多数据采集实战指南&#xff1a;用scrapy-pinduoduo轻松获取电商市场情报 【免费下载链接】scrapy-pinduoduo 拼多多爬虫&#xff0c;抓取拼多多热销商品信息和评论 项目地址: https://gitcode.com/gh_mirrors/sc/scrapy-pinduoduo 在电商竞争日益激烈的今天&#x…...

实战应用:在快马平台构建支持模型切换的智能代码重构助手

最近在做一个代码重构工具时&#xff0c;发现不同AI模型对同一段代码的重构建议差异很大。于是尝试在InsCode(快马)平台上搭建了一个支持模型切换的智能代码重构助手&#xff0c;效果出乎意料地好。分享一下具体实现思路和实战经验&#xff1a; 需求分析 日常开发中经常遇到代码…...

从防御者视角看SSRF攻击Redis:手把手教你用WAF规则和Redis配置堵住这个高危组合

构建企业级SSRF与Redis联合防御体系的实战指南 当SSRF漏洞遇上未授权访问的Redis服务&#xff0c;就像给攻击者打开了通往企业核心数据的大门。这种高危组合可能导致从敏感信息泄露到服务器完全沦陷的严重后果。本文将系统性地从防御视角出发&#xff0c;提供一套覆盖应用层、网…...

Windows 一键安装OpenClaw 教程|全流程无代码无需输命令

OpenClaw Windows 专属本地安装包 &#xff0c;全程图形化、无需代码、自带依赖&#xff0c;支持微信 / 企业微信 / 钉钉 / 飞书一键联动&#xff0c;本地运行更安全。 一、安装前准备 系统&#xff1a;Windows 10/11 64 位内存&#xff1a;≥8GB必须关闭&#xff1a;360、火…...

从开发到上线,基于快马平台构建可部署于ubuntu24.04的django博客系统

最近在折腾个人博客系统&#xff0c;想找一个既能快速开发又能轻松部署的方案。试了几个平台后&#xff0c;发现InsCode(快马)平台特别适合这种需求&#xff0c;尤其是配合Ubuntu 24.04服务器部署的场景。下面记录下我的实战过程&#xff0c;从开发到上线全流程走通的经验。 项…...

突破抖音直播回放下载限制:5大技术创新与3大实战场景全解密

突破抖音直播回放下载限制&#xff1a;5大技术创新与3大实战场景全解密 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback …...

PDF补丁丁深度解析:高效PDF文档处理与批量优化完整指南

PDF补丁丁深度解析&#xff1a;高效PDF文档处理与批量优化完整指南 【免费下载链接】PDFPatcher PDF补丁丁——PDF工具箱&#xff0c;可以编辑书签、剪裁旋转页面、解除限制、提取或合并文档&#xff0c;探查文档结构&#xff0c;提取图片、转成图片等等 项目地址: https://g…...

如何快速掌握MaterialSkin:打造现代化WinForms界面的终极指南

如何快速掌握MaterialSkin&#xff1a;打造现代化WinForms界面的终极指南 【免费下载链接】MaterialSkin Theming .NET WinForms, C# or VB.Net, to Googles Material Design Principles. 项目地址: https://gitcode.com/gh_mirrors/ma/MaterialSkin 你是否厌倦了传统Wi…...

2026年,温州贴纸定制售后哪家强?这份避坑指南请收好

在温州&#xff0c;无论是蓬勃发展的电商产业&#xff0c;还是底蕴深厚的制造业&#xff0c;对高品质、个性化的贴纸、标签需求都日益旺盛。然而&#xff0c;许多企业在定制过程中&#xff0c;都曾踩过“货不对板”、“交付延迟”、“售后无门”的坑。选择一家靠谱的供应商&…...

AI专著写作全流程:专业工具深度剖析,助你顺利完成大作

学术专著写作挑战与AI工具助力 对于许多学者而言&#xff0c;撰写学术专著最大的挑战&#xff0c;往往就是“有限的时间”与“无限的期望”的矛盾。完成一部专著通常需要3到5年&#xff0c;甚至更长的时间&#xff0c;而学者们还得兼顾教学、科研项目以及学术交流等多重责任&a…...

Escrcpy手柄映射:重新定义手游操控体验

Escrcpy手柄映射&#xff1a;重新定义手游操控体验 【免费下载链接】escrcpy &#x1f4f1; Display and control your Android device graphically with scrcpy. 项目地址: https://gitcode.com/GitHub_Trending/es/escrcpy 当你在手机屏幕上滑动虚拟摇杆试图精准瞄准敌…...

智慧农业之梨树识别数据集 果树识别 水果检测 梨子识别数据集 梨子识别数据集第10643期

梨子识别数据集第10643期 README 项目概述 本数据集聚焦于农业场景下的梨子目标检测任务&#xff0c;包含真实果园环境中采集的图像&#xff0c;适用于果实定位、成熟度分析及智能农业应用研究。数据提供 Yolo 与 VOC 双格式标注&#xff0c;便于无缝集成至主流深度学习框架&am…...

EasyControl 技术指南:从环境搭建到核心功能配置

EasyControl 技术指南&#xff1a;从环境搭建到核心功能配置 【免费下载链接】Easycontrol 易控&#xff0c;帮助你方便的使用手机远程控制手机。 项目地址: https://gitcode.com/gh_mirrors/ea/Easycontrol 核心价值&#xff1a;重新定义移动设备控制体验 作为开发者&…...

Hotkey Detective:Windows热键冲突的智能诊断与解决方案

Hotkey Detective&#xff1a;Windows热键冲突的智能诊断与解决方案 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 在现代…...

YimMenu深度解析:GTA V游戏修改工具的核心机制与实战指南

YimMenu深度解析&#xff1a;GTA V游戏修改工具的核心机制与实战指南 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/Y…...