Vue后台管理系统实战:PC端项目从零搭建与TaoToken配置
1. Vue 后台管理系统 PC 端从零搭建先把骨架跑通再谈业务Vue 后台管理系统 PC 端项目说白了就是一套「左侧菜单 顶部导航 中间内容区」的壳子再往里塞登录鉴权、请求封装、权限路由这些通用能力。它适合三类人刚学完 Vue 基础想找个完整项目练手的学生、需要快速交付管理后台的前端、以及被拉来写 Vue Java 全栈的后端同学。我这次不铺开讲每个页面怎么写而是聚焦一件事——把项目初始化、路由与权限骨架、请求层封装、以及统一 API 通道的 config 配置一次性搭好让你拿到手就能继续往上加业务模块。很多人搭后台管理系统时容易陷入一个误区先猛写页面写到一半发现请求地址散落各处、token 到处硬编码、换环境要全局搜索替换。正确的顺序应该是先把「通道」和「骨架」定下来页面只是往骨架里填肉。这篇就按这个思路走目录结构、依赖清单、config 骨架、启动验证、接口联调一步步给全。2. 前置准备TaoToken 统一 Key 与 API 通道后台管理系统免不了要调大模型能力比如智能客服、数据摘要、代码辅助这些模块。如果每个模块各自维护一份 Key 和请求地址后期维护会很痛苦。我的做法是统一走一个 API 通道把 Key 和 baseURL 收敛到一处配置里。TaoToken 在这里扮演的就是这个统一入口的角色。你可以在官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 了解它的能力范围然后到控制台创建一个 Key。API 地址是 https://taotoken.net/api 注意这个地址不带任何查询参数直接作为 baseURL 使用。创建 Key 的入口在控制台里进去之后新建一个密钥复制出来先存到本地环境变量文件别直接写进代码提交到仓库。如果你后面要做长期编码或者 Agent 类功能可以看看 Coding Plan 相关的说明如果只是想先验证模型对话能不能通模型对话页面可以直接试。注意Key 属于敏感凭证本地用.env.local存并且把.env.local加进.gitignore。团队协作时用环境变量注入不要图省事写死在 config 里。3. 项目初始化与可复制目录结构3.1 创建项目与依赖清单用 Vite 起 Vue 3 项目比老版本 webpack 快很多后台管理系统这种中等规模项目体验很好。命令行执行npm create vitelatest vue-admin-base -- --template vue cd vue-admin-base npm install然后安装后台管理系统常用依赖package.json 的 dependencies 部分大致如下{ dependencies: { vue: ^3.4.0, vue-router: ^4.3.0, pinia: ^2.1.7, axios: ^1.6.8, element-plus: ^2.7.0, element-plus/icons-vue: ^2.3.1, nprogress: ^0.2.0 }, devDependencies: { vite: ^5.2.0, vitejs/plugin-vue: ^5.0.4, sass: ^1.75.0, unplugin-auto-import: ^0.17.5, unplugin-vue-components: ^0.26.0 } }element-plus 用自动按需引入配合 unplugin-auto-import 和 unplugin-vue-components能省掉大量手动 import。vite.config.js 里加上这两个插件即可。3.2 目录结构我习惯把结构分成「入口层、路由层、请求层、配置层、视图层」五块清晰且好扩展src/ ├── api/ # 各业务模块接口定义 │ └── ai.js ├── assets/ ├── components/ # 通用组件 │ ├── ComAside.vue │ └── ComHeader.vue ├── config/ │ └── index.js # 统一 API 通道配置 ├── router/ │ ├── index.js │ └── modules/ # 路由分模块 ├── store/ │ └── user.js ├── utils/ │ └── request.js # axios 二次封装 ├── views/ │ ├── Login.vue │ ├── Layout.vue │ └── dashboard/ └── main.js这个结构的好处是请求层和配置层独立换环境只动 config路由分模块权限骨架按模块挂载视图层只关心渲染。4. 请求层封装与 TaoToken config 骨架4.1 统一 config在src/config/index.js里收敛所有通道配置// src/config/index.js const ENV import.meta.env export const apiConfig { baseURL: ENV.VITE_API_BASE_URL || https://taotoken.net/api, timeout: 30000, aiKey: ENV.VITE_TAOTOKEN_KEY || , aiModel: claude-sonnet-4-5, } export const requestHeaders () ({ Content-Type: application/json, Authorization: Bearer ${apiConfig.aiKey}, })对应的.env.localVITE_API_BASE_URLhttps://taotoken.net/api VITE_TAOTOKEN_KEYsk-你的Key这样业务代码里永远不出现硬编码地址和 Key换环境只改环境变量。4.2 axios 二次封装src/utils/request.js里做拦截器统一处理 token、错误码、loadingimport axios from axios import { apiConfig, requestHeaders } from /config import { ElMessage } from element-plus const service axios.create({ baseURL: apiConfig.baseURL, timeout: apiConfig.timeout, }) service.interceptors.request.use( (config) { const token localStorage.getItem(token) if (token) config.headers.Authorization Bearer ${token} return config }, (error) Promise.reject(error) ) service.interceptors.response.use( (res) res.data, (error) { ElMessage.error(error.response?.data?.message || 请求失败) return Promise.reject(error) } ) export default service4.3 业务接口示例src/api/ai.js里定义调用大模型的接口走统一通道import service from /utils/request import { apiConfig, requestHeaders } from /config export function chatCompletion(messages) { return service.post( /v1/messages, { model: apiConfig.aiModel, max_tokens: 1024, messages, }, { headers: requestHeaders() } ) }注意这里 headers 单独传因为大模型接口的鉴权头和普通业务接口可能不同分开管理更灵活。5. 路由与权限骨架5.1 路由分模块src/router/index.js只做聚合具体路由放 modules 下import { createRouter, createWebHashHistory } from vue-router import Layout from /views/Layout.vue const modules import.meta.glob(./modules/*.js, { eager: true }) const asyncRoutes Object.values(modules).flatMap((m) m.default || []) const routes [ { path: /login, component: () import(/views/Login.vue) }, { path: /, component: Layout, redirect: /dashboard, children: [ { path: dashboard, name: Dashboard, meta: { title: 首页, requiresAuth: true }, component: () import(/views/dashboard/index.vue), }, ...asyncRoutes, ], }, { path: /:pathMatch(.*)*, component: () import(/views/NotFound.vue) }, ] const router createRouter({ history: createWebHashHistory(), routes, }) router.beforeEach((to, from, next) { const token localStorage.getItem(token) if (to.meta.requiresAuth !token) { next(/login) } else { next() } }) router.afterEach((to) { document.title to.meta.title || 后台管理系统 }) export default router5.2 权限骨架说明requiresAuth放在 meta 里守卫统一判断。真实项目里还会根据用户角色动态过滤 asyncRoutes这里先留好扩展点把asyncRoutes换成从后端拉取后router.addRoute动态挂载即可骨架不用动。6. 启动验证与接口联调6.1 启动项目npm run dev浏览器打开终端输出的地址默认是http://localhost:5173。能看到登录页说明路由和入口正常。6.2 验证请求通道在 dashboard 页面加一个测试按钮调用chatCompletionimport { chatCompletion } from /api/ai async function testChannel() { const res await chatCompletion([ { role: user, content: 用一句话介绍 Vue 后台管理系统 }, ]) console.log(通道返回, res) }点一下按钮控制台能打印出模型返回内容说明 Key、baseURL、请求封装三层都通了。如果返回 401检查.env.local里的 Key 是否生效改完环境变量要重启 dev server。6.3 联调业务接口把apiConfig.baseURL临时指向你的后端服务地址业务接口走同一个 request 实例拦截器会自动带上 token。前后端字段对不上时优先在拦截器里打印res.data看原始结构别急着改业务代码。7. 本篇常见错排查报错一process is not defined。Vite 里没有 Node 的 process 对象把process.env.XXX全部换成import.meta.env.XXX环境变量必须以VITE_开头才会被注入。报错二请求 401 或 Key 无效。先确认.env.local文件名没写错再确认 dev server 重启过。Key 前后不要带空格复制时容易多带换行。报错三路由刷新 404。hash 模式一般不会如果你用了 history 模式需要在服务端配置 fallback 到 index.html否则二级路由刷新会 404。报错四element-plus 组件不生效。检查 unplugin-vue-components 的 resolver 是否配置了 ElementPlusResolver自动引入没配好时组件会静默不渲染。报错五跨域。开发阶段在 vite.config.js 里配 proxy把/api代理到后端地址别在前端代码里写死后端域名。8. 继续往下走骨架跑通之后下一步就是往views里加业务页面往api里加接口定义往router/modules里加路由模块。请求层和 config 层基本不用再动这就是前期把通道收敛好的收益。如果你在接入过程中卡在鉴权或请求封装上可以直接到 API Keys 页面重新生成一个 Key 对照排查接入文档里有完整的参数说明。想先确认模型通道本身是否正常用模型对话页面发一条消息最快。后面要做长期编码辅助或者 Agent 类功能再去看 Coding Plan 的说明按需升级就行。项目基座搭好了剩下的就是往里填业务动手吧。

