-
JavaScript 内存泄漏排查实战:定时器、闭包、缓存与游离 DOM
一个 Node 服务三天一 OOM、靠定时重启续命,推上去彻查后才发现:JS 有 GC 也照样漏内存,因为 GC 回收的是不可达对象,而你忘了断开的引用让它一直可达。从五类最高发的泄漏面孔(未清的定时器监听器、捕获大对象的闭包、只增不删的全局缓存、游离 DOM、囤进全局的变量)讲到三次堆快照对比法,再到追 Retainers 引用链的固定排查流水线。- 0
- 0
-
TypeScript 类型设计实战:判别联合、品牌类型与 satisfies 把 bug 挡在编译期
我接手过一个用了两年 TypeScript 的项目,打开却像在看穿了西装的 JavaScript:参数标 any、字段写 data: any、接口返回直接 as 强转,问起来团队回答出奇一致——"TS 太啰嗦,加 any 编译就过了"。可这套穿着 TS 外衣的 JS,该出的运行时错误一个没少:传错参数顺序、读不存在的字段、把没校验的字符串当合法值用,全溜进了生产。那次重构让我想…- 0
- 0
-
从粗放 JavaScript 体系 弱类型无检查改个字段名编译器不吭声运行时才白屏 + any 与隐式 any 满天飞类型检查形同虚设 + 通用结构每种数据各抄一份 interface + 外部数据从不校验少个字段或 null 就崩 + 前后端契约手写一份会过期的 interface 去猜 + 模块还是 CommonJS require 无法 tree-shaking + 构建用 webpack 加 babel 热更新十几秒全量构建几分钟 + 枚举全是散落的魔法字符串拼错一字母毫无察觉 + undefined/null 到处裸奔运行时 cannot read property → 2026 现代 TypeScript 体系 静态类型编译期就拦住 + strict 严格模式 + unknown 收口外部数据 + 泛型与工具类型一处定义处处复用 + zod 在边界做 schema 运行时校验 + tRPC 前后端类型端到端打通 + ESM import/export 可摇树优化 + Vite 加 esbuild/swc 毫秒级热更新 + 联合字面量类型消灭魔法字符串 + strictNullChecks 加可选链编译期拦空 + allowJs 逐文件渐进迁移 87 天战役复盘:47 套工程修法 + 7 个 P0 复盘 + 6 条工程哲学
12 位前端与全栈工程师 87 天把一套用了七年、从 jQuery 时代堆叠至今的几十万行粗放 JavaScript 代码——先天没有类型一个函数收什么返回什么全靠翻代码或祈祷注释、改个字段名编译器一声不吭要等线上白屏才知道闯祸、any 与隐式 any 满天飞类型检查形同虚设还像病毒一样顺着数据流传染、通用的分页结构为订单用户商品各抄一份几乎一样的 interface、外部接口数据直接 as 强断…- 5
- 0
-
HTTP 缓存策略完全指南:从一次"改了样式发了新版用户还是旧的"看懂强缓存与协商缓存
2023 年我负责一个前端站点的上线和迭代。第一次认真处理缓存时我做得很省事在 Nginx 上给所有静态资源 HTML JS CSS 图片统一加了一行 expires 7d 意思是都缓存 7 天。本地一测飞快第二次打开页面资源秒加载服务器压力肉眼可见地降了。我心里很踏实HTTP 缓存嘛不就是给资源设个过期时间过期了浏览器自然会重新拉。可等它真正上线开始频繁迭代一串问题冒了出来。我改了页面样式重新发…- 0
- 0
-
TypeScript monorepo 编译 12min 优化到 90s:Project Refs + SWC + Turbo
60 个包 / 200 万行 TS monorepo,tsc 全量 12min,增量 30-60s,VSCode 占 4GB 卡顿。一个月治理:Project References 分模块 + tsbuildinfo + SWC 编译 + tsc 仅类型检查 + Turbo 增量缓存 + 远程缓存 + tsserver 调优。最终 90s,增量 < 5s,CI 25min → 45s。- 4
- 0
前端工程
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!





