Vue中v-for与v-if同用的陷阱、性能影响与最佳实践
做 Vue 开发这些年几乎每次 code review 都能看到有人把v-for和v-if写在同一个元素上然后一脸无辜地说“我就是想过滤一下列表啊。”这个写法在功能上经常能跑通但它本质上属于拿高射炮打蚊子浪费性能不说还容易踩到 Vue 2 和 Vue 3 完全不同的优先级坑。在 Vue 里v-for负责列表渲染v-if负责条件判断官方文档早就提醒过永远不要把v-if和v-for同时用在同一个元素上。但为什么不能底层到底是怎么处理的性能损耗具体差多少Vue 3 把优先级反转之后又引入了哪些新问题这篇文章一次性讲透顺便给出我在实际项目中用的替代写法和排查思路。1. 为什么说这是“经典之坑”优先级导致的渲染陷阱1.1 Vue 2 的编译顺序v-for 先行要理解这个坑得先从 Vue 2 的模板编译源码说起。Vue 2 在把模板字符串编译成 render 函数时会先经过解析器parser生成 AST再通过 codegen 生成最终的渲染代码。在解析阶段v-for和v-if都会被记录到 AST 节点的属性上但在 codegen 的genElement函数里处理顺序是写死的先处理el.for再处理el.if。简单来说Vue 2 遇到li v-foritem in items v-ifcondition这种写法时生成的 render 代码结构类似于_l(items, function (item) { return condition ? _c(li, ...) : _e() })其中_l是渲染列表的辅助函数_c是创建元素 VNode_e是创建空 VNode注释节点。也就是说v-for会先循环整个数组然后在每一轮循环里单独执行一次v-if判断。判断通过就创建真实节点判断不通过就创建一个注释节点占位。这个顺序带来的直接后果就是如果你有 10000 条数据但符合条件只有 5 条Vue 2 仍然会老老实实遍历 10000 次创建约 10000 个 VNode其中有 9995 个最后被丢弃然后再进入 diff 和 patch 阶段。这还只是初次渲染如果是响应式数据更新触发的重渲染整个过程会再走一遍。我当时第一次看源码时心里就咯噔一下这哪里是“建议不要一起用”这分明是性能黑洞。后面我会专门算一笔账这里先记住一个结论在 Vue 2 中v-for 的优先级高于 v-ifv-if 会在每个循环项上重复执行。1.2 Vue 3 的优先级反转v-if 先行Vue 3 重写了编译器把整个编译流程从 AST 解析 codegen 换成了基于插件的 transform 架构。在这个架构里v-for和v-if两个指令的 transform 插件执行顺序发生了变化v-if的 transform 会先于v-for执行。官方文档对这件事有过明确说明Vue 3 中v-if的优先级比v-for高。也就是说当你写成li v-foritem in items v-ifcondition时Vue 3 会先判断condition再决定是否执行循环。等于生成的结构从 Vue 2 的“循环内部嵌套条件”变成了“条件包裹整个循环”。这个变化从纯性能角度看其实是进步如果condition为 false循环根本不会启动不会有创建一堆 VNode 再丢弃的问题。但它埋了一个更隐蔽的雷如果v-if的条件里访问了v-for的迭代变量比如item那么在v-if执行时item还不存在直接报错。我在项目里从 Vue 2 升级到 Vue 3 时就碰过这个错误。控制台报的是Property item was accessed during render but is not defined对应到模板代码就是你在v-if里写了item.isActive这种表达式。排查半天才反应过来优先级变了变量的作用域也变了。1.3 两种优先级带来的实际差异对比为了方便理解我把 Vue 2 和 Vue 3 的行为差异整理成了表格。这个表格也是我面试时喜欢给候选人讲的能讲清楚这两行的差异说明你对 Vue 编译机制真的有认识而不只是背过“不要一起用”的结论。对比维度Vue 2Vue 3指令优先级v-for 优先v-if 优先渲染结构循环内部嵌套条件判断条件包裹整个循环条件为 false 时仍会遍历整个数组并创建 VNode循环不会执行条件访问迭代变量可以正常访问 item直接报 item is not defined典型性能风险大量无效 VNode 创建和 diff语法层面直接拦截错误现在你应该能理解为什么“同一个写法”在不同版本里表现完全不一样了。Vue 2 的问题是浪费性能Vue 3 的问题是写错直接报错。无论哪个版本官方都不建议这种写法自然是有道理的。2. 性能损耗到底有多大从渲染机制算一笔账2.1 v-for 先行的三重开销很多初学者觉得“反正数据量不大无所谓”但性能问题的核心不在于“当前数据量”而在于“这个写法放大了成本结构”。在 Vue 2 中v-for与v-if同元素使用至少会产生三重开销。第一重是循环判断开销。数组有多少项v-if就要执行多少次。哪怕条件跟item完全无关比如v-ifshowList它也会在每一轮循环里重复判断同一个布尔值。这属于无意义的重复计算。第二重是 VNode 创建与销毁开销。_l必须为每个数组项生成一个 VNode即使条件不满足也要先创建一个空 VNode 占位。VNode 是 JavaScript 对象创建它需要分配内存、设置属性、建立父子关系这些成本在数据量上来后会非常明显。第三重是 diff 与 patch 开销。Vue 的虚拟 DOM 更新不是只把新 VNode 渲染出来就行它需要和旧 VNode 做对比找到差异再更新真实 DOM。你创建了 10000 个新 VNode就要拿 10000 个和旧的对比哪怕最后只渲染 5 个对比的成本一点都不会少。这三重开销叠加起来才是真正的性能杀手。很多人只盯着“循环次数”看忽略了 VNode 创建和 diff 的成本其实后面两重往往更致命。2.2 一次真实的渲染开销测算我拿一个实际场景来算账。假设有一个商品列表接口返回 10000 条商品数据页面上只需要展示“有库存且上架”的商品算下来符合条件的可能只有 5 条。用错误写法时Vue 2 会执行 10000 次循环创建约 10000 个 VNode然后逐个判断库存和上架状态最后保留 5 个真实节点生成 9995 个注释节点。用computed先过滤的写法则完全不一样。computed内部对 10000 条数据做一次 filter得到 5 条结果然后v-for只循环这 5 条创建 5 个 VNode。整个渲染链路从“万级操作”直接降到“个位级操作”。你可能觉得 10000 条数据在现代浏览器里也不过几十毫秒的事但别忘了两点。第一移动端设备的性能远不如桌面端列表页又往往伴随着图片解码、滚动监听、事件绑定每一毫秒都很宝贵。第二用户的交互不只是初渲染每次数据更新比如下拉刷新、分页加载、搜索过滤都会把这条链路的成本重新走一遍。一个搜索框每敲一个字符列表就白跑一遍万级循环很快就卡了。我自己在项目里做过对比测试同样 10000 条数据只渲染条件匹配的几条错误写法在低端 Android 设备上初次渲染耗时大约是computed方案的 8 到 10 倍而且滚动时能明显感觉到卡顿。这个数据当然和你跑的设备、数据复杂度有关但趋势是非常明确的。2.3 容易被忽略的可读性与维护性成本性能损耗是显性的坑可读性问题则是隐性的。v-for和v-if写在一起时阅读代码的人必须自己在脑子里拆解优先级逻辑是先循环还是先判断条件里用的是不是迭代变量这个列表到底在什么条件下显示这些疑问会让模板的可读性大打折扣。更麻烦的是这种写法很容易被复制。团队里只要有一个人这么写了后面的人看到“哦原来可以这么过滤”就会跟着写。等代码量上去了你想要重构就得逐个模板去分析v-for和v-if的实际意图成本很高。我处理过一个真实案例某个列表页在 Vue 2 里用v-foritem in list v-ifitem.type 1做了 8 个月一直“正常”直到需求变成“列表里有 5 个类型每个类型要有不同的操作按钮”然后问题全冒出来了——渲染性能下降、按钮逻辑混乱、组件维护者根本分不清哪些节点是真实渲染的。最后重构时把过滤逻辑全部收进computed代码行数反而少了逻辑也清晰很多。3. 正确替代方案三种写法与选型思路3.1 首选方案用 computed 先过滤再渲染官方文档推荐的第一种替代方案就是把过滤逻辑从模板里抽出来放进computed计算属性。这么做的好处很明显computed有缓存只有依赖的响应式数据变化时才会重新计算模板里只剩一个干净的v-for。以商品列表为例错误写法是li v-forproduct in products v-ifproduct.stock 0 :keyproduct.id {{ product.name }} /li正确的做法是script setup import { computed } from vue const props defineProps({ products: { type: Array, required: true } }) const availableProducts computed(() props.products.filter(product product.stock 0) ) /script template ul li v-forproduct in availableProducts :keyproduct.id {{ product.name }} /li /ul /template注意我在过滤时用了stock 0而不是stock因为后端返回的库存字段有可能是0、负数或者null不同的数据结构需要不同的判断条件这也是一个容易踩的小坑。如果你还要配合分页、搜索、排序那更要把过滤逻辑统一放computed互相组合保持模板干净。比如需要展示前 3 个符合条件的商品const visibleProducts computed(() props.products .filter(product product.stock 0) .slice(0, 3) )这种写法一眼就能看明白意图性能上也远优于在模板里处理。3.2 用 template 或外层元素隔离 v-if有些场景下v-if判断的是“整个列表要不要显示”而不是“列表里每一项要不要显示”。这时你不需要过滤数组只需要在循环外面包一层判断。最优雅的写法是用template标签它不会渲染多余的 DOM 节点template v-ifshouldShowList ul li v-forproduct in products :keyproduct.id {{ product.name }} /li /ul /template这个方案适用于类似“管理员才能看到这个列表”“切换 tab 后才显示对应列表”的业务逻辑。把v-if从列表项挪到外层容器后v-for内部就不需要做任何多余的判断了。有些开发者为了省事会直接在v-for的同一元素上写v-ifshouldShowList然后告诉我“反正条件不依赖 item”。但就算性能上在 Vue 3 里可接受这种写法的语义仍然混乱ESLint 插件也会报警告后面我会详细讲。我自己的习惯是只要涉及“整个列表显示与否”一律用外层template包一层。3.3 v-show 能不能救场边界情况分析有人会问既然v-if的问题在于销毁和创建成本那我用v-show行不行v-show只是切换 CSS 的display属性元素始终存在确实不会有创建和销毁的开销。但这里要分清楚场景。v-show适合的场景是“频繁切换显示状态、且列表数据不变”。比如一个折叠面板展开显示列表收起隐藏列表这种场景用v-show非常合适因为列表始终在内存里只是切换样式。但如果你用v-show来解决“过滤列表项”的问题就完全跑偏了v-show隐藏的是整个元素无法做到“只显示数组中符合条件的项”。你总不能在v-for里对每个li再写一个v-show来判断是否显示吧那依然要在循环里做判断性能和可读性问题照样存在。还有一个边界情况想说一下如果列表需要频繁切换状态但数据本身不需要重新拉取你可以用“外层v-if 内部v-show”的组合。外层v-if控制容器是否挂载内部v-show控制具体交互的展开收起。这种组合在复杂业务组件里很常见但不要指望v-show能替代过滤逻辑。3.4 实在要一起用怎么把风险降到最低说了这么多肯定还是有人会说“我就要一起用行不行”。我的回答是在某些极窄的边界条件下确实可以但最好不要而且你要清楚风险在哪。比如在 Vue 3 中如果你的v-if条件完全不依赖v-for的迭代变量从性能角度来说v-if先执行还能避免多余的循环。但问题是这种写法在团队协作中属于“一眼可疑”的代码任何一个不熟悉 Vue 3 优先级的人接手都会先怀疑你是不是写错了。为了这种可有可无的“性能微优化”去牺牲可读性和确定性完全不值得。另外一个相对安全的妥协方案是如果条件真的和item无关把v-if放到v-for的外层template上一样能达到“条件不满足就不循环”的目的而且语义更清晰。这也是我在老项目里做最小改动时常采用的方案。4. Vue 3 下的新坑与官方态度4.1 编译报错item is not defined前面提到过Vue 3 中v-if优先级高导致条件里访问item会报错。这里我贴一个典型错误代码和报错信息方便大家对照排查。!-- 这段代码在 Vue 3 中会直接编译/渲染报错 -- li v-forproduct in products v-ifproduct.stock 0 :keyproduct.id {{ product.name }} /li控制台会出现类似下面这样的信息Property product was accessed during render but is not defined.原因就是v-if先执行时迭代变量product还没有被v-for创建出来。你可能会想那我写成v-ifproducts.length 0总行了吧这确实能避免报错因为products是组件的数据不是迭代变量。但这种写法仍然不推荐理由前面已经说过循环内部的每一项都重复判断同一个表达式怎么想都很别扭。4.2 官方风格指南从“永远不要”到“几乎永远不要”Vue 官方风格指南里有一节专门讲这个问题标题就是“永远不要把 v-if 和 v-for 同时用在同一个元素上”。在 Vue 2 的文档里措辞是“绝对不要”在 Vue 3 的文档里描述变成了“永远不要”同时列出了两个典型的错误场景过滤列表项、避免渲染本应隐藏的列表。官方的态度其实很明确这不是“性能优化建议”而是“代码规范红线”。就算你的数据量很小、跑不出性能差异也不要这么写因为它在语义上就是有歧义的。如果你在面试中回答“数据量小的时候可以用”面试官大概率会追问你“那多小算小谁保证数据量永远不涨”这种问题没有标准答案但最好的回答就是“无论数据量大小我都不用因为官方不建议而且有更好的替代方案”。我在团队里定的规矩就是模板里永远不允许出现v-for和v-if在同一个元素上的写法没有例外。这样新人入门成本低代码 review 也不用每次解释一遍。4.3 用 ESLint 把规则固化进团队规范光靠口头约定人总是会忘的。最好的办法是把规则写进代码检查工具让机器帮你在提交代码之前拦截。ESLint 的eslint-plugin-vue插件里就有一条规则vue/no-use-v-if-with-v-for专门检查这种写法。推荐配置如下// .eslintrc.js module.exports { rules: { vue/no-use-v-if-with-v-for: error } }配置成error之后只要有人把v-for和v-if写在同一个元素上ESLint 就会直接报错从源头拦住问题。这条规则还支持allowUsingIterationVar选项默认是false。如果你把它设为true插件会放行那些“在v-if中使用了迭代变量”的写法但我不建议这么干等于把规则废掉了一半。除了 ESLint我还会在 code review 的 checklist 里固定加一条“检查所有v-for确认同一元素上没有v-if”。这个习惯坚持了一年多之后团队新写的代码里基本就见不到这种写法了。5. 常见问题与排查技巧实录5.1 列表空白但数据明明存在我排查过很多次“列表不渲染”的 bug其中有不少就是v-for和v-if的优先级问题导致的。典型表现是接口返回了数据打印数组也有内容但页面上什么都不显示。在 Vue 2 中如果你写了v-foritem in list v-ifitem.visible而list里所有项的visible都是false那么渲染结果是一堆注释节点视觉上就是空白。很多同学第一反应是接口问题反复检查数据源却忽略了自己模板里的条件逻辑。排查方法很简单先在浏览器地址栏的 Vue Devtools 里看当前组件的渲染结果。如果发现渲染节点数量异常比如全是空白注释节点再检查模板里的v-if条件。更直接的办法是临时把v-if删掉看列表能不能显示出来。能显示就说明问题在条件逻辑上。5.2 过滤逻辑“失效”所有数据都出来了这个问题的典型场景是在 Vue 3 中。你把v-for和v-if写在一起本意是“只显示符合条件的项”结果页面把所有数据都显示出来了。原因还是优先级Vue 3 里v-if先执行如果它不依赖item通常不会报错但执行结果是把整个循环包裹起来了——并不是“对每一项做过滤”而是“是否执行整个循环”。举个例子li v-forproduct in products v-ifproduct.stock 0 :keyproduct.id {{ product.name }} /li在 Vue 3 中这段代码直接报错因为product未定义但如果条件换成v-ifproducts.length 0它只会判断一次数组长度长度大于 0 就把整个列表全部渲染出来根本没有过滤效果。很多人以为自己在过滤实际上只是判断了“数组非空”于是看到的效果就是“所有数据都出来了”。这还是相对好的情况因为至少不报错。遇到这种问题第一反应不是去调后端而是把代码里v-if的表达式和优先级逻辑梳理清楚。如果本意是过滤立刻改成computed。5.3 解决思路一套排查动作走天下我把处理这类问题的排查动作沉淀成了一套四步流程分享给大家参考。第一步确认当前项目是 Vue 2 还是 Vue 3两条优先级路径完全不同。第二步看v-if的条件表达式里有没有出现v-for的迭代变量。第三步判断业务意图是要过滤列表项还是控制整个列表的显示状态。第四步根据意图选择替代方案过滤用computed整体显示用外层template。这套流程基本覆盖了我在实际工作中遇到的所有相关场景。可能在步骤三里你还需要和产品经理确认一下意图但作为前端工程师从代码角度你已经有足够的依据去判断应该怎么写。5.4 调试小技巧与最终检查清单最后分享几个调试小技巧。一个是利用 Vue Devtools在组件树里展开当前组件看渲染出来的节点数量和你预期的是否一致。如果发现节点数量异常多比如全是注释节点优先怀疑模板里条件写错了。另一个技巧是在模板里临时写一个“条件翻转”的调试语句。比如你怀疑v-if条件不对可以临时改成v-if!item.visible看列表是否会反过来显示。这么做的目的不是改代码而是确认条件本身是否正确。还有一个习惯每次写完模板我都会在本地跑一遍 ESLint对于列表渲染这类逻辑还会顺手加一个简单的单测或者 print 一下过滤后的数组长度确认数据层面的结果符合预期。如果连过滤后的数组长度都不对那渲染结果肯定不对这时候就去查computed和接口数据别盯着模板瞎猜。根据我个人做 Vue 项目这么多年的体会这个问题的本质不是在讨论“一行模板该怎么写”而是在考察你对框架渲染机制的理解深度。你能不能在大多数人都踩过坑的地方一眼看出问题并给出更优的方案这才是面试官和团队最看重的。我现在带团队时遇到新人写这种代码通常不是直接告诉他“不能这么写”而是先让他把编译后的 render 函数打印出来看一眼看完他自己就明白了。这种自驱式的理解比记住任何结论都牢固。以后你在 Vue 项目里再看到v-for和v-if同框时不用急着改先想清楚背后的优先级别和业务意图再动手也不迟。

