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

CSS :has() 实战:父选择器只是表象,真正要理解的是关系查询与失效成本
把 :has() 当成「父选择器」会漏掉一半用法,也会低估它的代价。本文用卡片布局、表单状态、数量查询等场景讲清相对选择器的匹配方向,再拆解三个容易静默失效的语法边角(不可嵌套、非 forgiving、特异性抬升),最后解释为什么一次指针移动可能让它比 :focus-within 更贵。

Monorepo 的三层工具:pnpm workspaces、Turborepo 与 Nx 各自解决哪一段
把三者放进同一张分层图:pnpm 负责依赖解析与安装,Turborepo 负责任务编排与缓存键,Nx 把仓库结构变成可查询的项目图。再用几个缓存失效现场说明,选型时真正该问的不是功能表,而是「谁为缓存正确性签字」。

「暂时下线,恢复时间另行通知」:功能下线公告翻译指南
「为了提供更好的服务,部分功能将暂时下线,恢复时间另行通知」——功能下线公告是一种有语法的文体:主语会消失,时间会模糊,原因会抽象。把常见句式逐条翻译回它们掩盖的承诺,再给出一份读公告的检查清单,以及 Adobe Flash、IE11、Google Reader、Heroku 的真实通知期对比。

键盘玄学:从薄膜到客制化,打字五分钟调轴两小时
润轴、加棉、换弹簧、调卫星轴——折腾一下午,打字速度没变。键盘圈真正可测量的只有三件事:同时按键、消抖和延迟;其余大多是手感和身份。附一个浏览器里能跑的键盘事件测试,以及一张「什么时候才值得买第二把键盘」的判断表。
我的技术栈
多年积累的技术能力,持续学习与进步
React
Vue.js
TypeScript
JavaScript
HTML5
CSS3
Tailwind CSS
Astro
Svelte
Node.js
Git
VS Code
pnpm
Vite
Markdown
我的项目
以下是我参与和开发的一些项目,持续更新中