Now vibe coding, so learning hammer FE ?
《框架还重要吗?》

标签:
#编程 #Web开发 #AI编程 #前端框架 #React #软件工程 #技术趋势 #VibeCoding

总结:

这是一篇探讨在 AI 编程时代 Web 框架是否仍然重要的深度分析文章。作者 Brooks Lybrand 作为拥有三年开源框架开发经验的前端工程师,针对"模型已经足够好,框架选择不再重要"的流行观点进行了系统性反驳,论证了框架在提供抽象、结构和约束方面的核心价值,并呼吁行业继续创新和构建新框架。

文章要点:

1. **对"React 已赢"论的质疑**:作者指出当前流行观点认为由于 LLM 训练数据中 React 代码最多,模型最熟悉 React,因此无需尝试其他框架。但他认为这种逻辑存在矛盾——如果框架真的不重要,那连 React 都不需要,直接用 Web Components 或让 AI 生成原生代码即可。

2. **框架的本质价值**:作者将框架的价值精炼为三点:**提供抽象(Abstractions)、结构(Structure)和约束(Constraints)**。这些价值不仅适用于人类开发者,对 AI 编程同样关键——良好的抽象能避免 AI 重复造轮子或创建混乱的临时方案;清晰的结构帮助 AI 生成可维护的代码;明确的约束(如类型检查、测试)能防止 AI 在迭代中破坏系统。

3. **AI 时代框架的隐性存在**:引用 React 核心团队成员 Ricky Hanlon 的观点"你要么使用框架,要么构建框架",作者强调即使不显式选择框架,AI 在生成代码时也会隐式地创建框架。与其让 AI 生成一个缺乏维护、充满临时补丁的"隐性框架",不如使用经过实战检验、文档完善的开源框架。

4. **开发者体验(DX)的重构**:通过分析 HMR(热模块替换)、TypeScript 和 useEffect 等具体技术,作者说明某些传统 DX 功能对人类开发者的价值正在转变,但对 AI 编程仍至关重要。例如 TypeScript 的类型约束能有效防止 AI 在复杂应用中引入错误,而 useEffect 这类强大但易误用的抽象则应该避免让 AI 随意使用。

5. **框架战争的终结与新机遇**:作者认为 2013-2024 年的"框架战争"已经结束,人们不再渴望为框架争论,但这不意味着框架不再重要。他指出当前框架领域仍存在明显不足,特别是缺乏真正全栈、基于 Web 标准、易于 AI 协作且代码可理解的 JavaScript 框架。

6. **对未来的呼吁**:尽管承认 AI 正在重塑软件开发,且没人知道其长期影响,作者仍坚持认为认为"所有问题都已解决"是一种颓废的态度。他呼吁继续构建新框架,探索更好的抽象和模式,而不是停留在"现有框架足够好"的舒适区。

URL:
https://brookslybrand.com/posts/do-frameworks-matter-anymore/

> 个人觉得有点片面化,remix 脱离 react 转而用 preact 自创轮子 Do Frameworks Matter Anymore?
《用 AI 定制框架替换 Next.js:一个静态网站的“超个性化”重构实验》

标签:
#Web开发 #前端工程 #AI辅助编程 #NextJs #静态网站 #自定义框架 #性能优化 #Vercel部署

总结:

作者 Max Leiter 用 Claude Code(Fable 5 架构、Opus 实现)在约 3 小时内把个人博客从 Next.js 迁移到了一个为站点量身定制的静态构建框架。新方案把全站编译成纯 HTML,按需加载少量 Preact islands,结果页面体积、Lighthouse 分数、构建时间全面大幅优于 Next.js;代价是放弃了框架生态的无数隐性优化,后续维护与安全问题也由自己承担。

文章要点:

1. 作者让 AI “按需造一个比 Next.js 更快的专属框架”,核心思路是只保留这个网站真正用到的 Next.js 功能,而不是继续背着整个框架跑。

2. 新框架本质上是一个构建脚本:读取文章目录,用 React 在服务端渲染每条路由为静态 index.html,再按 Vercel Build Output API 输出,M2 MacBook 上热构建只要约 0.5 秒。

3. 性能提升非常夸张:首页 JS 从 208 KB 降到 2.3 KB(约 -99%),移动端 LCP 从 2.4 秒降到 1.3 秒,整页重量从 1153 KB 降到 78 KB,Lighthouse 直接冲到 100 分。

