若依vue3前端页面框架:路由联动、权限指令与缓存机制解析
简介若依vue3前端页面框架是一套基于Vue3与Element Plus的开源后台管理前端解决方案面向需要快速搭建企业级系统的开发团队及初中级前端工程师适用于中后台管理系统、权限控制界面、数据看板等典型场景。压缩包共299个文件、约3MB以86个Vue组件、67个JS脚本、87个SVG图标和SCSS样式为主同时附有构建启动批处理、环境变量与工程配置文件结构清晰可直接作为项目骨架复用。已有371人学习下载。框架深度结合Vue3的Composition API与Proxy响应式机制对路由、状态管理和网络请求做了统一封装并提供表单、表格、导航栏等开箱即用组件能有效降低后台页面的重复开发成本。此外内置的gitignore、yaml等配置也方便团队统一规范适合用来理解Vue3的企业级工程组织方式或作为新项目的前端初始化模板。1. 若依vue3前端页面框架先搞清楚它到底替你做了哪几件事接手一套基于若依vue3前端页面框架的后台管理系统时大多数人的第一反应是打开代码生成器把列表、表单、接口一通生成然后复制粘贴。但真正让A同学卡住的往往不是代码生成而是路由切换后页面不刷新、按钮权限一直显示、字典字段渲染成状态码这种“配置问题”。若依vue3前端页面框架的本质不是一套好看的页面模板而是一套约定路由与后端菜单怎么联动、请求怎么封装、字典和权限指令怎么挂到组件上。把这些约定看清你才能把精力放到业务字段和交互设计上而不是和框架本身搏斗。这篇笔记适合刚接手若依项目的前端、用脚手架快速交付后台页面的同学也适合想把它改造成团队内部规范的人。2. 工程结构与本地启动先把框架的“约定”读一遍2.1 核心目录src 下面真正要改的就四块初次打开若依vue3前端工程src 目录看起来很长但日常开发里你会反复进出的是下面几张表里的几个目录。把它当成一张地图记别花时间把所有文件都读一遍。目录职责你在这要做什么src/api按业务模块拆分的接口定义新增页面时在这里补接口调用函数src/views页面组件与后端菜单层级一一对应新增或改造页面主要工作区src/router静态路由与动态路由生成逻辑一般不改只理解它是怎么合并菜单的src/store/modules/permission从后端菜单生成前端路由表调试路由不进页面时来查src/plugins全局组件与指令注册入口需要自定义指令或全局组件时看这src/utils/request.jsaxios 封装负责统一解包后端响应改接口前缀、加拦截器时动这如果你接手的项目是“若依vue3前后端分离”的目录结构那么 src/api 下通常会按 user、role、menu、dict 这类系统模块分文件业务模块则分包到你的业务域下面。一个最常见的错误是直接在看不懂的目录里新建页面结果页面没挂菜单、路由找不到。正确顺序是先在 src/views 下建页面组件再通过后端菜单配置挂到路由表上。ruoyi-ui ├─ src │ ├─ api │ ├─ assets │ ├─ components │ ├─ directives │ ├─ layout │ ├─ plugins │ ├─ router │ ├─ store │ ├─ utils │ └─ views ├─ vite.config.js ├─ .env.development └─ package.json这个目录结构是绝大多数若依vue3前端页面的基座。layout 目录承载顶部导航、侧边栏和 TagsView你业务页面只是被嵌套在主框架里的子路由。理解这一点很重要为什么你的页面出现两个滚动条、为什么内容区宽度不对多半是页面组件没有按 layout 的子路由层级放把路由直接配到了根级。2.2 后端接口联调代理配置与启动命令前端框架跑起来之前要确认两件事后端服务是否已经启动以及前端的代理是否指向正确的后端地址。若依vue3前端工程用 Vite 做构建开发环境下通过 proxy 把/dev-api开头的请求转发到后端服务。// vite.config.js server: { host: 0.0.0.0, port: 80, proxy: { /dev-api: { target: http://localhost:8080, changeOrigin: true } } }/dev-api是前端请求的统一前缀所以你在src/api里写的接口地址通常是/system/user/list这种相对路径axios 实例在创建时会自动拼上baseURL。baseURL 的值来自环境变量在.env.development里配置为VITE_APP_BASE_API /dev-api。所以启动项目前检查三处后端端口是否与 proxy 的 target 一致、target 里的端口是否真的能被访问、代理前缀和 baseURL 是否匹配。这三处不一致表现出的现象都是请求 404 或 502而且控制台里看起来像是跨域问题实际上是代理把请求转发到了错误的地方。本地启动的命令没什么特别的但执行顺序有讲究我一般会分两步走。npm install npm run dev注意不要一上来就npm install然后卡住若依前端工程依赖项较多安装慢是正常的。如果 node_modules 已经存在但页面启动报依赖版本冲突优先删掉 package-lock.json 和 node_modules 重新安装而不是手动改依赖版本号。启动成功后访问http://localhost:80如果你改了端口以 vite.config.js 里的server.port配置为准。这一步最常见的翻车现场是后端没启动前端控制台白屏但接口列表里能看到一堆 pending 状态。3. 从菜单到页面路由、菜单与页面文件的对应关系3.1 动态路由菜单数据是后端给的路由表是前端生成的若依vue3前端页面框架里路由不全部写在 router 目录里。你登录之后前端会请求后端获取当前用户可见的菜单树再把这棵菜单树转换成 Vue Router 的路由表并动态挂载。这就是为什么你在代码里搜索某个业务路由可能连影子都找不到——它不是静态写死的。这个设计决定了三件事。第一页面能不能被访问取决于后端菜单配置第二菜单的组件路径字段component必须与src/views下的文件路径保持一致第三菜单的权限标识perms决定按钮级权限角色绑定这个权限标识之后用户登录拿到 permissions 数组前端指令才能判断按钮显隐。// src/store/modules/permission.js 中动态路由的核心逻辑示意 const routes generateRoutes(menus) routes.forEach(route { router.addRoute(route) })这段代码的职责是遍历后端菜单数据将其格式化为 Vue Router 的路由配置对象。参数说明里最关键的两个字段是path和componentpath是浏览器地址栏的路由路径component是views目录下的组件路径格式里通常省略.vue后缀。如果这两个字段不匹配页面会白屏且控制台输出找不到组件的警告这种问题不看后端菜单数据根本定位不到。3.2 手动新增一个页面的完整链路菜单、路由、组件名三处对齐代码生成器可以自动完成菜单创建和页面生成但对于理解框架、或者接手不是由生成器产出的页面时你一定要能手写这条链路。以下是在若依vue3前端页面框架中手动加一个页面的标准路径。第一步在src/views/test目录下新建demo.vuescript setup nameDemo // name 属性是给 keep-alive 用的必须和路由 name 保持一致 /script template div若依vue3前端页面框架新页面/div /template第二步在后端菜单管理中添加菜单路径填/test/demo组件路径填test/demo权限标识填test:demo:list。第三步给角色分配这个菜单重新登录。登录后前端会在路由表里找到test/demo并映射到src/views/test/demo.vue。注意script setup nameDemo这段写法这是若依vue3前端页面框架里极力强调的一个约定。Vue 3 的script setup默认不会自动把组件名暴露给 keep-alive必须显式声明 name。如果你不写 name或者 name 与路由的 name 不一致keep-alive 匹配不到组件就会出现路由切换后页面被销毁重建、表格数据每次都要重新拉取的现象。这个细节是很多“框架玄学”的真正根源。3.3 路由缓存与组件 name 的对应关系若依后端菜单表里有一个isCache字段控制前端路由对应的页面组件是否被 keep-alive 缓存。true 时首次进入页面组件实例会被缓存之后切换路由不会销毁它false 时每次进入都重新创建。前端的实现靠的是 Vue Router 的include属性与组件 name 的匹配。# 后端菜单表字段 menu_name 菜单名称 path 路由地址 component 组件路径 perms 权限标识 is_cache 是否缓存0 不缓存1 缓存实战中A同学遇到过这样一个场景列表页做了查询条件切换到别的菜单再切回来查询条件和表格数据都还在看起来“很智能”但另一些页面却每次进入都重新请求。深入排查才发现是后端菜单配置里的is_cache不一致导致。缓存本身不是问题问题是缓存了不该缓存的页面比如带时间筛选的报表页。所以is_cache的配置原则是纯查询页面可以开带时间、带当前操作人、带实时数据的页面建议关掉。4. 列表页与表单页的写法从请求封装到权限指令4.1 列表页的标准结构查询、分页、响应解包若依vue3前端页面框架的列表页有一个被反复复制的模板。把下面这份代码单独抽出来当成你自己的页面骨架比每次从生成器复制更可靠因为你至少知道每一行在干什么。script setup nameUserList import { listUser } from /api/system/user import Pagination from /components/Pagination const loading ref(true) const userList ref([]) const total ref(0) const queryParams reactive({ pageNum: 1, pageSize: 10, userName: undefined }) function getList() { loading.value true listUser(queryParams).then(response { userList.value response.rows total.value response.total loading.value false }) } getList() /script template el-table v-loadingloading :datauserList el-table-column label用户名 propuserName / /el-table pagination v-showtotal 0 :totaltotal v-model:pagequeryParams.pageNum v-model:limitqueryParams.pageSize paginationgetList / /template这里有几个参数说明queryParams是查询条件的唯一数据源列表页任何筛选都往这个对象上挂pageNum和pageSize是若依后端分页插件 Sa-Token 或 MyBatis 分页默认读取的参数名不要改成page和limit否则分页失效response.rows和response.total是后端返回的数据结构这是若依统一的响应体约定。如果你接的是别的后端按这个结构改后端返回即可前端不用大动。4.2 表单页打开、回显、提交与重置的细节表单页在若依体系里通常不是独立路由而是在列表页里以弹窗形式打开。表单组件的基本思路是新增时清空表单编辑时把行数据塞回表单提交后刷新列表。script setup nameUserFormDemo const formRef ref() const form reactive({ id: undefined, userName: , status: 0 }) const rules { userName: [{ required: true, message: 用户名不能为空, trigger: blur }] } function openForm(row) { form.id undefined form.userName resetForm(formRef) if (row) { form.id row.id form.userName row.userName } } function submitForm() { formRef.value.validate(valid { if (valid) { // 新增与更新共用一个接口由后端 id 判断 addOrUpdate(form).then(() { getList() }) } }) } /script template el-form refformRef :modelform :rulesrules el-form-item label用户名 propuserName el-input v-modelform.userName / /el-form-item /el-form /templateresetForm(formRef)是若依封装的一个工具函数作用是把表单重置到数据初始状态。注意它不是清空而是把form里已有的字段恢复为初始值如果你给form新增了字段但没赋初始值重置后该字段可能变成 undefined。编辑回显的写法是先把row里的字段拷贝到form再提交不要用Object.assign(form, row)一把梭因为row里通常包含createTime、updateTime这类提交时不该带上的字段。4.3 权限指令的边界v-hasPermi 与 v-hasRole若依vue3前端页面框架里最显眼的权限能力是行内指令v-hasPermi按钮级显隐靠它控制。它的判断逻辑很简单登录接口返回的permissions数组里是否包含指令传入的权限字符串。在模板里这样用el-button v-hasPermi[system:user:add] typeprimary新增用户/el-button el-button v-hasRole[admin] typeprimary管理员专属操作/el-button使用边界要清楚。第一v-hasPermi只做前端显隐不能作为安全管理边界接口依然要按角色和权限做后端校验。第二传入的是数组数组里是或的关系满足一个就显示如果需要“同时拥有两个权限”才显示要自己扩展指令逻辑。第三权限字符串必须与后端菜单配置的 perms 完全一致大小写、分隔符都不能错。排错方法是在浏览器里打印usePermissionStore().permissions看当前用户实际拿到了哪些权限字符串。5. 若依vue3前端页面框架避坑与排查五个真实现场5.1 路由切换后表格不刷新数据是旧的现象从别的菜单切回列表页查询条件和表格数据还是离开时的状态看起来像是卡住了。原因后端菜单配置里isCache为 1开启缓存页面组件被 keep-alive 缓存组件onMounted只在首次进入时执行。解决优先把该菜单配置改为isCache不缓存如果你确实需要缓存页面数据把数据获取逻辑从onMounted挪到路由onActivated里这样每次激活都会重新拉列表。5.2 字典字段显示成状态码页面里全是 1 和 2现象表格里“状态”列显示1、2下拉框里显示0、1而不是“正常”“停用”这类中文标签。原因模板里直接用row.status渲染没有经过字典翻译。若依vue3前端页面框架里字典数据要通过useDict加载并解析。解决在列表页或表单页引入const { sys_normal_disable } useDict(sys_normal_disable)模板里用dict-tag组件或遍历sys_normal_disable的 options 数组找到对应 label 显示。注意useDict返回的对象在模板里直接通过sys_normal_disable访问它的.options。5.3 改了 vite 代理不生效请求还是打到旧地址现象后端端口换了vite.config.js里 target 改了但前端报错仍然指向旧端口。原因Vite 配置变更后没有重启 dev server或者.env.development里的VITE_APP_BASE_API前缀与 proxy 配置里的前缀不一致。解决改完 vite.config.js 必须重启npm run dev让配置重新加载然后检查.env.development中VITE_APP_BASE_API/dev-api与vite.config.js中 proxy 的 key 是否一致。浏览器 Network 面板里看到请求路径是/dev-api/system/user/list说明代理生效如果看到的是完整 URL 或/system/user/list说明代理根本没匹配上。5.4 项目 build 后刷新页面变成 404现象本地 dev 模式一切正常部署到服务器刷新子路由页面出现 404首页能进。原因开发环境 Vite dev server 对 history 路由做了 fallback但生产环境没有服务端配合子路由的路径服务器上不存在对应文件自然 404。解决如果生产环境用的是 Nginx把try_files $uri $uri/ /index.html配上让所有路径都归到入口文件如果不打算动服务端配置把路由模式切成 hash。注意 hash 模式会改变 URL 形态若依里的菜单跳转逻辑通常不受影响但要同步检查是否有代码依赖route.path做判断。5.5 v-hasPermi 指令完全不生效按钮全部显示现象用户显然没有某个权限但绑了v-hasPermi的按钮照样显示。原因这种问题大概率在三个地方后端菜单里没配置该项权限标识当前角色没有绑定该菜单登录接口返回的permissions里没有对应字符串但指令依赖的 store 初始化时机早于登录态返回。解决先看登录接口的响应确认permissions数组里有目标权限字符串再查后端菜单表确认该按钮权限标识挂在了正确的菜单节点上最后检查角色分配。若依框架里permissions的获取通常在登录后由getInfo接口统一返回前端 store 必须等待这个接口完成后再渲染页面否则指令拿到的是空数组。6. 进阶改造把若依vue3前端页面的“长相”调成团队自己的规范6.1 全局主题变量改一处所有页面跟着变若依vue3前端页面框架的主题不只是换色。Element Plus 的组件样式和框架自定义的布局样式都沉淀在一组变量里。改主题的核心入口是src/assets/styles/variables.scss和src/layout下的样式文件。常见做法是把品牌色抽成一个 SCSS 变量再通过覆盖 Element Plus 的 CSS 变量让组件跟随主题。// variables.scss $primary-color: #409eff; // 覆盖 Element Plus 主题变量 :root { --el-color-primary: #{$primary-color}; }颜色变量改完整个框架里的按钮、标签、导航高亮都会跟着变。这里有个习惯建议不要直接在组件里写死颜色把颜色资源收敛到这几个全局文件里后面做深色模式或换肤才不痛苦。若依vue3前端页面框架目前对深色模式的支持依赖 Element Plus 的 dark 样式和布局自身的类名设计接进来之前先确认你采用的版本里暗色变量是否完整。6.2 二次开发时值得养成的目录演进习惯长期在若依vue3前端页面框架上做业务你会发现默认的src/views会因业务模块膨胀变得难维护。我一般会做两件事第一把公共业务组件从页面里抽出来放到src/components下按业务域分文件夹第二把重复的权限判断封装成可复用的指令或函数。比如列表页的导出按钮权限可以写成自定义指令接收一个权限数组统一处理无权限时置灰而不是隐藏——置灰比隐藏更符合内部系统交互习惯。A同学踩过的最深的坑是直接改框架核心文件比如动src/utils/request.js里的响应拦截逻辑、改permissionstore 里的路由生成流程。这些文件承载了框架的全局约定改一处影响整个系统。正确做法是新增能力放在扩展文件里尽量不动核心逻辑。我自己每回接手若依vue3前端页面框架的新项目都会先花半小时做一件事登录后打开浏览器控制台手动执行一次路由表和权限数组的打印。确认菜单怎么来、权限怎么分配、页面组件怎么对接比第一天上手就写业务代码要省几倍的时间。如果这篇文章能在你联调时少走一段弯路那它就有价值。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

