Now vibe coding, so learning hammer FE ?
《CSS 单位完全参考手册》

标签:
#前端开发 #CSS #响应式设计 #Web排版 #容器查询 #视口单位 #字体相对单位 #CSS数学函数

总结:

这是一本由 Mykola Ptushchuk 编写的交互式 CSS 单位参考手册,涵盖从基础像素到现代容器查询单位的所有 CSS 度量单位。全书共 7 章,每个单位都配有实时浏览器演示,可在线调整参数观察实际效果,并提供完整 PDF 下载。

文章要点:

1. 全书结构清晰,覆盖七大单位家族:从绝对单位(px)、字体相对单位(em/rem/ch/cap 等)、视口单位(vw/vh 及小/大/动态视口变体)、容器查询单位(cqi/cqw 等)、百分比、数学函数,到角度单位,形成完整的 CSS 度量体系地图。

2. 视口单位家族详解:现代移动端浏览器 UI 会动态收缩/展开,因此视口单位分为默认(等价于大视口)、小视口(sv,假设浏览器控件展开)、大视口(lv,假设控件收起)和动态视口(dv,实时状态)四大家族,解决了 100vh 在移动端全屏布局中常见的"被地址栏遮挡"难题。

3. 容器查询单位让组件真正可移植:cqi/cqw 等单位测量的是组件所在的"查询容器"而非整个视口,使同一个卡片组件在 300px 侧边栏和 700px 主栏中能自动呈现不同布局,无需媒体查询或额外类名,实现了"组件响应自身上下文"而非"响应整个页面"的范式转变。

4. 字体相对单位不止 em/rem:除了常见的 em(当前元素字体大小)和 rem(根元素字体大小),还有 ch(数字 0 的字宽,适合设置最佳阅读行宽如 65ch)、cap(大写字母高度,适合图标与标题对齐)、lh(当前行高作为长度)等精细排版单位,以及对应的根元素变体(rch/rex/rcap 等,2026 年 1 月才在 Firefox 中补齐,至此全浏览器支持)。

5. CSS 数学函数是单位的粘合剂:calc() 可混合不同单位(如 100% - 240px),clamp() 实现流体排版(如 clamp(2rem, 5vw + 1rem, 4rem)),min()/max() 取极值,还有三角函数(sin/cos/tan)可用于无 JS 的圆形布局,指数函数(pow/sqrt)可构建模块化字号比例系统。

6. 实用选型建议:正文用 rem 尊重用户偏好,组件内部比例用 em 保持缩放一致性,line-height 推荐无单位写法(如 1.5)以便作为乘数继承,clamp() 的流体值中务必包含 rem 项以确保缩放无障碍性。

7. 交互式学习体验:每个单位都配有可拖拽、可滑动的实时演示,直接在浏览器中观察单位变化效果,将抽象概念转化为直观体验,并支持下载完整 PDF 离线阅读。

URL:
https://cssunits.com/ CSS Units — The Complete Reference
《视觉回归测试:你可能还没跑起来的最重要测试》

标签:
#前端测试 #视觉回归测试 #自动化测试 #质量保证 #Web开发

总结:

文章系统介绍了视觉回归测试(Visual Regression Testing)的概念、重要性、工作原理、主流工具及实践建议。核心观点是:即使功能测试覆盖率100%,应用仍可能在视觉上"看起来完全损坏"。视觉回归测试通过截图对比基线,捕捉传统测试无法发现的视觉缺陷,在AI生成代码时代尤为重要。

文章要点:

1. 为什么视觉测试不可或缺:单元测试、集成测试和E2E测试只验证功能逻辑,不检查实际视觉呈现。CSS类名测试是代码异味,因为即使类名正确,实际渲染仍可能因样式冲突、加载失败等出问题。

2. 工作原理超直观:在真实浏览器中渲染页面/组件并截图,与基线快照对比。匹配则通过,不匹配则在CI/CD中标记失败,需人工审核确认是否为预期变更。

3. 能抓住哪些"隐形"Bug:组件一处修改意外影响其他使用位置、CSS变更导致的布局错位、响应式问题、跨浏览器渲染差异、字体/图片加载失败等。作者曾靠它避免了一个SVG图标在20处地方颜色错误的生产事故。

4. 三大主流工具怎么选:Percy(适合全页截图,与Playwright/Cypress/Puppeteer兼容,UI体验好但用量大时贵);Chromatic(Storybook生态,组件级截图,免费 tier 友好);Vitest Browser Mode(内置截图测试,但缺少审核UI,适合组件级)。

5. 接入CI/CD很轻松:通常在现有E2E测试中插入一行代码即可,如Playwright中调用percySnapshot()或Chromatic的takeSnapshot(),无需重构测试架构。

6. 避免" flaky 测试"的实用技巧:确保页面完全加载后再截图;用CSS隐藏动画区域;对动态数据(如日期、"5天前")设置忽略区域;避免对内容过多的整页盲目截图,要有选择性地测试。

7. AI时代的刚需:随着AI生成代码的普及,视觉回归测试将变得更加关键,能帮助团队快速发现AI改动带来的意外视觉副作用。

URL:
https://howtotestfrontend.com/resources/visual-regression-testing-introduction-guide Visual Regression Testing: The Most Important Test You're Not Running
《程序员的音乐理论:从零推导乐理系统》

标签:
#音乐理论 #编程 #Web_Audio_API #声学物理 #数学原理 #计算机科学

总结:

本文从物理和算术的第一性原理出发,用 JavaScript 代码逐步推导出整个西方音乐理论体系。作者不依赖记忆,而是通过编程和听觉验证,解释了为什么音乐有十二个音、为什么大调音阶是那个形状、为什么和弦听起来和谐,以及乐谱本质上是一种序列化格式。核心洞察是:音乐理论并非 arbitrary 的约定,而是物理(泛音列)和数学(简单整数比)的自然结果。

文章要点:

1. 声音的本质是随时间变化的数字 — 音频就是每秒 44,000 次描述扬声器位置的数字列表,频率即音高,440Hz 只是人为约定的基准。

2. 音色来自你没要求的频率 — 任何乐器发出的都不是单一频率,而是基频的整数倍(泛音列)。不同波形(正弦、三角、方波、锯齿波)本质上是泛音配方的差异,这解释了为什么小提琴和小号音色不同。

3. 八度是频率翻倍,音高是乘法关系 — 220Hz、440Hz、880Hz 听起来是"同一个音",因为高八度的所有泛音都包含在低八度的泛音列中。因此整个音高问题简化为"如何把倍频区间分割"。

4. 简单整数比听起来和谐 — 2:1(八度)、3:2(五度)、4:3(四度)、5:4(大三度)听起来协和,是因为它们的泛音列有大量重叠;而复杂比例(如 √2)产生拍频和粗糙感。协和的本质是耳朵能快速找到重复模式。

5. 十二音律是数学妥协 — 纯五度(3:2)叠 12 次不等于 7 个八度(2^7),这个无法修复的误差叫"毕达哥拉斯音差"。现代十二平均律将八度均分为 12 份(每份是 2 的 12 次方根),虽然除了八度都不纯,但让所有调都能用。12 之所以被选中,是因为它是第一个能把五度误差控制在约 0.1% 以内的数字。

6. 音阶是间隔数组 — 大调音阶 [2,2,1,2,2,2,1] 只是一个七元素数组,加起来为 12。自然小调是它的旋转(从第 5 位开始),七种调式则是同一数组的 7 种循环移位,这让作者感叹"音乐理论终于不再像 arbitrary 的 trivia"。

7. 和弦是隔一个音取的堆叠 — 三和弦 [0,2,4] 取音阶中每隔一个的音,大三和弦 [0,4,7] 与小三和弦 [0,3,7] 只差一个半音,却代表了西方音乐两大情感极。七和弦加入第四个音后,音乐开始从"圣咏"变成"爵士"。

8. 调内七和弦是自然涌现的 — 在一个大调音阶上,从七个音级分别构建三和弦,会自动得到:I(大三)、ii(小三)、iii(小三)、IV(大三)、V(大三)、vi(小三)、vii°(减三)。罗马数字标记是相对寻址,移调只需加一个常数。

9. 张力与解决有物理基础 — V7 → I 是最强的解决感,因为 V 和弦中的 B(导音)距 I 的根音只差半音,且 V7 包含三全音(B-F,√2 比例,最不稳定),这两个音分别向相反方向移动半音到达稳定位置。

10. 乐谱是带 header 的序列化格式 — 五线谱本质是针对"实时阅读、手在忙"场景优化的数据格式:纵轴是音阶度数(非线性频率),谱号定义坐标原点,升降号是 escape hatch,调号是 DRY 原则(常量提升),时值是 2 的负幂次,附点是二进制分数,速度(BPM)把拍子映射到秒。

URL:
https://runjs.app/blog/music-theory-for-programmers Music theory for programmers
《unbash:零依赖的 Bash 解析器》

标签:
#Web开发 #NodeJs #Bash解析 #TypeScript #AST #命令行工具 #静态分析