4. 博客文章页同样收益明显:HTML 更小、JS 只剩 2.3 KB,移动端 LCP 从 2.2 秒降到 1.1 秒,页面重量从 405 KB 降到 57 KB,软导航也改成更轻的 partial/prerender 方案。

5. 交互没有消失,而是改成“islands”模式:桌面窗口管理器和命令面板用 Preact 组件按需水合,命令面板首次按 Cmd+K 才加载,Preact 兼容层只有约 7 KB,比 React 的 52 KB 轻很多。

6. 构建链路保留原有体验:MDX 仍在构建期用同一套 remark/rehype 插件编译,shiki 在构建时同时输出两套主题的代码高亮,所以切换主题不需要额外 JS。

7. AI 还写了一个“parity harness”,对旧站 101 条路由做快照,对比 head、正文和代码块,结果抓出了 8 篇未发布文章泄漏进 RSS、以及一张 404 的 OG 图这类真实问题。

8. 整个实验花费约 669 美元,API 运行 8 小时 27 分,代码新增 20914 行、删除 2022 行,大约用掉 Claude Code 20x 订阅额度的 10%。

9. 作者认为这种做法的意义在于“只 vendor 你真正需要的东西”:框架被压缩到约 5000 行,人和模型都更容易审查,也能减少供应链攻击面。

10. 缺点也很直白:Next.js 里成百上千个小优化和边界处理 AI 未必都知道或能复现;没有现成的 agent 工具链集成;安全修复不再自动从上游来;而且网站一旦有问题,bug、安全、功能需求都归你自己管。

11. 文章还记录了两个浏览器层面的坑:Chrome 的跨文档 view transitions 会因 head 里的外部 module script 静默跳过入场动画,所以 runtime 必须内联;Safari 对 Speculation Rules 的 feature detection 需要同时检查 API 支持和 document.prerendering。

12. 作者最后判断:未来可能会出现更多“vendoring”和 agentic rewrite,也就是所谓“slop forks”;更激进的猜测是,框架本身可能会消亡,因为框架真正值钱的是沉淀下来的庞大知识,而这些知识未来可能被蒸馏成 skills 或某种新标准。

URL:
https://maxleiter.com/blog/thank-u-next thank u, next | Max Leiter
《浏览器主线程很昂贵:高性能前端优化实战指南》

标签:
#前端 #Web性能 #浏览器原理 #JavaScript #渲染管线 #WebWorker #动画优化 #交互优化 #性能调优

总结:

本文深入剖析了浏览器主线程作为稀缺资源的工作原理,指出前端性能问题的根源往往不是代码速度慢,而是主线程被长时间占用导致界面冻结。文章系统性地介绍了两大类优化策略:在主线程上"精打细算"(拆分、批处理、优先级排序、延迟执行),以及"完全不用主线程"(利用合成器线程、Web Worker、消除不必要的工作),并通过大量交互式 Demo 帮助读者直观理解每种技术的实际效果。

文章要点:

1. 主线程是性能瓶颈的核心:主线程同时负责运行 JavaScript、样式计算、布局、绘制和事件处理,所有工作排队串行执行。60Hz 屏幕每帧预算约 16.6ms,实际可用仅约 10ms,超过 50ms 的任务会导致界面卡顿。

2. 拆分(Splitting):将大任务切割成小片段,通过 setTimeout 或 requestAnimationFrame 让出主线程,让浏览器在间隙处理渲染和输入。注意过度拆分会产生额外开销,且 JSON.parse 等原子操作无法拆分。

3. 批处理(Batching):将频繁触发的事件(如滚动、输入)合并执行,使用防抖(debounce)和节流(throttle)减少重复劳动。React 的虚拟 DOM 本质上也是一种批处理机制。

4. 优先级排序(Prioritizing):通过自定义队列(基于 MessageChannel)实现任务插队机制,确保用户当前关注的操作(如点击预览图片)优先执行,采用"空闲时预处理,紧急时优先处理"的策略。

5. 延迟执行(Deferring):非必要工作延后处理,包括代码分割、使用 IntersectionObserver 实现虚拟列表(只渲染可视区域内容)、离屏时暂停动画等,避免一次性处理全部数据。

6. 利用合成器线程:使用 transform 和 opacity 代替 top、left、width 等触发布局的属性做动画,让动画在合成器线程运行,即使主线程繁忙也能保持流畅。

7. FLIP 动画技术:对于必须改变布局的动画(如列表重排),先测量初始和最终位置,通过反转和播放 transform 来实现平滑过渡,将布局计算限制为仅一次,动画过程交给合成器。