相关新闻

AI测试用例生成实战:规则与LLM结合的需求文档自动化解析

AI测试用例生成实战:规则与LLM结合的需求文档自动化解析

简介:这是一款面向测试人员、产品经理及业务分析人员的 Windows 桌面工具,用于将 PRD、自然语言需求、Office/PDF 文档及图片需求自动转换为结构化功能测试用例。工具支持 DeepSeek、豆包、千问、智谱 GLM 及 OpenAI 兼容接口,内置本地 OCR、…

2026/10/10 9:55:22 阅读更多 →
MCP协议:用N+M连接替代N×M,解决分布式系统连接爆炸

MCP协议:用N+M连接替代N×M,解决分布式系统连接爆炸

1. 项目概述:一个被低估的通信架构优化思路“19_MCP Server:把 NM 变成 NM”——这个标题乍看像一道数学题,实则直击分布式系统中一个长期存在却少被正视的痛点:连接爆炸(Connection Explosion)。我在某高校…

2026/10/11 10:44:36 阅读更多 →
多Agent系统中技能复用与治理的工程实践

多Agent系统中技能复用与治理的工程实践

1. 为什么一个 skill 要存三份?——多 agent 场景下被忽视的“技能所有权”困境你写好了一个能调用天气 API 并结构化返回结果的 Python 函数,起名叫get_weather_by_city。它逻辑清晰、有单元测试、文档完整,你把它放进项目utils/skills/目录…

