博客技术栈
本站使用以下技术构建,追求高性能与最佳开发体验
Astro 5
现代化的静态站点生成器
Tailwind CSS 3
实用优先的 CSS 框架
TypeScript
类型安全的 JavaScript
Swup
页面过渡动画
最新文章
View all posts »记录技术学习、前端开发经验和日常思考。每一篇文章都经过精心打磨,希望对你有所帮助。

Web Worker 实战:把计算搬出主线程,要付的三笔账
主线程卡住不是因为计算太多,而是因为计算和渲染、输入共用一个事件循环。Worker 能把计算搬走,但搬走要付三笔账:消息的深拷贝、线程的启动与调度、共享内存的竞态。本文用可运行代码拆开结构化克隆、Transferable、SharedArrayBuffer 与 worker 池,并给出不该用 Worker 的场景。

Web Components 实战:生命周期、Shadow DOM 边界与声明式 Shadow DOM 的代价
把 Web Components 当成「不用框架的组件」会连续踩进四个坑:constructor 里读不到属性、connectedCallback 会重复执行、样式穿不过 Shadow 边界、SSR 输出的内容抓不到。本文用可运行代码拆开自定义元素、属性同步、Shadow DOM 与声明式 Shadow DOM,最后给出不该用它的场景。

「快了快了」:进度汇报的修辞学
「快了」「就差联调了」「整体完成了 90%」——这些句子不是进度,而是一种文体。拆解进度汇报里六种常见句法,逐条翻译它们真正在说什么,再给出一份追问清单和一份不容易心虚的汇报模板。

编译器报错大赏:一句话能写几屏
六行 C++、一个忘了实现的 operator<,GCC 回了 78 行,Clang 回了 220 行。这篇拆开报错的三层结构(error / required from / note),讲清模板实例化为什么把调用栈倒着打印,再给出三招把报错读短:从开头那条 error 读、搜自己的文件名、把长表达式拆成具名变量。
我的技术栈
多年积累的技术能力,持续学习与进步
React
Vue.js
TypeScript
JavaScript
HTML5
CSS3
Tailwind CSS
Astro
Svelte
Node.js
Git
VS Code
pnpm
Vite
Markdown
我的项目
以下是我参与和开发的一些项目,持续更新中