嵌入式视觉系统中MT9M001C到LCD的端到端时序设计

嵌入式视觉系统中MT9M001C到LCD的端到端时序设计

简介:本资源是面向FPGA初学者与嵌入式图像处理学习者的实战项目,聚焦于MT9M001 CMOS图像传感器的驱动与实时显示实现,适用于基于Altera/Intel FPGA平台的开发板验证与课程实验。项目完整呈现了从传感器数据采集、FPGA逻辑控制(含时…

2026/10/13 20:09:06 阅读更多 →
PS5全机型优化指南:从版本识别、M.2扩展到HDMI 2.1设置与故障排查

PS5全机型优化指南:从版本识别、M.2扩展到HDMI 2.1设置与故障排查

如果你手头有一台 PS5,或者正打算入手,不管是初版、轻薄版还是 Pro 版,这篇文章都是给你准备的。我写这个东西的起因很简单:群里隔三差五就有人问"我这个 PS5 为什么风扇声音这么大""到底要不要上 Pro""…

2026/10/13 20:09:06 阅读更多 →
STM32跑马灯实验详解:从时钟配置到GPIO驱动与工程下载

STM32跑马灯实验详解:从时钟配置到GPIO驱动与工程下载

简介:这份资源是面向嵌入式初学者与STM32入门者的跑马灯实验例程包,围绕GPIO输出控制这一核心知识点,帮助读者快速上手STM32微控制器的基本开发流程。资源以ALIENTEK MINISTM32开发板为硬件平台,配套完整工程代码与详细注释&#…

2026/10/13 20:09:06 阅读更多 →

最新新闻

鸽哒IM源码:生产级私有化即时通讯系统解析

鸽哒IM源码:生产级私有化即时通讯系统解析

简介:这是一套完整的跨平台即时通讯(IM)系统源码,面向中高级Java/Android/iOS开发者及全栈工程师,用于学习和搭建企业级实时通信服务。资源涵盖Web(WebSocketHTML5)、Android(JavaFC…

2026/10/13 21:08:58 阅读更多 →
Python+React低代码平台:元数据驱动的业务系统快速构建方案

Python+React低代码平台:元数据驱动的业务系统快速构建方案

简介:这是一套面向全栈开发初学者与低代码实践者的前后端一体化低代码平台学习资源,聚焦React前端框架与Python后端框架的协同开发模式,帮助非专业开发者快速构建可运行的Web应用,降低传统编码门槛。资源共229个文件,涵…

2026/10/13 21:08:58 阅读更多 →
2020数学建模B题沙漠穿越:Matlab动态规划与剪枝实战解析

2020数学建模B题沙漠穿越:Matlab动态规划与剪枝实战解析

简介:面向备战2020年数学建模B题的参赛者,完整Matlab源代码覆盖四关求解流程,从第一关基础路径规划到第四关随机天气下的最优策略,涉及距离矩阵处理、单目标优化、动态规划、数学期望与随机分布建模等方法。第二关重点解决双地图与…

2026/10/13 21:08:58 阅读更多 →
CEF4Delphi 控件:Delphi 与 JavaScript 双向通信及避坑指南

CEF4Delphi 控件:Delphi 与 JavaScript 双向通信及避坑指南

简介:CEF4Delphi控件是一套面向Delphi开发者的Chromium谷歌内核浏览器集成方案,适合需要在桌面程序中嵌入现代网页渲染能力的开发者,覆盖从Delphi 7到Delphi 10.2的多个版本,作者已亲自测试调试安装正常。资源包共462个文件&#…

2026/10/13 21:08:58 阅读更多 →
数据库大作业图书销售系统:核心是约束设计而不是页面数量

数据库大作业图书销售系统:核心是约束设计而不是页面数量

简介:面向数据库课程大作业的图书销售管理系统数据库设计文档,完整覆盖从问题描述、需求分析、概念模型设计、逻辑模型设计到建立数据库、录入数据及数据库操作的全过程,并配有全局与局部ER图、表结构、外键关系说明,以及实施中遇…

2026/10/13 21:08:58 阅读更多 →
Java 8 Stream 实战指南:从传统循环到声明式流水线

Java 8 Stream 实战指南:从传统循环到声明式流水线

如果你写过几年 Java 业务代码,大概率见过这类场景:一个方法里塞了三四个 for 循环,循环里面套 if,if 里面再往 List 或 Map 里 put 数据,看完要花好几分钟才理清楚这段逻辑到底在干嘛。这种代码不能说错,但…

2026/10/13 21:07:57 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/12 18:11:17 阅读更多 →