相关新闻

2026年AI编程工具横评:TaoToken统一Key接入8款热门工具实战

2026年AI编程工具横评:TaoToken统一Key接入8款热门工具实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 12:44:19 阅读更多 →
钉钉机器人快速搭建:配合 OpenClaw 实现群组智能应答(含安装包与 TaoToken 配置)

钉钉机器人快速搭建:配合 OpenClaw 实现群组智能应答(含安装包与 TaoToken 配置)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 12:44:19 阅读更多 →
A2A 火了:Google 刚出的 Agent 间通信协议,TaoToken 视角下到底解决了什么问题

A2A 火了:Google 刚出的 Agent 间通信协议,TaoToken 视角下到底解决了什么问题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 12:44:19 阅读更多 →

最新新闻

ax编排器:Agentic工作负载在Kubernetes上的CLI调度实践

ax编排器:Agentic工作负载在Kubernetes上的CLI调度实践

1. 从“ax”这个标题说起:一个被低估的Agentic编排入口第一次看到“ax”这个标题,很多人会以为是某个命令行工具的缩写,或者某个内部项目的代号。但把热搜词摊开来看——ax、agentic、orchestrator、Kubernetes、CLI——这几个词凑在一起&…

2026/9/25 13:22:47 阅读更多 →
小程序视频审核被拒不用怕:三条合规路线绕过视听许可证

