- 博客(236)
- 收藏
- 关注
原创 两次 nextTick ≠ 一次 setTimeout
nextTick 是事件循环的"VIP插队通道",而 setTimeout 是"普通候车区"——前者追求极致即时性,后者保证公平排队。99%的场景下,一次await就够了,滥用 nextTick 是性能灾难。
2025-11-20 14:46:24
1125
原创 Memory MCP(记忆服务器)
Memory MCP 是 Cursor 的本地「代码备忘录」插件:安装后说一句「记住」,它就把函数、TODO、踩坑等文本存到本地磁盘;下次打开项目,一句「继续/召回」就能把这些内容原样送回 AI,实现跨会话、离线、可备份的「续写」。
2025-11-07 17:08:30
964
原创 Vue + TSX 中使用 class 报错 解决方法
讲述如何在 Vue + TSX 项目中,通过编写类型声明文件,无需修改业务代码,解决 class 属性在 TypeScript 中的类型报错问题。
2025-10-30 20:21:06
992
原创 再也不用调样式!ElTabs stretch 让标签页自动对齐
给 <el-tabs> 加 stretch,一行代码让全部 Tab 等宽撑满父级,不用计算百分比!
2025-10-18 18:46:12
281
原创 npm install --legacy-peer-deps:它到底做了什么,什么时候该用?
--legacy-peer-deps 是 npm 的安装参数,用来忽略 peerDependencies 的版本冲突检查,按照旧版 npm(v6)的方式直接安装所有依赖,让项目“先能装上再说”。
2025-10-09 20:09:40
977
原创 CSS field-sizing 让表单「活」起来
field-sizing:content 让输入框、下拉框、文本域随内容实时伸缩,一行 CSS 省掉所有 JS 自动扩容脚本。
2025-10-02 18:45:02
972
原创 可选链 ?. 到底保护了谁?
可选链操作符 ?. 是个实用工具,但它不能替代所有校验逻辑。理解它的底层原理(只拦截 null/undefined ),清楚它的 “职责边界” ,才能避免误用。
2025-09-25 13:39:00
882
原创 TypeScript 枚举解析:const enum、enum 与 as const
一个常见的问题:const enum、enum 与 as const 在编译、输出、运行等方面有什么差异?
2025-09-19 17:17:48
931
原创 Android 系统上 PDF 模糊问题处理
Android 上 PDF 模糊与滚动不到底的核心是 渲染像素与 viewport 不匹配 + 移动端视口/scroll 行为差异。只要把 pdf.js 的 viewport 与 canvas 的物理像素对齐、把滚动权交给合适的 wrapper 并处理 DPR 与缩放逻辑,就能稳妥解决问题。
2025-09-11 19:56:08
621
原创 Element Plus ElInput 的 formatter 坑
表单组件的通用模式:parse:将用户输入的字符串解析成数据模型,format:将数据模型转换成显示字符串。
2025-08-12 08:00:00
1049
原创 nvm alias default <version> 失败原因
nvm alias default <version> 是告诉 nvm:“以后每次新开的终端,默认帮我用这个版本”,它本身不立即切换(除非使用 nvm use default),它是存一个指向的别名,有点像给某个版本立了个默认的“名字牌”。
2025-08-01 10:34:11
712
原创 对象变心了怎么办?用 Object.seal 封住它!
Object.seal() 是在 JS 中控制对象结构的重要手段,它不像 freeze() 那么极端,也比 preventExtensions() 更安全。尤其在中大型项目中,为接口、状态、配置对象设置 Seal 能有效减少 bug 与意外行为。
2025-07-31 10:49:05
697
原创 “清空”也是门学问:resetFields 和 clearValidate 到底用谁呢?
resetFields() 用于重置表单数据并清除校验状态,而 clearValidate() 仅清除校验提示不改动数据,两者作用不同,适用于不同的表单交互场景。
2025-07-25 11:12:21
800
原创 Promise.try 究竟解决了什么问题呢?
简单说:Promise.try(fn) 的作用是 —— 用于安全地执行一个函数,无论该函数是同步还是异步,都将其包装为 Promise,并自动捕获其异常。
2025-07-20 16:55:33
1000
1
原创 惰性函数不是懒,是懂得在对的时间做对的事。
惰性函数(Lazy Function)是 JavaScript 中一种经典的性能优化手段,它的核心思想是在函数第一次执行时进行初始化操作,并在初始化完成后,通过重写函数体,让后续的调用直接使用已经初始化好的结果,从而避免不必要的重复判断或处理逻辑。
2025-06-30 14:25:10
950
原创 一次 onVisibleChange 引发的问题:为什么 ElSelect 显示的是 ID 而不是对应的名称?
开发必看!ElSelect 只显示 ID,不显示名称的真正原因和修复思路。
2025-06-23 19:41:17
871
原创 ElSelect 多选远程搜索选项丢失问题
“选第二项导致第一项被清空”的问题,在远程搜索下拉框中很常见,但不是 bug,而是组件机制的设计决定的。
2025-06-20 14:04:11
926
原创 ElSelect 远程搜索太任性?一招让它“听话”保留用户输入!
解决 ElSelect 远程搜索失焦后输入被清空的问题,支持保留并提交用户自定义的非匹配值。
2025-06-17 15:26:08
690
原创 0:0 error Parsing error: Cannot read properties of undefined (reading ‘map‘)
0:0 error Parsing error: Cannot read properties of undefined (reading 'map') 的解决方法
2025-06-11 16:31:03
316
原创 误解了 Promise.then!返回一个 Promise 并不等于立即完成
当 .then 回调中返回一个已完成的 Promise 时,此时会发生什么呢?结果是什么呢?
2025-05-28 10:00:00
966
原创 018 是 18,017 却是 15?别被 JavaScript 的数字骗了!
为何某些数字字面量前面加 0 会被解释成八进制,而某些又不会,本文稍微解释疑惑。
2025-05-24 10:00:00
1094
原创 让代码更优雅的“标签 Label”语法
标签语句是 JavaScript 中少有的结构化控制流工具,主要价值在于简化多层嵌套跳转。标签并不常用,滥用会导致可读性和维护性下降。建议仅在确实需要一次性退出多层循环或实现简单状态机场景下使用。
2025-05-23 13:00:00
990
原创 为什么总写错 this?原来是函数有“二心”
箭头函数并不是用来“取代”普通函数的,而是为了解决原有语法中由于 this 机制不一致而带来的逻辑混乱问题,同时带来语法优化、结构清晰等额外好处。
2025-05-22 08:00:00
964
原创 两次点击居然才触发 remote-method 事件?
在使用 Vue3 + Element Plus 的远程搜索下拉框中,为什么用户要点两次才能触发请求?本文深入剖析了其根本原因:remote-method 只在特定输入时触发,首次点击下拉不会执行搜索。
2025-05-21 08:30:00
1203
原创 JS 中到底存不存在“引用传递”?
JavaScript 中不存在“引用传递”这一概念,只有“按值传递”,但对于引用类型,传的是“引用的值”——也就是一个指向对象的指针副本(JS 相关面试题之一)。
2025-05-20 08:30:00
1540
原创 void 0,到底在保护什么?
void 0 是比 undefined 更安全、更可靠的获取 undefined 值的方式。因为 undefined 虽然是全局变量,但在旧环境中可能被覆盖,而 void 0 每次都直接返回真正的 undefined。
2025-05-19 08:00:00
1054
原创 令人抓狂的 JS 赋值顺序!
本文简述 JavaScript 中的连续赋值操作,尤其是针对表达式 a.x = a = { n: 2 }; 的行为进行详细拆解,这一现象揭示了 JS 表达式求值中的先引用捕获,再右值计算,最后执行赋值的关键逻辑。
2025-05-16 08:30:00
1088
原创 那天,我在一个字符串里发现了幽灵
零宽字符是什么呢?一个看不见却真实存在的特殊字符,常用于控制文本格式或隐形标记,但也容易引发排查困难的“幽灵”问题。
2025-05-15 08:30:00
1286
原创 JavaScript 中浮点数精度问题导致显示异常,解决方案解析
JavaScript 使用的是 IEEE 754 浮点数标准,很多小数无法精确表示,导致计算时出现精度误差 —— 可通过 toFixed、Math.round 等方式解决。
2025-05-14 08:00:00
963
原创 从 Set、Map 到 WeakSet、WeakMap 的进阶之旅
Set 和 Map 是可遍历的强引用集合,分别用于存储唯一值和键值对,而 WeakSet 和 WeakMap 是不可遍历的弱引用集合,仅接受对象作为键或值,适用于避免内存泄漏。
2025-05-13 11:15:28
1421
原创 Vue 组件行为失控?inheritAttrs 可能是罪魁祸首!
一句话概括:inheritAttrs 是 Vue 组件中的一个配置项,用于控制非 prop 的 attribute 是否自动绑定到组件根元素上,默认启用,设置为 false 后需手动通过 $attrs 显式绑定到指定元素。
2025-05-12 16:53:32
1220
原创 flex 还是 inline-flex?实际开发中应该怎么选?
display:flex 与 display:inline-flex 在弹性布局本质上是相同的,它们的差异仅在于容器自身在文档流中的展示方式。
2025-05-09 16:42:30
1610
原创 从 v-model 到 defineModel:Vue3 正在悄悄改变开发习惯
表面上是小小语法更新,背后是 props、emit、双向绑定、编译优化的完美结合。掌握它,才能真正写出未来式的 Vue3 组件。
2025-04-30 08:30:00
1132
原创 叮咚!你的第一封站内信到了!
站内信(In‑App Notification),简单来说,就是“网站/应用内部给我们的消息推送”,就像一个内置的小邮箱、短信系统。
2025-04-25 08:30:00
673
原创 加了防抖就能防住重复提交?测试:我不答应!
在实际开发中提交按钮未防止重复点击时,可能导致的多次网络请求问题,通过封装点击锁 useClickLock 与 v-bLoading 指令的方式,有效实现按钮防抖与加载反馈,提升用户体验与系统稳定性。
2025-04-23 08:30:00
839
原创 同样是解码,结果却天差地别?可能用了错的函数!
encodeURI 与 encodeURIComponent 是前端处理 URL 编解码的关键函数,理解它们的区别能有效避免参数丢失、结构错乱等问题。
2025-04-22 08:00:00
1265
原创 ES6 Promise 的底层魔法:一步步实现异步控制器
Promise 是 JavaScript 处理异步操作的强大工具,能够避免回调地狱。它像一个承诺,告诉我们未来某个时刻会返回一个结果,成功时执行 then,失败时执行 catch,让异步代码变得更易理解和管理。
2025-04-18 08:00:00
731
原创 从冗余到极致精简,Tree Shaking 真正做了什么?
Tree Shaking 是 JavaScript 应用打包优化的重要技术之一,其通过深入的静态分析与依赖图构建,将“死代码”剔除,极大优化了最终输出文件的体积和性能。
2025-04-17 08:30:00
1814
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