总结:

文章要点:
1. 定位清晰:unbash 是一个用 TypeScript 编写的、零依赖的 Bash 解析器,能将 Bash 源码(命令、脚本或嵌入在其他格式中的 shell 代码)解析为带类型和源码位置的 AST,且不执行代码
2. 适用场景丰富:可用于权限审核、静态盘点脚本中的可执行文件和依赖引用、将 curl 等命令结构化导入、为粘贴的 Bash 代码附加诊断信息、构建可视化解释、以及安全地查找和迁移命令调用
3. 语法支持全面:涵盖命令、控制流、管道、重定向、赋值、复合语句、参数扩展、进程替换、heredoc、算术表达式等,嵌套命令在参数、数组索引、算术表达式中仍保持结构化
4. 容错能力强:对于畸形或不完整的输入,会返回尽力而为的部分 AST,并附带带源码位置的错误信息,适合处理编辑器输入或用户粘贴内容
5. 性能碾压对手:在多个基准测试中,解析吞吐量远超 tree-sitter-bash(约 717 倍)、sh-syntax(约 92870 倍)和 bash-parser(约 275291 倍),包体积仅 80KB 压缩后 19KB
6. 与竞品差异化明显:相比 tree-sitter-bash 提供的是可执行语法的类型化 AST 而非 CST;相比 sh-syntax 无需 WASM 且 API 更轻量;相比 bash-parser 支持更多 Bash 特性(如 [[ ]](( ))、herestrings、process substitution 等)且具备错误恢复能力
7. 与 shellcheck 的互补关系:unbash 专注于"解析结构",不做语义分析;以下场景推荐用 shellcheck 而非 unbash:
- 检查变量是否已定义或是否被引用(如未引用变量 $var 可能引发 word splitting)
- 检测命令是否存在及其参数合法性(如 git --不存在的参数 语法正确但运行会报错)
- 识别常见陷阱和反模式(如 cat file | grep pattern 可简化为 grep pattern file
- 检查权限相关风险(如 rm -rf /$undefined_var 的潜在危险)
- 提供可操作的修复建议(shellcheck 会直接给出 SC 规则编号和修复方案)
- 对脚本进行全面的最佳实践审查(POSIX 兼容性、可移植性建议等)

URL:https://github.com/webpro-nl/unbash GitHub - webpro-nl/unbash: Fast 0-deps bash parser written in TypeScript
《前端框架基准测试平台》

标签:#前端 #Web开发 #FrameworkBenchmarks #PerformanceTesting #JavaScriptFrameworks #React #Vue #Svelte #SolidJS #Preact #Qwik #Lit #Angular #BundleSize #BuildTime #LighthouseScores #HMR #NPMStats #StackMatch

总结:
这是一个全自动化的前端框架基准测试平台,由开发者Alicia Sykes维护。项目用同一个天气应用在React、Vue、Svelte等12+个主流框架中实现,每晚自动跑分对比包体积、Lighthouse评分、加载速度、CPU内存占用、构建时间及HMR热更新速度。还整合了GitHub和NPM社区数据,并自带Stack Match智能推荐工具。所有原始数据开源可下载,帮你告别选型纠结!

文章要点:
1. 同一个天气应用,12+种框架实现——React、Vue、Svelte、Solid.js、Qwik、Lit等主流选手全部到场,公平对决
2. 每晚自动跑分,数据新鲜出炉——包体积、Lighthouse性能分、FCP/LCP/TTI加载指标、CPU内存占用、构建时间、HMR速度全覆盖
3. 社区数据一目了然——GitHub Stars、NPM月下载量、依赖数量、维护者人数、TS支持情况、许可证信息全整理好了
4. 自带Stack Match智能推荐工具——填填项目偏好,就能get最适合你的框架,选型不再拍脑袋
5. 完全开源透明——所有原始数据以JSON格式开放下载,测试用Playwright统一验证,结果可信可复现

URL:[https://framework-benchmarks.as93.net/](https://framework-benchmarks.as93.net/) Framework Benchmarks
《200毫秒:一次HTTP请求的完整旅程》

标签:#后端 #NodeJS #网络协议 #TCP #TLS #DNS #HTTP #Postgres #Linux内核 #Web性能

总结:

这是一个交互式可视化网站,以旧金山咖啡店一次点击购买为起点,逐帧追踪HTTP请求在211.4毫秒内穿越北美大陆的完整生命周期。从触摸板电容变化到屏幕像素刷新,文章以精确的时间轴拆解了硬件中断、浏览器事件循环、DNS解析、TCP/TLS握手、内核网络栈、Node.js事件循环、Postgres事务提交、光纤传输、Wi-Fi重传、GPU渲染等每个环节,揭示了"冷启动"请求中60%时间消耗在握手、35%在传输、而服务器实际计算仅占1.4%的惊人事实。

文章要点:

1. 一次点击触发7层软件栈(触摸板→HID→窗口服务器→Chrome→渲染器→JavaScript→fetch)才发出第一个字节,而电容变化到网络请求离开仅需5毫秒
2. DNS查询通过UDP在2毫秒内完成,依赖Anycast路由将请求导向最近的解析器;TLS 1.3将握手从2个RTT压缩到1个,但仍需127毫秒建立加密隧道
3. 4,700公里光纤需6次穿越大陆,每次31毫秒;Wi-Fi碰撞重传仅需1.2毫秒,却足以容纳整个Postgres查询往返(0.35毫秒)
4. 服务器端50微秒内完成从网卡DMA→NAPI轮询→TCP重组→epoll唤醒→Node.js读取→TLS解密→HTTP解析→路由到handler的全流程
5. Postgres通过连接池、预编译语句和WAL组提交将INSERT优化至2.1毫秒,fsync强制刷盘是唯一的同步阻塞点
6. 响应返回后,Chrome还需经历kqueue唤醒、TLS解密、React重渲染、样式计算、布局、绘制、合成,最终等待4.4毫秒VSync才显示"Order confirmed"
7. 第二次"热请求"可复用TCP连接和TLS会话票证,将耗时从211毫秒降至约95毫秒,节省的116毫秒全是首次建立的连接成本

URL:https://200ms.thenodebook.com/ 200 Milliseconds — the complete life of one HTTP request, visualized
《为什么我放弃Next.js和RSC,回归传统SPA与独立后端》

标签:#前端 #Web开发 #React #NextJS #React_Server_Components #SPA #架构设计 #安全 #TanStack #Hono

总结:

作者回顾了自己从Next.js忠实用户到拥抱App Router/RSC,最终回归传统SPA+独立后端的完整历程。文章深入分析了RSC架构带来的心智负担、序列化开销和安全风险,结合2025-2026年多起严重CVE漏洞,论证了将渲染框架与安全边界解耦的必要性,并分享了当前基于React Router+Vite+Hono的简洁技术栈。

文章要点:

1. Next.js的黄金时代:Pages Router时期心智模型清晰,服务端/客户端边界一目了然,文件路由简单易懂,部署零成本
2. App Router带来的混乱:Server/Client Component区分成为负担,"use client"指令传染性强,开发/构建/生产环境缓存行为不一致,服务端客户端边界变得不可见
3. 安全漏洞敲响警钟:2025年CVE-2025-29927中间件绕过(CVSS 9.1)、2025年底RSC核心包10分满分漏洞CVE-2025-55182、2026年初多起Server Function DoS漏洞,攻击面集中在服务端渲染和反序列化环节
4. TanStack并非避风港:2026年5月TanStack遭遇供应链攻击,42个包被投毒,说明换框架不能免疫风险,减少依赖面才是关键
5. 序列化是根本原因:RSC的"无缝"本质是分布式系统的序列化问题,函数、类实例、错误栈都无法透明穿越边界,反序列化不可信输入成为高危攻击面
6. 当前架构选择:React Router框架模式+Vite纯SPA(仅营销页预渲染)+ Hono独立后端,API通过显式HTTP调用,无RSC负载,无服务端序列化
7. 安全设计原则:认证授权在API层强制执行,前端中间件只做UX跳转,CORS/CSRF/验证码/限流全部在可控的后端实现,与渲染框架彻底解耦
8. 核心收获:架构清晰可指认、无序列化税、前端攻击面趋近于零、后端语言自由选型、依赖更少爆炸半径更小——"无聊"在软件工程里是赞美

URL:https://dev.to/zulikram/why-i-walked-back-from-nextjs-and-rsc-to-a-plain-spa-and-a-separate-backend-4k8p
《别在 div 和 span 上乱加 aria-label》

标签:#前端 #Web无障碍 #ARIA #屏幕阅读器 #HTML语义化

总结:
本文通过实测数据揭示了在 div、span 等 generic 角色元素上使用 aria-label 的严重兼容性问题。ARIA 规范明确禁止为 generic 角色命名,而各屏幕阅读器的表现更是天差地别——有的只读标签、有的只读内容、有的两者都读、有的干脆忽略。这种不一致会让依赖辅助技术的用户获得错误信息,属于典型的"好心办坏事"。作者指出 section 和 popover 是例外,前者加标签会自动升级为 region 地标,后者角色会变为 group。

文章要点:
1. ARIA 规范 5.2.8.6 明确把 generic 角色列入"禁止命名"清单,div 和 span 默认就是这个角色
2. 实测 8 组屏幕阅读器+浏览器组合,对带 aria-label 的 div announcement 结果五花八门:VoiceOver 读"News, group"、TalkBack 只读"News"、JAWS/NVDA 完全忽略标签只读内容
3. 空 div 的测试结果更混乱,有的读"News, empty group"、有的完全静默,无法预测用户会听到什么
4. 这种不可预测性对屏幕阅读器用户是灾难性的——你以为在帮忙标注,实际上可能覆盖了真正有用的内容
5. 例外情况:section 元素加 aria-label 会自动从 generic 升级为 region 地标,这是规范允许的;带 popover 属性的 div 角色会变为 group,加标签也合法
6. 正确做法:需要可访问名称时,优先使用语义化标签(如 button、nav)或显式设置 role,而不是在裸 div 上硬塞 aria-label

URL:https://www.matuzo.at/blog/2026/aria-label-generic-elements
《Express全新面貌》

标签:#后端 #NodeJS #ExpressJS #Web框架 #文档重构 #开源社区

总结:
Express官方博客宣布完成网站全面重构与品牌焕新,涵盖Astro技术栈迁移、AI智能搜索、版本化文档及全新Logo设计,标志着这个Node.js生态老牌框架在2024年重启后进入新阶段。

文章要点:
1. 网站底层从Jekyll迁移到Astro,带来更灵活的组件模型、国际化支持和内容页性能提升,文档生成与维护方式也一并升级
2. 文档新增多版本并行浏览,Express 4和5的文档可以独立查看,告别版本混淆的烦恼
3. 搜索接入了Orama的AI能力,支持自然语言提问,找API和概念更快更准
4. 全站文档开放了llms.txt端点,方便大模型和AI助手直接读取最新文档
5. 接下来的重点是补齐内容缺口、完善多语言翻译,并让文档和新版本同步发布
6. 新Logo由社区公开协作设计,品牌定位为"Established·Dependable·Approachable",延续极简风格的同时开启新篇章

URL:
https://expressjs.com/en/blog/2026-05-18-a-new-look-for-express/ A New Look for Express · Express.js
《设计高性能表单:5个基于研究的UX原则》

标签:#UX设计 #表单设计 #前端开发 #Web可用性 #交互设计 #用户研究

总结:

本文基于Baymard Institute等权威机构的可用性研究,提出了5个提升表单性能的核心UX原则:精简字段数量、采用单列布局、明确标注必填与选填字段、实施正确的即时验证时机,以及优化移动端输入体验。这些原则能有效降低用户放弃率(约26%用户因表单复杂而放弃),提升完成效率与满意度,是构建高转化率表单的设计基石。

文章要点:

- 精简字段数量:平均电商结账流程包含11.3个字段,但高性能网站仅需6-8个即可完成交易。多余的字段会增加认知负担,约26%的用户因表单复杂而放弃购买。建议移除或折叠可选字段,除非确有必要

- 单列布局更友好:多列布局在静态设计稿中看起来美观,但可用性测试表明用户容易误读字段顺序。人眼不会自然地"之字形"扫描多列表单,单列布局提升可读性,支持自然阅读习惯,在桌面和移动端都表现可靠

- 明确标注必填与选填字段:不要假设用户能推断哪些字段是必填的。研究显示,近三分之一用户在仅标注选填字段时会遗漏必填项。可靠的做法是统一标注所有字段状态("必填"或"选填"),标签应紧邻字段标签放置

- 即时验证的时机很重要:正确实施的即时验证可提升表单成功率约22%,缩短完成时间40%以上,提高用户满意度30%以上。但不要在每输入一个字符时就验证(会增加认知负荷),建议在失焦时或字段完成后验证。错误提示应具体说明问题及修正方法,验证指示器应紧邻字段显示

- 优化移动端输入体验:避免将电话号码等输入拆分为多个字段,这会提高错误率和完成时间。确保触发合适的键盘类型(数字键盘用于卡号、邮箱键盘用于邮箱输入)。启用自动填充功能,Google研究显示这可减少30%以上的完成时间。允许粘贴完整值,不要阻止粘贴操作

文章URL:

https://designmybit.com/designing-high-performance-forms-5-research-backed-ux-principles/ Designing high-performance forms: 5 research-backed UX principles - The UX Bit
 
 
Back to Top