小程序视频审核被拒不用怕:三条合规路线绕过视听许可证

做小程序最怕遇到什么?不是代码写不出来,不是你调了一天的接口突然报错,而是你费尽心思把功能做完了,提交审核之后收到一条冷冰冰的提示:“你的小程序涉及视频播放,请补充相关类目。”瞬间血压就上来了。这…

2026/9/25 13:22:47 阅读更多 →
HTTP响应体被截断?详解skipped与truncated日志的排查方法

HTTP响应体被截断?详解skipped与truncated日志的排查方法

“http://www.xxx.com/ skipped. Content of size 67099 was truncated to 59363”这行日志,我猜搞过爬虫、写过后端网关或者天天跟 HTTP 接口打交道的人,多少都见过类似的东西。我第一次遇到时也是一脸懵:好好的 URL 怎么说跳过就跳过了&…

2026/9/25 13:22:47 阅读更多 →
远程云GPU训练Spirula Studio:用CLI+WebViewer实时盯住训练进度

远程云GPU训练Spirula Studio:用CLI+WebViewer实时盯住训练进度

远程云GPU训练Spirula Studio:用CLIWebViewer实时盯住训练进度 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio …

2026/9/25 13:22:47 阅读更多 →
纯HTML+CSS家乡介绍页:零JS本地静态网页实战

纯HTML+CSS家乡介绍页:零JS本地静态网页实战

简介:这是一份面向HTML5初学者与前端入门学习者的家乡主题网页开发模板,聚焦语义化结构与基础样式实践,帮助用户快速掌握网页内容组织与视觉呈现的核心技能。资源共12个文件,包含2个HTML主页面(index.html、test.html&…

2026/9/25 13:22:47 阅读更多 →
校园网上网行为管理解决方案与系统部署:中小学校园网上网行为管理系统如何落地

校园网上网行为管理解决方案与系统部署:中小学校园网上网行为管理系统如何落地

结论:中小学校园通过应用访问控制与上网行为管理,可基于3000URL识别能力按系统预置分类控制内网用户URL访问权限,有效杜绝师生上课打游戏、炒股、网购;结合全光网承载可进一步降低建设成本与运维难度,让管控策略在统一…

2026/9/25 13:21:46 阅读更多 →

日新闻

AI元人文:从工具使用到思维重构的深度探索

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:00:41 阅读更多 →
Python+CNN车牌识别实战:从数据预处理到模型训练与部署

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:00:41 阅读更多 →
Vim基础操作全攻略:保存退出、模式切换与高频命令实战

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

2026/9/25 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/25 11:15:26 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →