自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(325)
  • 收藏
  • 关注

原创 前端版本检测

本文档说明 pay 项目中的工作原理、构建注入方式、运行时检测逻辑,以及排查与验证方法。

2026-07-31 14:20:39 209

原创 各个ai工具的自定义api使用

点击第二个红框中的"模型配置"按钮,进入配置页面点击保存并测试,如果下面返回了“xxx t/s|首字 xx.x s”,即为链接成功。

2026-07-28 10:23:37 266

原创 http 请求body加密

HTTP Body 整包加密 — 原理与 Demo对应 pay 项目实际实现:@fs/http + @fs/utils AESCrypto + rndKeyWf能。HTTP 协议本身不关心 body 里是 JSON 还是乱码,body 本质就是一段字节流。所谓「整包加密」的做法是:先把要发的业务数据 JSON.stringify 成字符串用对称密钥(如 rndKeyWf)做 AES-GCM 加密把密文编码成 Base64 字符串用这个字符串替换 axios/fetch 的 body。

2026-06-10 16:12:55 366

原创 css加载顺序导致本地和线上样式不一致

票据买入页(,路由/bills-buy)在暗黑主题()下,买入金额区域的van-field输入框背景与页面整体不一致。该问题在与表现不同,排查时易误判为「黑肤配置两套」或「页面未写暗色样式」。

2026-06-03 16:38:43 239

原创 overscroll-behavior 防止滑动穿透

以下为2026 年前后的常见结论,详细版本以为准。环境大致说明较新版本完整支持(Chrome 65+ 等)。Firefox59+ 支持。16+支持较好;15 及以下需按项目占比考虑兜底。IE不支持。Opera Mini 等往往不支持或行为受限。工程建议将作为渐进增强;移动端弹层仍保留 body滚动锁定或 touchmove条件阻止默认(按需、注意可访问性)等方案;上线前在目标机型 WebView上实测弹层滚动。

2026-04-27 17:03:12 456

原创 前端调试隐藏元素

对父容器(或 document.body)勾选 Break on → subtree modifications 后,再去触发「显示」操作,一旦脚本往这个子树里插节点,执行会立刻停住,此时 DOM 已经更新,你可以在 Elements 里慢慢点开、选中刚出现的那块。某些情况下子节点的属性被改(具体实现上不同版本可能和「子树修改」的划分略有差异,但核心是 DOM 结构变化)你很难用鼠标稳定选中。此时一改动元素就会断住,然后再断点调试进入下一步,则消失的元素就出来了,然后鼠标选中消失的元素即可。

2026-04-27 14:40:59 74

原创 展开收起行内展示

【代码】展开收起行内展示。

2026-04-15 14:49:26 36

原创 项目优化实践

代码分割是将打包后的代码拆分成多个小块(chunks),按需加载,而不是将所有代码打包成一个巨大的文件。减少首屏加载体积利用浏览器并行加载更好的缓存策略(公共代码变化少,缓存命中率高)

2026-01-26 19:32:44 643

原创 npm 绕过2FA验证

勾选 “Bypass two-factor authentication for automation”访问 https://www.npmjs.com/settings/hualetian/tokens。点击 “Generate New Token” → “Granular Access Token”创建 Automation Token(推荐)Expiration: 选择一个过期时间。

2026-01-26 11:18:36 276

原创 Sentry sourceMap包引起的路径问题

当线上发生 JS 错误时,Sentry 收到的错误信息是这个位置1:23456是压缩后的代码,根本看不懂。我们需要上传:告诉 Sentry “我上传的 Source Map 对应的是哪个线上 URL”。

2026-01-19 14:38:15 550

原创 Vite 与 Webpack 模块解析差异

对比项WebpackVite模块解析宽松,有回退机制严格,遵循 ESM 规范module 字段文件不存在回退到 main直接报错适用场景兼容性好,容错性高性能好,但对包质量要求高教训:发布 npm 包时,确保中声明的所有入口文件都实际存在。

2026-01-16 16:07:09 181

原创 cursor 智能commit

使用简体中文生成简洁的 Git 提交信息,遵循以下规则:

2026-01-16 13:58:50 654

原创 pnpm 改造

pnpm默认会把子依赖放在 .pnpm 下,项目中没有在 package.json 中安装的导入会报错 ,更严格的依赖管理:默认情况下,只能访问 package.json 中声明的依赖,避免幽灵依赖。更快的安装速度:pnpm 使用硬链接和符号链接,避免重复下载相同的包。导入了没有在 package.json 安装的包,手动安装相关依赖。节省磁盘空间:所有包都存储在全局存储中,项目之间共享。Vue loader 版本安装不对。npm 和 Yarn 的不足。cmdb 设置 pnpm。为什么选择 pnpm?

2026-01-14 14:35:11 693

原创 解决mcp 和项目的node 版本冲突

2025-11-20 16:38:44 156

原创 css font-size 的妙用

​消除空白间隙​:浏览器会将 HTML 代码中的换行符、空格等渲染为文本节点,导致行内元素之间产生约 4px 的空白间隙。设置 font-size: 0后,父元素的字体大小变为 0,从而消除这些空白节点的视觉占用。font-size: 0 是一个常见的 CSS 技巧,主要用于解决行内元素(如 inline-block 元素)之间的默认空白间隙问题。​不影响子元素字体​:子元素可独立设置 font-size恢复文字大小,父元素的 font-size: 0不会继承给已明确设置字体的子元素。

2025-11-05 17:07:07 245

原创 Puppeteer爬虫程序

【代码】Puppeteer爬虫程序。

2025-09-11 16:19:19 795

原创 一道函数柯里化的变种

收集参数的思路 就是返回一个新的函数 然后再这个函数里面 自己调用自己。

2025-09-09 15:41:55 105

原创 ssr原理

SSR(服务端渲染)技术文档一、SSR 概述SSR(Server-Side Rendering,服务端渲染)是一种在服务端生成完整 HTML 页面,再发送给客户端渲染的前端渲染模式。与 CSR(客户端渲染,如 React/Vue 单页应用)不同,SSR 的核心是“服务端生成初始 DOM,客户端在此基础上激活交互”,旨在解决 CSR 首屏加载慢、SEO 不友好的问题,同时保留客户端交互的流畅性。二、SSR 核心流程。

2025-09-05 15:53:23 1248

原创 合并对象 递归注意对象的合并时机

/,然后添加detail(obj[key], keyStr).注意这个函数有可能是返回空的{}如a.d的时候就是返回空对象,因为逻辑是!//而正确方案都是让detail(obj[key], keyStr)去先执行,先进入递归,此时res已经被res = { ...res, ...sonObj };//两个方案的本质区别在于扩展顺序的不同,错误的方案是先展开res,此时还没有进入递归,res是空的{},后面虽然进入了递归也改变了res,但是展开运算在前面,时间线后面的无法去改变前面的所以是空的去展开。

2025-08-01 14:53:59 433

原创 手写数组洗牌算法

实现一个数组洗牌函数,使用Fisher-Yates(费雪-耶茨)洗牌算法,确保数组元素随机排列,每个元素在每个位置上的概率相等。:一个数组:洗牌后的数组(原地洗牌)

2025-07-25 18:43:06 876

原创 数组倒序遍历中splice操作的安全性分析.

倒序遍历结合splice是处理数组动态修改的安全高效方案索引变化仅影响已处理元素完全避免正序遍历中的元素跳过问题单一循环完成遍历与修改,时间复杂度O(n)适用于所有需要在遍历中修改数组的场景。

2025-07-25 16:28:09 230

原创 闭包的两种设计模式

闭包设计模式是 JavaScript 中强大的编程工具,通过合理运用辅助函数模式和工厂模式,可以写出更加优雅、可维护的代码。关键是要根据具体的使用场景选择合适的模式,并注意性能和内存管理的最佳实践。每个闭包创建独立的作用域环境工厂函数返回的每个实例都有独立的状态合理使用闭包可以实现强大的功能增强注意内存管理和性能优化。

2025-07-17 11:33:50 1046

原创 链表的 哑结点的本质

关键理解:dummy从未"保存"current的变化dummy始终指向原始哑节点current在链表上移动,与dummy无直接关系dummy通过链表连接"看到"所有节点通过next指针的连接关系形成了的访问路径两个不同的概念变量指向dummy和current指向哪个节点节点连接:节点之间通过next形成的连接关系为什么需要current变量需要一个"移动指针"来遍历和构建链表需要一个"固定指针"来保持对头节点的引用这两个职责不能由同一个变量承担你的理解有一个关键误区:相同点。

2025-07-15 15:39:33 499

原创 反转链表 更好的理解

链表反转就是拿着两个指针,一边走一边把箭头掉头,最后prev指向的就是新的起点!

2025-07-14 14:24:35 323

原创 数组转化链表

执行顺序理解错误错误认知:边界检查可以放在递归调用后实际情况:必须先检查边界再递归,否则无法终止。

2025-07-11 17:19:06 542

原创 并发控制 超级简单版

【代码】并发控制 超级简单版。

2025-07-11 11:34:27 157

原创 缓存函数最后需要返回结果

2025-07-10 17:36:15 99

原创 二维数组调换

【代码】二维数组调换。

2025-07-03 11:17:16 108

原创 归并排序详解

每次合并都需要创建新数组,虽然递归有多层,但同一时间只有一条路径在执行,所以总空间是 O(n)。

2025-06-26 11:22:49 737

原创 堆排序详解

/ 假设当前节点是最大的。console.log(“\n排序完成:”, arr.join(', '));总体复杂度 O(n log n) 构建堆O(n) + 排序O(n log n)console.log(“原始数组:”, arr.join(', '));console.log(“构建堆后:”, arr.join(', '));数组:[10, 8, 9, 4, 7, 5, 3, 2, 1, 6]

2025-06-23 15:28:06 904

原创 记一次错误 深拷贝 key值全部小写

obj[key]:指向原始对象的引用,未经过递归处理:指向递归处理后的新对象。

2025-06-12 17:29:25 315

原创 回溯算法 递归调用栈详解

调用栈是LIFO结构:最后调用的函数最先返回栈帧包含执行上下文:参数、局部变量、返回地址return语句触发栈帧弹出:程序自动回到调用点继续执行引用类型变量在递归中共享:这是回溯算法能工作的基础明确的终止条件防止栈溢出:递归必须有出口回溯 = 撤销选择:在从递归返回后撤销之前的修改每次递归调用都是在探索一种可能性,而return则是回到上一个决策点,继续探索其他可能性。

2025-06-12 11:11:35 817

原创 异步并发控制代码详细分析

并发槽位管理:通过和limit控制同时执行的任务数动态调度:每个任务完成时立即尝试启动新任务(递归调用顺序保证:使用闭包中的taskIndex确保结果按原数组顺序存储流水线执行:不等待批次完成,而是任务完成即补充,最大化并发效率这种设计实现了受限并发的流水线处理,既控制了资源使用,又保证了高效执行和结果有序性。

2025-05-30 17:24:36 536

原创 tx eslint规则

【代码】tx eslint规则。

2025-05-20 15:48:32 203

原创 【无标题】好用的远程链接插件

现在在做后端开发有的时候需要链接到远程服务器,有很多插件看不到整体的目录结构。推荐 trae的 ssh Client。

2025-04-29 16:21:16 364

原创 记一次大文件 git推不上代码文件大小超过100M

看来这些大文件仍然在 Git 的历史记录中。我们需要使用更强力的方法来清理它们。现在你的仓库应该已经清理干净了,不再包含那些大型日志文件。以后这些日志文件会被 .gitignore 忽略,不会再被提交到仓库中。这个错误是因为你尝试推送到 GitHub 的文件超过了 GitHub 的文件大小限制(100MB)。好的,我来帮你处理推送问题。使用 git filter-branch 命令从 Git 历史记录中完全删除了大文件。看来我们需要先处理未暂存的更改。好的,我们看到有一些更改需要提交。我可以帮你具体实施。

2025-04-15 17:18:26 1171

原创 远程服务器下 每次装包的时候都提示我没有装cross-env

之前写的是 --production 命令。这个命令只会安装 package.json 中 dependencies 下的依赖,而不会安装 devDependencies 下的依赖。

2025-04-15 17:02:37 174

原创 nodejs 中关于path的方法

在Node.js的path模块中,主要有以下常用方法:

2025-04-07 16:08:45 342

原创 JavaScript reduce 方法详解

/ 输出: { apple: 3, banana: 2, orange: 1 }console.log(flatArray);// 输出: [1, 2, 3, 4, 5, 6]虽然 reduce 可以实现 map 、 filter 的功能,但应选择最适合的方法。accumulator (acc):累加器,存储上一次回调的返回值。currentValue (cur):当前正在处理的数组元素。如果不提供初始值,数组第一个元素将作为初始值。总是提供初始值,避免空数组报错。

2025-04-02 15:04:08 320

原创 解决热跟新失效

2025-03-28 15:28:19 133

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除