2026/10/11 12:55:48 阅读更多 →

最新新闻

进程地址空间深度剖析:虚拟地址转换、堆栈增长与内存问题定位

进程地址空间深度剖析:虚拟地址转换、堆栈增长与内存问题定位

写进程地址空间第一篇文章的时候,我把虚拟内存的整体框架拆开讲了一遍:从代码段到栈,从堆到内存映射段,把一张内存布局图硬生生画了半小时。文章发出后,有同学私信问我:既然地址空间只是个“虚拟”的概念&a…

2026/10/11 14:45:43 阅读更多 →
Excel多表合并三大方案:Power Query/VBA/Python实战指南

Excel多表合并三大方案:Power Query/VBA/Python实战指南

简介:本资源是一份面向Excel初学者与办公人员的实用VBA自动化教程,聚焦解决多工作表批量合并这一高频痛点问题。文档详细讲解了如何通过一段可直接运行的VBA代码,将多个结构一致的Excel工作簿(如各部门销售表、各门店日报等&#…

2026/10/11 14:45:43 阅读更多 →
Python协同过滤旅游推荐系统:从矩阵构建到线上验证的完整文档指南

Python协同过滤旅游推荐系统:从矩阵构建到线上验证的完整文档指南

简介:这份文档面向计算机相关专业学生与旅游推荐系统开发者,围绕“信息过载”下如何满足用户个性化出行需求展开,可作为毕业设计、课程设计或推荐算法入门项目的参考模板。压缩包内仅含1个docx文件,约8.64MB,内容为完整…

2026/10/11 14:45:43 阅读更多 →
深度学习100道选择题:知识图谱的压力测试仪

深度学习100道选择题:知识图谱的压力测试仪

简介:本资源是一套系统性的深度学习基础理论自测题集,面向人工智能初学者、高校学生及备考求职者,旨在帮助读者快速检验监督学习、无监督学习、模型评估、正则化、降维、目标检测等核心概念的掌握程度。题库共100道高质量单选题,覆…

2026/10/11 14:45:43 阅读更多 →
DSSS抗窄带干扰MATLAB仿真:从扩频增益到频域置零与半解析BER

DSSS抗窄带干扰MATLAB仿真:从扩频增益到频域置零与半解析BER

简介:这是一份面向无线通信学习者与MATLAB仿真实践者的DSSS扩频通信抗窄带干扰仿真代码包,聚焦直接序列扩频系统在窄带干扰环境下的建模与性能分析,适合通信工程、电子信息类专业学生及需要理解扩频抗干扰机制的开发者参考。包内共3个文件&am…

2026/10/11 14:45:43 阅读更多 →
单链表基础三题详解:删除节点、反转链表与找中间节点

单链表基础三题详解:删除节点、反转链表与找中间节点

链表这块内容,大学里第一次接触的时候觉得简单,无非是节点加指针。可真到动手写题的时候,删除节点能删丢一半,反转链表能绕成环,找中间节点还会因为奇偶数量吵半天。单链表综合练习里的“删除指定值节点”“反转链表”…

2026/10/11 14:44:43 阅读更多 →

日新闻

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

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

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

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

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

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

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

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

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

2026/10/11 0:00:27 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 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/11 10:45:37 阅读更多 →
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/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练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/11 14:36:54 阅读更多 →