#Vue
9 篇
把 AI 的思考过程做成一棵能翻的树
给搜索过程做可视化,难点不在画树,而在数据要是真的、面板不能把棋盘顶来顶去、以及它得按需加载不拖累不点它的人。
进制与单位换算:唯一非线性的是温度
2 到 36 任意进制互转要用 BigInt 兜住精度;十类单位换算中前九类是线性比例,唯独温度是仿射变换,写成一个倍率就一定会错。
颜色与对比度:相对亮度不是通道平均值
三种记法互转只是入口,真正容易写错的是 WCAG 对比度:先做 gamma 还原再加权求和。以及「这上面该用黑字还是白字」为什么不能看亮度是否大于 128。
哈希与校验和:为什么 CRC32 和 MD5 得自己写
浏览器只在安全上下文提供 SHA 系列,CRC32 与 MD5 不在 Web Crypto 里。顺带解决大文件不该一次读进内存,以及校验值不该靠人眼比对。
正则测试:命中、分组与替换预览,以及零宽匹配的坑
自己写一个正则测试页要处理三件事:把命中位置和分组讲清楚、把替换结果先预览出来、以及别让零宽匹配把页面卡死。
JSON 工作台:格式化、校验与结构对比放在同一个页面
从反复在终端写临时命令洗 JSON 的经历出发,做一个只在浏览器里运行的工作台:格式化、压缩、排序、带行列的错误定位,以及两份 JSON 的结构差异。
用 Astro islands 把首屏 JS 压到零
从「异步引入」到「按需水合」,讲清楚三层懒加载分别解决什么问题,并给出这个站点里真实在跑的代码。
用 View Transitions 做主题切换水波纹
主题切换时用一个从点击点扩散的圆揭示新主题。半径要够到屏幕最远的角,动画结束必须清掉自定义属性,否则会污染下一次。
应用页不用 client:only:静态空壳加显式挂载
游戏与工具页是「空壳 + createApp」,不是 client:only。加载、成功、失败三态由我自己控制,重试按钮也是真的能按。