8. Web Worker 处理重计算:将图片处理、大数据解析等纯计算任务转移到 Worker 线程,通过 postMessage 的 Transferable 对象(如 ArrayBuffer)实现零拷贝数据传输,避免主线程冻结。

9. 消除不必要的工作:当数据流入速度超过处理能力时,采用丢弃(旧日志)、合并(只保留最新值)、跳过(缓存 memoization)三种策略,从源头减少工作量。

10. 避免布局抖动(Layout Thrashing):不要交替读写布局属性(如 offsetWidth),应先批量读取再批量写入,强制浏览器反复计算布局会严重阻塞主线程。

URL:
https://kciter.so/posts/the-expensive-main-thread/en/ The Browser's Main Thread Is Expensive | kciter.so
《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
《hucre:零依赖的电子表格引擎》

标签:
#Web开发 #TypeScript #电子表格 #Xlsx #Csv #Ods #数据转换 #零依赖 #流式处理 #数据验证 #无障碍访问

总结:

文章要点:
1. 核心定位:一个纯 TypeScript 编写的零依赖电子表格引擎,支持读写 XLSX、CSV、ODS、JSON、NDJSON、XML、HTML 等多种格式,可在 Node.js、Deno、Bun、浏览器、Cloudflare Workers 等任意平台运行
2. 极致轻量:完全支持 Tree Shaking,按需导入,CSV 模块仅 3.7KB gzip,完整库 129KB gzip,远小于 SheetJS(300KB)和 ExcelJS(500KB)
3. 多格式统一 API:通过 read() 自动检测格式,write() 支持 9 种输出格式(XLSX、ODS、CSV、TSV、JSON、NDJSON、XML、HTML、Markdown),大幅降低多格式处理的心智负担
4. 流式处理:支持 XLSX、CSV、NDJSON、ODS、XML 的流式读写,可处理百万级数据而不爆内存;300万行 XLSX 流式写入峰值内存仅 70MB,而增量写入器需要 1GB+
5. 功能全面:支持单元格样式、条件格式(13 种)、数据验证、超链接、图片(含 SVG)、图表(柱状/折线/饼图等)、数据透视表、迷你图、冻结窗格、密码保护、Excel 2024 原生复选框、模板引擎等
6. 往返保真:openXlsx/saveXlsx 路径可保留图表、VBA 宏、切片器、时间线过滤器等 hucre 不原生建模的部分,实现无损编辑他人文件
7. 数据验证与无障碍:内置 Schema 验证(类型强制、正则、枚举、范围),以及 WCAG 2.1 AA 无障碍审计(对比度检查、缺失替代文本、表头检测等)
8. 遗留格式支持:可读取 XLS(Excel 97-2003)和 XLSB(二进制 Excel)文件,自动检测格式
9. 开发体验友好:提供 Builder API 链式调用、对象简写读写(readObjects/writeObjects)、CLI 工具(格式转换、检查、验证)、单元格工具函数(行列转换、范围解析)
10. 明确的能力边界:不实现公式计算引擎、不支持 XLS/XLSB 写入、部分高级图表类型(气泡图/雷达图等)仅支持读取和往返、流式 ODS 写入不带样式

URL:https://github.com/productdevbook/hucre GitHub - productdevbook/hucre: Zero-dependency spreadsheet engine. Read & write XLSX, CSV, ODS. Pure TypeScript, works everywhere.
《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
《5 个实用的 npx 辅助工具》

标签:
#Web开发 #NodeJs #命令行工具 #Npx #前端工程化 #代码质量 #Markdown #图片优化 #依赖管理 #拼写检查

总结:

文章要点:
1. cspell:一个拼写检查器,适合快速排查拼写错误,建议搭配配置文件使用自定义白名单,运行方式如 npx cspell **/*.md
2. markdown-link-check:专门检查 Markdown 文件中的链接是否有效,能帮助防止链接失效,推荐配合配置文件使用
3. image-guard:作者自己开发的工具,用于自动化近无损图片压缩,也适合在命令行中快速压缩图片,运行 npx image-guard 即可
4. npm-check-updates:快速检查 package.json 中的依赖是否有更新版本,适合在新仓库工作或手动处理依赖更新时使用
5. knip:功能比 npm-check-updates 更广,还能检查未使用的文件和导出,但文件和导出检查可能会有误报,运行 npx knip 即可

URL:https://meiert.com/blog/5-npx-helpers/ 5 Useful npx Helpers
《前端状态管理的真相与迷思》

标签:#前端 #Web开发 #React #状态管理 #Redux #Zustand #Jotai #MobX #CRDT #离线优先 #实时协作 #前端架构

总结:
作者犀利指出,React生态中流行的"状态管理"库(Redux、Zustand、MobX等)本质上只是状态传播与通知系统,而非真正的状态管理。真正的状态管理必须包含时间维度与顺序概念,能正确应用变更并解决冲突。作者推荐转向Y.js、Zero、Fluid等基于CRDT或OT的时序感知系统,它们天然支持离线优先与实时协作,才是前端数据层的未来方向。

文章要点:
1. 那些我们天天用的Redux、Zustand、MobX,本质上更像"消息广播员"而不是"状态管家"——它们能通知组件更新,却搞不定时间顺序和冲突解决
2. React自己也不是状态管理系统,整个前端圈把这个词用得太随意,导致大家一直在用错误的工具硬撑复杂场景
3. 真正的状态管理必须懂"时间"和"顺序",就像分布式系统用向量时钟给事件排队,没有时间概念就谈不上管理
4. 值得庆幸的是,Y.js、Zero、Fluid这类基于CRDT和操作变换的工具已经相当成熟,它们天生会处理冲突,离线和实时协作都是顺手的事
5. 当我们把数据层从"发通知"升级到"管时序"后,离线优先和实时协作不再是昂贵的附加功能,而是正确架构带来的自然馈赠

URL:
https://infrequently.org/2026/07/state-management
《Color.js:认真对待颜色这件事》

标签:#前端 #Web开发 #ColorJS #CSS_Color_Level_4 #颜色空间转换 #色域映射 #DeltaE #TreeShakeable #NPM库 #开源项目 #Lea_Verou #颜色插值

总结:
由CSS颜色规范编辑者Lea_Verou和Chris_Lilley打造的专业颜色处理库,支持Lab/LCh、OKLab/OKLCh、Display_P3等海量颜色空间,完整兼容CSS_Color_Level_4。提供真正的色域映射、多种DeltaE色差算法和色度适应方法,API清晰易用且支持链式操作。模块化设计可tree-shake,零依赖,已被Sass、Open_Props、axe等知名项目采用,NPM累计下载超2.46亿次。

文章要点:
1. 出身"正规军"——两位作者正是CSS颜色规范的编辑者,对颜色科学的理解刻在DNA里,不是随便写写的玩具库
2. 颜色空间全家桶——Lab/LCh、OKLab/OKLCh、sRGB家族、Display_P3、Jzazbz、REC.2100等统统支持,转换随心所欲
3. 科学严谨不糊弄——真正的色域映射而非粗暴裁剪,多种DeltaE色差计算和色度适应算法,专业度拉满
4. API好用又灵活——面向对象+静态函数双模式,链式操作丝滑流畅,还能按需引入模块做tree-shake,包体积可控
5. 业界认可度超高——浏览器用它测试CSS_Color_4/5实现,Sass、Open_Props、axe都在用,NPM下载量突破2.46亿
6. 生态还在扩张中——除了核心库,还在孵化Color_Elements网页组件、Color_Apps工具集和Color_Palettes配色研究项目

URL:https://colorjs.io
《前端框架基准测试平台》

标签:#前端 #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
《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
《原生JSON模块终于成为现实》

标签:#JavaScript #ESModules #JSON #Web标准

总结:本文介绍了JavaScript平台原生支持JSON模块导入的新特性。通过使用import attributes语法with { type: "json" },开发者现在可以在浏览器、Node.js、Deno和Bun中直接导入JSON文件,无需构建工具转换。这标志着从构建时模拟到运行时原生支持的转变,使模块系统更加显式和可扩展。

文章要点:
- 使用import config from "./config.json" with { type: "json" }语法实现原生JSON导入,替代了以往需要打包工具转换的方式
- 动态导入同样支持:await import("./config.json", { with: { type: "json" } })
- 导入的JSON会被解析一次并缓存,多次导入返回同一对象实例(a === b为true)
- 浏览器仍需服务器返回Content-Type: application/json,并遵循CORS规则
- 与打包工具方案对比:原生方案在运行时获取文件,而打包工具通常在构建时内联JSON
- 此特性不仅限于JSON,已扩展支持CSS模块脚本(with { type: "css" }),为未来其他结构化模块类型建立模式
- 现代浏览器、Node.js、Deno、Bun均已支持该特性,但打包工具在代码分割、资源哈希等方面仍有价值

文章URL:https://allthingssmitty.com/2026/03/16/native-json-modules-are-finally-real/
 
 
Back to Top