全部文章
决策模型,Jev 与 Kev
有个模型不返回文本,只返回概率。confidence 不是学出来的值而是算术,校准也不是模型的性质而是分布的性质。本文用公开的 Jev 实测 5,743 条,以及把复现实现 Kev 直接跑在本博客音译闸门上的结果来验证。
overlay-kit
把用全局状态保存模态框开关的代码换成一行 await,我得到了什么又失去了什么。顺着源码追踪 overlay-kit 的事件、reducer 与 openAsync 核心逻辑,并亲手测试重新打开的行为,直到发现它与文档不符之处。
共享语言
当产品经理和 developer 用同一个词指代不同事物时该怎么办。本文借助 Evans 的 ubiquitous language 与 Clark 的 grounding 理论,梳理跨职能沟通失败的结构,并整理出对齐分辨率的实务工具。
Harness(系统)工程
从 prompt engineering 到 context engineering,下一步将走向哪里?本文以 Anthropic 工程博客近期呈现的脉络为线索,梳理 harness 设计、eval、containment(隔离)三个方向及其与 token 节省讨论的联系。
Kalyx
整理了我为什么开发 React headless DatePicker Kalyx,以及它与 Ark UI、React Aria、react-day-picker 的区别。结合代码与实测,讲解 ISO 8601 UTC 值模型、基于 Intl 的夏令时处理和覆盖全部 IANA 时区的属性测试。
AI Token 节省方法
AI 编程工具的 Token 成本从哪里产生,又该如何降低。文章结合 Anthropic 价格表,用 React POC 实测 prompt caching、subagent、精简 MCP、context engineering 与 Cursor Composer 等已验证的节省策略。
Token 的工作原理
AI Token 既不是单词也不是字符。本文系统讲解 BPE tokenizer 如何生成 Token、Token 如何变为 embedding 向量并进入模型、为何 decode 输出比 prefill 输入更贵,以及 KV cache 与 prompt caching 降低成本的原理。
AI 智能体工具
从四个角度梳理使用 Claude 进行前端开发时遇到的工具:CLAUDE.md、AGENTS.md 与 SKILL.md 的区别,MCP 的原理,Serena、CodeGraph 等代码智能工具的工作方式,以及如何阅读 GitHub Trending。
状态管理
状态管理被视为前端开发中最棘手的工作之一。本文将状态分为局部、全局、服务端、表单、URL、外部和守卫 7 类,并从 Single Source of Truth、消除不可能状态、State Colocation 等 4 个判断维度,梳理工具选择与状态建模的准则。
领域模型
从前端视角梳理领域、领域模型与领域对象的概念,并讨论实体与值对象、贫血领域模型以及 ViewModel 的分离。文中通过韩国综合所得税领域的示例,说明如何在 React 项目中把领域逻辑与视图拆开的实战方法,以及拆分之后测试与维护会发生什么变化。
Toss Frontend Fundamentals 模拟考试第 2 期重构复盘
分享在 Toss Frontend Fundamentals 模拟考试第 2 期中重构会议室预订应用的经历。文中梳理单体组件的拆分方式、领域逻辑的提取过程,以及以测试为基础推进重构的完整步骤,并记录其中做出的取舍与复盘,供准备同类练习的开发者参考。
AI 前端工程师
在 AI 代替人编写代码的时代,前端工程师该如何成长并生存下去?本文基于 Karpathy 的 agentic engineering、Vercel v0、Stack Overflow Survey、METR 研究等可靠资料,梳理以验证、规格与判断力为核心的新能力和学习策略。
抽象
前端开发中的抽象究竟是什么,好的抽象与坏的抽象又有何不同。本文从 React 组件、自定义 hook 与函数设计的角度,梳理抽象层级的统一、揭示意图的命名,以及把部件组合起来的设计方法,并讨论抽象泄漏带来的代价,以及可以直接套用到现有代码里的重构方向。
queryKey
梳理 TanStack Query 的 queryKey 如何工作,以及它为何从内联数组演进到 query key factory 和 queryOptions;并从实践角度讨论 TkDodo 模式、v5 queryOptions,以及 setQueryData 和缓存失效。
ErrorBoundary 放在哪里
知道了错误会去哪里,接下来就该在那些地方放上接收它的东西。ErrorBoundary 分几层、一次失败该让出多少屏幕、以及要让重试按钮真的重试还得一起解开什么,全部用已安装的源码来核对。
错误的传播
把同一个错误从七个位置抛出去,只有四个能到达 ErrorBoundary。这篇文章用官方文档和本地安装的源码确认编译期、渲染与生命周期、服务端数据、页面切换、外部库、事件与异步分别传播到哪里。
彻底掌握 React Fiber
基于 React 源码,深入分析 React Fiber 架构,从 Stack Reconciler、Lane 优先级、双缓冲、MessageChannel 调度器到 Concurrent Features。前端面试中的高频主题。
Biome 能取代 ESLint 和 Prettier 吗?
对比 Biome 与 ESLint、Prettier 组合的 lint 与格式化性能。基于把这款 Rust 一体化工具链引入实际项目的经验,整理配置迁移的具体步骤、容易卡住的地方,以及它目前能替代的范围和仍然遗留下来的问题,帮助你判断现在是否值得迁移。
Zustand,你到底为什么是 ProviderLess?
通过阅读源码深入探究 Zustand 无需 Provider 就能管理状态的原理。文中比较它与 React Context API 的差异,梳理基于模块作用域的 store 设计,以及 useSyncExternalStore 的订阅机制。
理解压缩算法
对比 ZIP、GZIP、ZSTD、Brotli 等主流压缩格式的原理与性能。从 LZ77 出发讲清无损压缩的机制,再比较压缩率、速度与兼容性之间的取舍,并结合实测数据给出为前端构建产物选择压缩格式的判断标准与常见误区,帮助你在打包流程中做出更合适的选择。