<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Web前端开发 | 锤子前端</title><description>Now vibe coding, so learning hammer FE ?</description><link>https://channel.meo-ai.com</link><item><title>《Gr8r Studio：一款平静、结构化的项目管理工作台》</title><link>https://channel.meo-ai.com/posts/719</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/719</guid><pubDate>Wed, 21 Oct 2026 15:13:34 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《Gr8r Studio：一款平静、结构化的项目管理工作台》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;br /&gt;&lt;a href=&quot;/search/result?q=%23%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86&quot; title=&quot;#开源项目管理&quot;&gt;#开源项目管理&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Web%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91&quot; title=&quot;#Web前端开发&quot;&gt;#Web前端开发&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E4%BB%BB%E5%8A%A1%E7%9C%8B%E6%9D%BF&quot; title=&quot;#任务看板&quot;&gt;#任务看板&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E7%BA%AFES%E6%A8%A1%E5%9D%97&quot; title=&quot;#纯ES模块&quot;&gt;#纯ES模块&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Vite%E6%9E%84%E5%BB%BA&quot; title=&quot;#Vite构建&quot;&gt;#Vite构建&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;Gr8r Studio 是一个开源的项目管理应用，提供首页仪表盘、收件箱、我的任务和多视图项目管理（看板/列表/表格/日历/时间线/文件），以及成员、团队、动态和设置等完整功能；它完全用原生 JavaScript ES 模块和 CSS 构建，无任何 UI 框架和运行时依赖，仅由 Vite 打包。&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;1. 功能齐全：包含仪表盘、收件箱、我的任务，以及看板、列表、表格、日历、时间线、文件六种项目视图。&lt;br /&gt;2. 零框架零依赖：纯 JS ES 模块 + CSS 实现，不引入任何 UI 框架或运行时依赖。&lt;br /&gt;3. 结构清晰：src 目录按 styles、core（状态与主题）、ui、shell（路由与布局）、views、overlays、features、actions 分层组织。&lt;br /&gt;4. 工程化完善：内置 ESLint + Prettier 校验，CI 在每次推送和 PR 时跑 lint、格式检查和生产构建。&lt;br /&gt;5. 可直接预览：仓库附带演示数据（data/seed.js）和 README 截图，vercel.json 配置了一键构建部署到 Vercel。&lt;br /&gt;6. 上手门槛低：仅需 Node.js 18+（.nvmrc 固定 22），适合作为学习现代前端工程化的参考项目。&lt;br /&gt;&lt;br /&gt;URL：&lt;a href=&quot;https://github.com/gr8rstudio/gr8r-studio&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://github.com/gr8rstudio/gr8r-studio&quot;&gt;https://github.com/gr8rstudio/gr8r-studio&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://github.com/gr8rstudio/gr8r-studio&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;Gr8r Studio: a calm, structured project management workspace. Vite + plain ES modules. - gr8rstudio/gr8r-studio&quot;&gt;
  
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;GitHub&lt;/div&gt;
  &lt;img class=&quot;link_preview_image&quot; alt=&quot;GitHub - gr8rstudio/gr8r-studio: Gr8r Studio: a calm, structured project management workspace. Vite + plain ES modules.&quot; src=&quot;/static/https://cdn4.telesco.pe/file/lsyDaUZZK7Mh0KpinQPq2ro9CGd5daBl4eD7phfywW6zBBYd6FyiPrGtXdug6W_jzOzNaC-XEyJk7v_6OrcJZp-joOY6HMzW1_Lo5pMuUDoZdOPzx6AULrINl0zC4p2S4MfkqKN3hkfCXFrp8H5X6Kn12N4tJOjJP2-0TycEw2kfuPDVXcOsFzq1qXXEn6TkFx3z8Ywyo8eK-aKEPmNomozRaCS8fKt9wkSPf0VAOhdyqt4TF3CyV-g3qKYMPZvWQ5uY25X6CWrcKrVwas778b2zggXLj5Y2pRNRHLp9_VlmQkuj3KjHGm9CJAs1rTqLd-LzTV8VJ_wL-dgy9mbUEg.jpg&quot; width=&quot;1200&quot; height=&quot;630&quot; loading=&quot;eager&quot; /&gt;
  &lt;div class=&quot;link_preview_title&quot;&gt;GitHub - gr8rstudio/gr8r-studio: Gr8r Studio: a calm, structured project management workspace. Vite + plain ES modules.&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;Gr8r Studio: a calm, structured project management workspace. Vite + plain ES modules. - gr8rstudio/gr8r-studio&lt;/div&gt;
&lt;/a&gt;</content:encoded></item><item><title>《框架还重要吗？》</title><link>https://channel.meo-ai.com/posts/708</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/708</guid><pubDate>Sun, 20 Sep 2026 02:45:28 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《框架还重要吗？》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;br /&gt;&lt;a href=&quot;/search/result?q=%23%E7%BC%96%E7%A8%8B&quot; title=&quot;#编程&quot;&gt;#编程&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Web%E5%BC%80%E5%8F%91&quot; title=&quot;#Web开发&quot;&gt;#Web开发&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23AI%E7%BC%96%E7%A8%8B&quot; title=&quot;#AI编程&quot;&gt;#AI编程&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E5%89%8D%E7%AB%AF%E6%A1%86%E6%9E%B6&quot; title=&quot;#前端框架&quot;&gt;#前端框架&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23React&quot; title=&quot;#React&quot;&gt;#React&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B&quot; title=&quot;#软件工程&quot;&gt;#软件工程&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%8A%80%E6%9C%AF%E8%B6%8B%E5%8A%BF&quot; title=&quot;#技术趋势&quot;&gt;#技术趋势&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23VibeCoding&quot; title=&quot;#VibeCoding&quot;&gt;#VibeCoding&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;&lt;br /&gt;这是一篇探讨在 AI 编程时代 Web 框架是否仍然重要的深度分析文章。作者 Brooks Lybrand 作为拥有三年开源框架开发经验的前端工程师，针对&quot;模型已经足够好，框架选择不再重要&quot;的流行观点进行了系统性反驳，论证了框架在提供抽象、结构和约束方面的核心价值，并呼吁行业继续创新和构建新框架。&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;&lt;br /&gt;1. **对&quot;React 已赢&quot;论的质疑**：作者指出当前流行观点认为由于 LLM 训练数据中 React 代码最多，模型最熟悉 React，因此无需尝试其他框架。但他认为这种逻辑存在矛盾——如果框架真的不重要，那连 React 都不需要，直接用 Web Components 或让 AI 生成原生代码即可。&lt;br /&gt;&lt;br /&gt;2. **框架的本质价值**：作者将框架的价值精炼为三点：**提供抽象（Abstractions）、结构（Structure）和约束（Constraints）**。这些价值不仅适用于人类开发者，对 AI 编程同样关键——良好的抽象能避免 AI 重复造轮子或创建混乱的临时方案；清晰的结构帮助 AI 生成可维护的代码；明确的约束（如类型检查、测试）能防止 AI 在迭代中破坏系统。&lt;br /&gt;&lt;br /&gt;3. **AI 时代框架的隐性存在**：引用 React 核心团队成员 Ricky Hanlon 的观点&quot;你要么使用框架，要么构建框架&quot;，作者强调即使不显式选择框架，AI 在生成代码时也会隐式地创建框架。与其让 AI 生成一个缺乏维护、充满临时补丁的&quot;隐性框架&quot;，不如使用经过实战检验、文档完善的开源框架。&lt;br /&gt;&lt;br /&gt;4. **开发者体验（DX）的重构**：通过分析 HMR（热模块替换）、TypeScript 和 &lt;code&gt;useEffect&lt;/code&gt; 等具体技术，作者说明某些传统 DX 功能对人类开发者的价值正在转变，但对 AI 编程仍至关重要。例如 TypeScript 的类型约束能有效防止 AI 在复杂应用中引入错误，而 &lt;code&gt;useEffect&lt;/code&gt; 这类强大但易误用的抽象则应该避免让 AI 随意使用。&lt;br /&gt;&lt;br /&gt;5. **框架战争的终结与新机遇**：作者认为 2013-2024 年的&quot;框架战争&quot;已经结束，人们不再渴望为框架争论，但这不意味着框架不再重要。他指出当前框架领域仍存在明显不足，特别是缺乏真正全栈、基于 Web 标准、易于 AI 协作且代码可理解的 JavaScript 框架。&lt;br /&gt;&lt;br /&gt;6. **对未来的呼吁**：尽管承认 AI 正在重塑软件开发，且没人知道其长期影响，作者仍坚持认为认为&quot;所有问题都已解决&quot;是一种颓废的态度。他呼吁继续构建新框架，探索更好的抽象和模式，而不是停留在&quot;现有框架足够好&quot;的舒适区。&lt;br /&gt;&lt;br /&gt;URL：&lt;br /&gt;&lt;a href=&quot;https://brookslybrand.com/posts/do-frameworks-matter-anymore/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://brookslybrand.com/posts/do-frameworks-matter-anymore/&quot;&gt;https://brookslybrand.com/posts/do-frameworks-matter-anymore/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&amp;gt; 个人觉得有点片面化，remix 脱离 react 转而用 preact 自创轮子</content:encoded></item><item><title>《浏览器主线程很昂贵：高性能前端优化实战指南》</title><link>https://channel.meo-ai.com/posts/706</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/706</guid><pubDate>Thu, 10 Sep 2026 23:29:33 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《浏览器主线程很昂贵：高性能前端优化实战指南》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;br /&gt;&lt;a href=&quot;/search/result?q=%23%E5%89%8D%E7%AB%AF&quot; title=&quot;#前端&quot;&gt;#前端&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Web%E6%80%A7%E8%83%BD&quot; title=&quot;#Web性能&quot;&gt;#Web性能&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%B5%8F%E8%A7%88%E5%99%A8%E5%8E%9F%E7%90%86&quot; title=&quot;#浏览器原理&quot;&gt;#浏览器原理&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23JavaScript&quot; title=&quot;#JavaScript&quot;&gt;#JavaScript&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%B8%B2%E6%9F%93%E7%AE%A1%E7%BA%BF&quot; title=&quot;#渲染管线&quot;&gt;#渲染管线&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23WebWorker&quot; title=&quot;#WebWorker&quot;&gt;#WebWorker&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E5%8A%A8%E7%94%BB%E4%BC%98%E5%8C%96&quot; title=&quot;#动画优化&quot;&gt;#动画优化&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E4%BA%A4%E4%BA%92%E4%BC%98%E5%8C%96&quot; title=&quot;#交互优化&quot;&gt;#交互优化&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%80%A7%E8%83%BD%E8%B0%83%E4%BC%98&quot; title=&quot;#性能调优&quot;&gt;#性能调优&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;&lt;br /&gt;本文深入剖析了浏览器主线程作为稀缺资源的工作原理，指出前端性能问题的根源往往不是代码速度慢，而是主线程被长时间占用导致界面冻结。文章系统性地介绍了两大类优化策略：在主线程上&quot;精打细算&quot;（拆分、批处理、优先级排序、延迟执行），以及&quot;完全不用主线程&quot;（利用合成器线程、Web Worker、消除不必要的工作），并通过大量交互式 Demo 帮助读者直观理解每种技术的实际效果。&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;&lt;br /&gt;1. &lt;b&gt;主线程是性能瓶颈的核心&lt;/b&gt;：主线程同时负责运行 JavaScript、样式计算、布局、绘制和事件处理，所有工作排队串行执行。60Hz 屏幕每帧预算约 16.6ms，实际可用仅约 10ms，超过 50ms 的任务会导致界面卡顿。&lt;br /&gt;&lt;br /&gt;2. &lt;b&gt;拆分（Splitting）&lt;/b&gt;：将大任务切割成小片段，通过 &lt;code&gt;setTimeout&lt;/code&gt; 或 &lt;code&gt;requestAnimationFrame&lt;/code&gt; 让出主线程，让浏览器在间隙处理渲染和输入。注意过度拆分会产生额外开销，且 &lt;code&gt;JSON.parse&lt;/code&gt; 等原子操作无法拆分。&lt;br /&gt;&lt;br /&gt;3. &lt;b&gt;批处理（Batching）&lt;/b&gt;：将频繁触发的事件（如滚动、输入）合并执行，使用防抖（debounce）和节流（throttle）减少重复劳动。React 的虚拟 DOM 本质上也是一种批处理机制。&lt;br /&gt;&lt;br /&gt;4. &lt;b&gt;优先级排序（Prioritizing）&lt;/b&gt;：通过自定义队列（基于 &lt;code&gt;MessageChannel&lt;/code&gt;）实现任务插队机制，确保用户当前关注的操作（如点击预览图片）优先执行，采用&quot;空闲时预处理，紧急时优先处理&quot;的策略。&lt;br /&gt;&lt;br /&gt;5. &lt;b&gt;延迟执行（Deferring）&lt;/b&gt;：非必要工作延后处理，包括代码分割、使用 &lt;code&gt;IntersectionObserver&lt;/code&gt; 实现虚拟列表（只渲染可视区域内容）、离屏时暂停动画等，避免一次性处理全部数据。&lt;br /&gt;&lt;br /&gt;6. &lt;b&gt;利用合成器线程&lt;/b&gt;：使用 &lt;code&gt;transform&lt;/code&gt; 和 &lt;code&gt;opacity&lt;/code&gt; 代替 &lt;code&gt;top&lt;/code&gt;、&lt;code&gt;left&lt;/code&gt;、&lt;code&gt;width&lt;/code&gt; 等触发布局的属性做动画，让动画在合成器线程运行，即使主线程繁忙也能保持流畅。&lt;br /&gt;&lt;br /&gt;7. &lt;b&gt;FLIP 动画技术&lt;/b&gt;：对于必须改变布局的动画（如列表重排），先测量初始和最终位置，通过反转和播放 &lt;code&gt;transform&lt;/code&gt; 来实现平滑过渡，将布局计算限制为仅一次，动画过程交给合成器。&lt;br /&gt;&lt;br /&gt;8. &lt;b&gt;Web Worker 处理重计算&lt;/b&gt;：将图片处理、大数据解析等纯计算任务转移到 Worker 线程，通过 &lt;code&gt;postMessage&lt;/code&gt; 的 Transferable 对象（如 &lt;code&gt;ArrayBuffer&lt;/code&gt;）实现零拷贝数据传输，避免主线程冻结。&lt;br /&gt;&lt;br /&gt;9. &lt;b&gt;消除不必要的工作&lt;/b&gt;：当数据流入速度超过处理能力时，采用丢弃（旧日志）、合并（只保留最新值）、跳过（缓存 memoization）三种策略，从源头减少工作量。&lt;br /&gt;&lt;br /&gt;10. &lt;b&gt;避免布局抖动（Layout Thrashing）&lt;/b&gt;：不要交替读写布局属性（如 &lt;code&gt;offsetWidth&lt;/code&gt;），应先批量读取再批量写入，强制浏览器反复计算布局会严重阻塞主线程。&lt;br /&gt;&lt;br /&gt;URL：&lt;br /&gt;&lt;a href=&quot;https://kciter.so/posts/the-expensive-main-thread/en/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://kciter.so/posts/the-expensive-main-thread/en/&quot;&gt;https://kciter.so/posts/the-expensive-main-thread/en/&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://kciter.so/posts/the-expensive-main-thread/en&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;What comes to mind when you hear &amp;quot;frontend optimization&amp;quot;? For most of us it&apos;s things like reducing network requests, shrinking the bundle,…&quot;&gt;
  
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;kciter.so&lt;/div&gt;
  &lt;img class=&quot;link_preview_image&quot; alt=&quot;The Browser&apos;s Main Thread Is Expensive | kciter.so&quot; src=&quot;/static/https://cdn4.telesco.pe/file/M7yU5vwQA68lMlS1cfdCD6jbRYwY9CREzH7USkG-XnIJ-92aRhup9RXNnO-g64Vxfap3MjPkx0cCo96NP-RjpcI4H_rJwlcDlA62JBGitYmRKNXswN5xB4H1dzZdCGIfT0fIBu6d73jdr1NkSwaqfMPt5I0Z9eoElaT8S5nD0XHwSDcuryH0fAIblnFZ66jz_7tyCgmbw6VRF3GGck-RnU6dkTlCk1pUUVszRfFsL5eDWC_yqgUk3CO4OnE3hvOs2QOUFVDFoBUS1AFVf8mIT7eUh_DxBPiyesG1EIm1evmcWVms-2Fe3vtSm7qBfY004nIb5_5hD1C9jR0NfF-HHQ.jpg&quot; width=&quot;1200&quot; height=&quot;630&quot; loading=&quot;eager&quot; /&gt;
  &lt;div class=&quot;link_preview_title&quot;&gt;The Browser&apos;s Main Thread Is Expensive | kciter.so&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;What comes to mind when you hear &quot;frontend optimization&quot;? For most of us it&apos;s things like reducing network requests, shrinking the bundle,…&lt;/div&gt;
&lt;/a&gt;</content:encoded></item><item><title>《CSS 单位完全参考手册》</title><link>https://channel.meo-ai.com/posts/703</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/703</guid><pubDate>Wed, 02 Sep 2026 13:28:01 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《CSS 单位完全参考手册》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;br /&gt;&lt;a href=&quot;/search/result?q=%23%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91&quot; title=&quot;#前端开发&quot;&gt;#前端开发&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23CSS&quot; title=&quot;#CSS&quot;&gt;#CSS&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E5%93%8D%E5%BA%94%E5%BC%8F%E8%AE%BE%E8%AE%A1&quot; title=&quot;#响应式设计&quot;&gt;#响应式设计&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Web%E6%8E%92%E7%89%88&quot; title=&quot;#Web排版&quot;&gt;#Web排版&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E5%AE%B9%E5%99%A8%E6%9F%A5%E8%AF%A2&quot; title=&quot;#容器查询&quot;&gt;#容器查询&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E8%A7%86%E5%8F%A3%E5%8D%95%E4%BD%8D&quot; title=&quot;#视口单位&quot;&gt;#视口单位&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E5%AD%97%E4%BD%93%E7%9B%B8%E5%AF%B9%E5%8D%95%E4%BD%8D&quot; title=&quot;#字体相对单位&quot;&gt;#字体相对单位&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23CSS%E6%95%B0%E5%AD%A6%E5%87%BD%E6%95%B0&quot; title=&quot;#CSS数学函数&quot;&gt;#CSS数学函数&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;&lt;br /&gt;这是一本由 Mykola Ptushchuk 编写的交互式 CSS 单位参考手册，涵盖从基础像素到现代容器查询单位的所有 CSS 度量单位。全书共 7 章，每个单位都配有实时浏览器演示，可在线调整参数观察实际效果，并提供完整 PDF 下载。&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;&lt;br /&gt;1. 全书结构清晰，覆盖七大单位家族：从绝对单位（px）、字体相对单位（em/rem/ch/cap 等）、视口单位（vw/vh 及小/大/动态视口变体）、容器查询单位（cqi/cqw 等）、百分比、数学函数，到角度单位，形成完整的 CSS 度量体系地图。&lt;br /&gt;&lt;br /&gt;2. 视口单位家族详解：现代移动端浏览器 UI 会动态收缩/展开，因此视口单位分为默认（等价于大视口）、小视口（sv，假设浏览器控件展开）、大视口（lv，假设控件收起）和动态视口（dv，实时状态）四大家族，解决了 &lt;code&gt;100vh&lt;/code&gt; 在移动端全屏布局中常见的&quot;被地址栏遮挡&quot;难题。&lt;br /&gt;&lt;br /&gt;3. 容器查询单位让组件真正可移植：&lt;code&gt;cqi&lt;/code&gt;/&lt;code&gt;cqw&lt;/code&gt; 等单位测量的是组件所在的&quot;查询容器&quot;而非整个视口，使同一个卡片组件在 300px 侧边栏和 700px 主栏中能自动呈现不同布局，无需媒体查询或额外类名，实现了&quot;组件响应自身上下文&quot;而非&quot;响应整个页面&quot;的范式转变。&lt;br /&gt;&lt;br /&gt;4. 字体相对单位不止 em/rem：除了常见的 &lt;code&gt;em&lt;/code&gt;（当前元素字体大小）和 &lt;code&gt;rem&lt;/code&gt;（根元素字体大小），还有 &lt;code&gt;ch&lt;/code&gt;（数字 0 的字宽，适合设置最佳阅读行宽如 &lt;code&gt;65ch&lt;/code&gt;）、&lt;code&gt;cap&lt;/code&gt;（大写字母高度，适合图标与标题对齐）、&lt;code&gt;lh&lt;/code&gt;（当前行高作为长度）等精细排版单位，以及对应的根元素变体（rch/rex/rcap 等，2026 年 1 月才在 Firefox 中补齐，至此全浏览器支持）。&lt;br /&gt;&lt;br /&gt;5. CSS 数学函数是单位的粘合剂：&lt;code&gt;calc()&lt;/code&gt; 可混合不同单位（如 &lt;code&gt;100% - 240px&lt;/code&gt;），&lt;code&gt;clamp()&lt;/code&gt; 实现流体排版（如 &lt;code&gt;clamp(2rem, 5vw + 1rem, 4rem)&lt;/code&gt;），&lt;code&gt;min()/max()&lt;/code&gt; 取极值，还有三角函数（&lt;code&gt;sin/cos/tan&lt;/code&gt;）可用于无 JS 的圆形布局，指数函数（&lt;code&gt;pow/sqrt&lt;/code&gt;）可构建模块化字号比例系统。&lt;br /&gt;&lt;br /&gt;6. 实用选型建议：正文用 &lt;code&gt;rem&lt;/code&gt; 尊重用户偏好，组件内部比例用 &lt;code&gt;em&lt;/code&gt; 保持缩放一致性，&lt;code&gt;line-height&lt;/code&gt; 推荐无单位写法（如 &lt;code&gt;1.5&lt;/code&gt;）以便作为乘数继承，&lt;code&gt;clamp()&lt;/code&gt; 的流体值中务必包含 &lt;code&gt;rem&lt;/code&gt; 项以确保缩放无障碍性。&lt;br /&gt;&lt;br /&gt;7. 交互式学习体验：每个单位都配有可拖拽、可滑动的实时演示，直接在浏览器中观察单位变化效果，将抽象概念转化为直观体验，并支持下载完整 PDF 离线阅读。&lt;br /&gt;&lt;br /&gt;URL：&lt;br /&gt;&lt;a href=&quot;https://cssunits.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://cssunits.com/&quot;&gt;https://cssunits.com/&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://cssunits.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;A complete interactive reference to every CSS measurement unit. From the basics of px and rem to the nuances of svh, dvh, and cqw.&quot;&gt;
  
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;CSS Units&lt;/div&gt;
  &lt;img class=&quot;link_preview_image&quot; alt=&quot;CSS Units — The Complete Reference&quot; src=&quot;/static/https://cdn4.telesco.pe/file/AT6h8pjfCkp_NRrPaD5TkS-87t7UrKQHXNF-NoWZhC1pDd2HlAyJu29y8zrNUSI82Uu4vmjOKmJ65DbVIkgB6uqrGGa-ZuTI3f-39CT-anyXVvjvGsSdF_tocD3xH_AiGgJd3mLLtOLdqEeHS5nz7RYNXG7MzBU1uUM26Jj87nW5fExS5Wf2N0XTxn_zUVx8joWV_wnZmH10otZqAeKHqBiqwtXjV-99EFtl3BiB1VU9OPiiBARJAypdJ9hDcE8Ys3fDSdSXMKR8GPU6Ruy0DvDyvBoyp59ibi5_PX-X4KQrI0-ZueMxN-GdN_e5wlBs2MbhxplSQWiuq8cov38NdQ.jpg&quot; width=&quot;1200&quot; height=&quot;630&quot; loading=&quot;eager&quot; /&gt;
  &lt;div class=&quot;link_preview_title&quot;&gt;CSS Units — The Complete Reference&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;A complete interactive reference to every CSS measurement unit. From the basics of px and rem to the nuances of svh, dvh, and cqw.&lt;/div&gt;
&lt;/a&gt;</content:encoded></item><item><title>《视觉回归测试：你可能还没跑起来的最重要测试》</title><link>https://channel.meo-ai.com/posts/702</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/702</guid><pubDate>Mon, 31 Aug 2026 01:33:14 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《视觉回归测试：你可能还没跑起来的最重要测试》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;br /&gt;&lt;a href=&quot;/search/result?q=%23%E5%89%8D%E7%AB%AF%E6%B5%8B%E8%AF%95&quot; title=&quot;#前端测试&quot;&gt;#前端测试&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E8%A7%86%E8%A7%89%E5%9B%9E%E5%BD%92%E6%B5%8B%E8%AF%95&quot; title=&quot;#视觉回归测试&quot;&gt;#视觉回归测试&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95&quot; title=&quot;#自动化测试&quot;&gt;#自动化测试&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E8%B4%A8%E9%87%8F%E4%BF%9D%E8%AF%81&quot; title=&quot;#质量保证&quot;&gt;#质量保证&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Web%E5%BC%80%E5%8F%91&quot; title=&quot;#Web开发&quot;&gt;#Web开发&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;&lt;br /&gt;文章系统介绍了视觉回归测试（Visual Regression Testing）的概念、重要性、工作原理、主流工具及实践建议。核心观点是：即使功能测试覆盖率100%，应用仍可能在视觉上&quot;看起来完全损坏&quot;。视觉回归测试通过截图对比基线，捕捉传统测试无法发现的视觉缺陷，在AI生成代码时代尤为重要。&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;&lt;br /&gt;1. 为什么视觉测试不可或缺：单元测试、集成测试和E2E测试只验证功能逻辑，不检查实际视觉呈现。CSS类名测试是代码异味，因为即使类名正确，实际渲染仍可能因样式冲突、加载失败等出问题。&lt;br /&gt;&lt;br /&gt;2. 工作原理超直观：在真实浏览器中渲染页面/组件并截图，与基线快照对比。匹配则通过，不匹配则在CI/CD中标记失败，需人工审核确认是否为预期变更。&lt;br /&gt;&lt;br /&gt;3. 能抓住哪些&quot;隐形&quot;Bug：组件一处修改意外影响其他使用位置、CSS变更导致的布局错位、响应式问题、跨浏览器渲染差异、字体/图片加载失败等。作者曾靠它避免了一个SVG图标在20处地方颜色错误的生产事故。&lt;br /&gt;&lt;br /&gt;4. 三大主流工具怎么选：Percy（适合全页截图，与Playwright/Cypress/Puppeteer兼容，UI体验好但用量大时贵）；Chromatic（Storybook生态，组件级截图，免费 tier 友好）；Vitest Browser Mode（内置截图测试，但缺少审核UI，适合组件级）。&lt;br /&gt;&lt;br /&gt;5. 接入CI/CD很轻松：通常在现有E2E测试中插入一行代码即可，如Playwright中调用&lt;code&gt;percySnapshot()&lt;/code&gt;或Chromatic的&lt;code&gt;takeSnapshot()&lt;/code&gt;，无需重构测试架构。&lt;br /&gt;&lt;br /&gt;6. 避免&quot; flaky 测试&quot;的实用技巧：确保页面完全加载后再截图；用CSS隐藏动画区域；对动态数据（如日期、&quot;5天前&quot;）设置忽略区域；避免对内容过多的整页盲目截图，要有选择性地测试。&lt;br /&gt;&lt;br /&gt;7. AI时代的刚需：随着AI生成代码的普及，视觉回归测试将变得更加关键，能帮助团队快速发现AI改动带来的意外视觉副作用。&lt;br /&gt;&lt;br /&gt;URL：&lt;br /&gt;&lt;a href=&quot;https://howtotestfrontend.com/resources/visual-regression-testing-introduction-guide&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://howtotestfrontend.com/resources/visual-regression-testing-introduction-guide&quot;&gt;https://howtotestfrontend.com/resources/visual-regression-testing-introduction-guide&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://howtotestfrontend.com/resources/visual-regression-testing-introduction-guide&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;Your tests can pass while your app looks broken. Visual regression testing catches the UI bugs that unit, integration and E2E tests miss - and here is how to set it up with Percy, Chromatic or Vitest Browser Mode&quot;&gt;
  
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;How To Test Frontend&lt;/div&gt;
  &lt;img class=&quot;link_preview_image&quot; alt=&quot;Visual Regression Testing: The Most Important Test You&apos;re Not Running&quot; src=&quot;/static/https://cdn4.telesco.pe/file/CGxxW8nFXdB1gDL_CmmjoycXKoB0saZWUUhDJkscoSgYoiSkQwGh5RLAsUsSHyUowqYgZU8yVxp1QoCCLPoHo83cfiGoPoZpF_vbxN3zTDgy8euVFCg-s4mBuWJy3HcLjxeWXsDpvCX26HZ3a--_JOe5_bEecG1TUOYgseIPLQBLI5UzsKFer4Cb9iAMmLvfirC3bIcvYOJ91sVYWVVj1LJ1QdENqkQNVsQR10Aq-g8cfhKasffOcUzWNw0YcqSZpGJpQC58xesUdhvHtK2cXQChLKCqtbQVDD9ar6aOjVCkfkZoJb_W86D4ZBj4eXcrEVXuJgvp5YtnAcvaC6sjow.jpg&quot; width=&quot;1200&quot; height=&quot;630&quot; loading=&quot;eager&quot; /&gt;
  &lt;div class=&quot;link_preview_title&quot;&gt;Visual Regression Testing: The Most Important Test You&apos;re Not Running&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;Your tests can pass while your app looks broken. Visual regression testing catches the UI bugs that unit, integration and E2E tests miss - and here is how to set it up with Percy, Chromatic or Vitest Browser Mode&lt;/div&gt;
&lt;/a&gt;</content:encoded></item><item><title>《前端状态管理的真相与迷思》</title><link>https://channel.meo-ai.com/posts/686</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/686</guid><pubDate>Mon, 27 Jul 2026 02:05:27 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《前端状态管理的真相与迷思》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;a href=&quot;/search/result?q=%23%E5%89%8D%E7%AB%AF&quot; title=&quot;#前端&quot;&gt;#前端&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Web%E5%BC%80%E5%8F%91&quot; title=&quot;#Web开发&quot;&gt;#Web开发&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23React&quot; title=&quot;#React&quot;&gt;#React&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E7%8A%B6%E6%80%81%E7%AE%A1%E7%90%86&quot; title=&quot;#状态管理&quot;&gt;#状态管理&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Redux&quot; title=&quot;#Redux&quot;&gt;#Redux&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Zustand&quot; title=&quot;#Zustand&quot;&gt;#Zustand&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Jotai&quot; title=&quot;#Jotai&quot;&gt;#Jotai&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23MobX&quot; title=&quot;#MobX&quot;&gt;#MobX&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23CRDT&quot; title=&quot;#CRDT&quot;&gt;#CRDT&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E7%A6%BB%E7%BA%BF%E4%BC%98%E5%85%88&quot; title=&quot;#离线优先&quot;&gt;#离线优先&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E5%AE%9E%E6%97%B6%E5%8D%8F%E4%BD%9C&quot; title=&quot;#实时协作&quot;&gt;#实时协作&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E5%89%8D%E7%AB%AF%E6%9E%B6%E6%9E%84&quot; title=&quot;#前端架构&quot;&gt;#前端架构&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;作者犀利指出，React生态中流行的&quot;状态管理&quot;库（Redux、Zustand、MobX等）本质上只是状态传播与通知系统，而非真正的状态管理。真正的状态管理必须包含时间维度与顺序概念，能正确应用变更并解决冲突。作者推荐转向Y.js、Zero、Fluid等基于CRDT或OT的时序感知系统，它们天然支持离线优先与实时协作，才是前端数据层的未来方向。&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;1. 那些我们天天用的Redux、Zustand、MobX，本质上更像&quot;消息广播员&quot;而不是&quot;状态管家&quot;——它们能通知组件更新，却搞不定时间顺序和冲突解决&lt;br /&gt;2. React自己也不是状态管理系统，整个前端圈把这个词用得太随意，导致大家一直在用错误的工具硬撑复杂场景&lt;br /&gt;3. 真正的状态管理必须懂&quot;时间&quot;和&quot;顺序&quot;，就像分布式系统用向量时钟给事件排队，没有时间概念就谈不上管理&lt;br /&gt;4. 值得庆幸的是，Y.js、Zero、Fluid这类基于CRDT和操作变换的工具已经相当成熟，它们天生会处理冲突，离线和实时协作都是顺手的事&lt;br /&gt;5. 当我们把数据层从&quot;发通知&quot;升级到&quot;管时序&quot;后，离线优先和实时协作不再是昂贵的附加功能，而是正确架构带来的自然馈赠&lt;br /&gt;&lt;br /&gt;URL：&lt;br /&gt;&lt;a href=&quot;https://infrequently.org/2026/07/state-management&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://infrequently.org/2026/07/state-management&quot;&gt;https://infrequently.org/2026/07/state-management&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://infrequently.org/2026/07/state-management&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;It is by no means the gravest linguistic crime of the React epoch,1 but &amp;quot;state management&amp;quot; grates like nails on chalkboard. A Socratic dialogue I keep having about it goes something like this:&quot;&gt;
  &lt;i class=&quot;link_preview_right_image&quot; style=&quot;background-image:url(&apos;https://cdn4.telesco.pe/file/ikJwW7XtmRLraCtYYCU98eth1-gW6tZABXURyVahlK4DeVCx2q4ZW-GpUv8pXhNBJynRgGNB-8pkhsrRb1oOdMPFQ9GcwYYYJyKx2_246dZIbRuP0VVRejifERHTEtfMqvEthY27WJRAS-5Wqp9SkPcVI_XNkHWmd9yRkmPOS34i-e-SS9uL9QOozGTnezpHvhfM5LMkxZSmNck0D9I18sQk-Zm2znuBFHlMYkTb-9fCqRfwK06uTvUVyuukqZ0-Tl-WjUVPiPkQ5dnPfXTv0vtZR_nYDtwwUmkU8y5MXoNTGMq_ZpaG-xLuD_jur7PA4b1tP0iV01K4Xg9BXiefFQ.jpg&apos;)&quot;&gt;&lt;/i&gt;
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;Infrequently Noted&lt;/div&gt;
  
  &lt;div class=&quot;link_preview_title&quot;&gt;The Absolute State of Management&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;It is by no means the gravest linguistic crime of the React epoch,1 but &quot;state management&quot; grates like nails on chalkboard. A Socratic dialogue I keep having about it goes something like this:&lt;/div&gt;
&lt;/a&gt;</content:encoded></item><item><title>《前端框架基准测试平台》</title><link>https://channel.meo-ai.com/posts/683</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/683</guid><pubDate>Fri, 24 Jul 2026 15:50:48 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《前端框架基准测试平台》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;a href=&quot;/search/result?q=%23%E5%89%8D%E7%AB%AF&quot; title=&quot;#前端&quot;&gt;#前端&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Web%E5%BC%80%E5%8F%91&quot; title=&quot;#Web开发&quot;&gt;#Web开发&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23FrameworkBenchmarks&quot; title=&quot;#FrameworkBenchmarks&quot;&gt;#FrameworkBenchmarks&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23PerformanceTesting&quot; title=&quot;#PerformanceTesting&quot;&gt;#PerformanceTesting&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23JavaScriptFrameworks&quot; title=&quot;#JavaScriptFrameworks&quot;&gt;#JavaScriptFrameworks&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23React&quot; title=&quot;#React&quot;&gt;#React&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Vue&quot; title=&quot;#Vue&quot;&gt;#Vue&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Svelte&quot; title=&quot;#Svelte&quot;&gt;#Svelte&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23SolidJS&quot; title=&quot;#SolidJS&quot;&gt;#SolidJS&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Preact&quot; title=&quot;#Preact&quot;&gt;#Preact&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Qwik&quot; title=&quot;#Qwik&quot;&gt;#Qwik&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Lit&quot; title=&quot;#Lit&quot;&gt;#Lit&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Angular&quot; title=&quot;#Angular&quot;&gt;#Angular&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23BundleSize&quot; title=&quot;#BundleSize&quot;&gt;#BundleSize&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23BuildTime&quot; title=&quot;#BuildTime&quot;&gt;#BuildTime&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23LighthouseScores&quot; title=&quot;#LighthouseScores&quot;&gt;#LighthouseScores&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23HMR&quot; title=&quot;#HMR&quot;&gt;#HMR&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23NPMStats&quot; title=&quot;#NPMStats&quot;&gt;#NPMStats&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23StackMatch&quot; title=&quot;#StackMatch&quot;&gt;#StackMatch&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;这是一个全自动化的前端框架基准测试平台，由开发者Alicia Sykes维护。项目用同一个天气应用在React、Vue、Svelte等12+个主流框架中实现，每晚自动跑分对比包体积、Lighthouse评分、加载速度、CPU内存占用、构建时间及HMR热更新速度。还整合了GitHub和NPM社区数据，并自带Stack Match智能推荐工具。所有原始数据开源可下载，帮你告别选型纠结！&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;1. 同一个天气应用，12+种框架实现——React、Vue、Svelte、Solid.js、Qwik、Lit等主流选手全部到场，公平对决&lt;br /&gt;2. 每晚自动跑分，数据新鲜出炉——包体积、Lighthouse性能分、FCP/LCP/TTI加载指标、CPU内存占用、构建时间、HMR速度全覆盖&lt;br /&gt;3. 社区数据一目了然——GitHub Stars、NPM月下载量、依赖数量、维护者人数、TS支持情况、许可证信息全整理好了&lt;br /&gt;4. 自带Stack Match智能推荐工具——填填项目偏好，就能get最适合你的框架，选型不再拍脑袋&lt;br /&gt;5. 完全开源透明——所有原始数据以JSON格式开放下载，测试用Playwright统一验证，结果可信可复现&lt;br /&gt;&lt;br /&gt;URL：[&lt;a href=&quot;https://framework-benchmarks.as93.net/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://framework-benchmarks.as93.net/&quot;&gt;https://framework-benchmarks.as93.net/&lt;/a&gt;](https://framework-benchmarks.as93.net/)&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://framework-benchmarks.as93.net/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;A comprehensive comparison of modern frontend frameworks&quot;&gt;
  
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;Framework Benchmarks&lt;/div&gt;
  &lt;img class=&quot;link_preview_image&quot; alt=&quot;Framework Benchmarks&quot; src=&quot;/static/https://cdn4.telesco.pe/file/qhLWj8AtS4OzFQUYDRUEf53TdwKQp2CXn2B0is2aXhMWVg5Ybd1rk9SHZBeBXPsBmDTQee_uB1AgYNxHabLEURpmm2VKK90oC75jkdplMkFcjQu9d6wBNe55qHrUqQTLsGqT8F4lZkyOiD9_Tq9dM4JnB2Fx-UXVbAaj2djbtNFVCikYTgJ-1s-ypfyqnbe65kZmMu_KKF3JLkc86uenpnlIs3CORuQJp3CMmGxfZ8K-fTMWd6dDGKEhuFPCPluQLgTOrp8dB_GIYDapHDk6X_ONKMEk8f92gtSA-xtbFdWts6kZyUxMN-SQ913f-OHgxpkPlTfqrBerD6eAMJeIwg.jpg&quot; width=&quot;1200&quot; height=&quot;630&quot; loading=&quot;eager&quot; /&gt;
  
  &lt;div class=&quot;link_preview_description&quot;&gt;A comprehensive comparison of modern frontend frameworks&lt;/div&gt;
&lt;/a&gt;</content:encoded></item><item><title>《为什么我放弃Next.js和RSC，回归传统SPA与独立后端》</title><link>https://channel.meo-ai.com/posts/654</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/654</guid><pubDate>Mon, 01 Jun 2026 00:06:54 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《为什么我放弃Next.js和RSC，回归传统SPA与独立后端》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;a href=&quot;/search/result?q=%23%E5%89%8D%E7%AB%AF&quot; title=&quot;#前端&quot;&gt;#前端&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Web%E5%BC%80%E5%8F%91&quot; title=&quot;#Web开发&quot;&gt;#Web开发&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23React&quot; title=&quot;#React&quot;&gt;#React&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23NextJS&quot; title=&quot;#NextJS&quot;&gt;#NextJS&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23React_Server_Components&quot; title=&quot;#React_Server_Components&quot;&gt;#React_Server_Components&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23SPA&quot; title=&quot;#SPA&quot;&gt;#SPA&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1&quot; title=&quot;#架构设计&quot;&gt;#架构设计&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E5%AE%89%E5%85%A8&quot; title=&quot;#安全&quot;&gt;#安全&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23TanStack&quot; title=&quot;#TanStack&quot;&gt;#TanStack&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Hono&quot; title=&quot;#Hono&quot;&gt;#Hono&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;&lt;br /&gt;作者回顾了自己从Next.js忠实用户到拥抱App Router/RSC，最终回归传统SPA+独立后端的完整历程。文章深入分析了RSC架构带来的心智负担、序列化开销和安全风险，结合2025-2026年多起严重CVE漏洞，论证了将渲染框架与安全边界解耦的必要性，并分享了当前基于React Router+Vite+Hono的简洁技术栈。&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;&lt;br /&gt;1. &lt;b&gt;Next.js的黄金时代&lt;/b&gt;：Pages Router时期心智模型清晰，服务端/客户端边界一目了然，文件路由简单易懂，部署零成本&lt;br /&gt;2. &lt;b&gt;App Router带来的混乱&lt;/b&gt;：Server/Client Component区分成为负担，&quot;use client&quot;指令传染性强，开发/构建/生产环境缓存行为不一致，服务端客户端边界变得不可见&lt;br /&gt;3. &lt;b&gt;安全漏洞敲响警钟&lt;/b&gt;：2025年CVE-2025-29927中间件绕过(CVSS 9.1)、2025年底RSC核心包10分满分漏洞CVE-2025-55182、2026年初多起Server Function DoS漏洞，攻击面集中在服务端渲染和反序列化环节&lt;br /&gt;4. &lt;b&gt;TanStack并非避风港&lt;/b&gt;：2026年5月TanStack遭遇供应链攻击，42个包被投毒，说明换框架不能免疫风险，减少依赖面才是关键&lt;br /&gt;5. &lt;b&gt;序列化是根本原因&lt;/b&gt;：RSC的&quot;无缝&quot;本质是分布式系统的序列化问题，函数、类实例、错误栈都无法透明穿越边界，反序列化不可信输入成为高危攻击面&lt;br /&gt;6. &lt;b&gt;当前架构选择&lt;/b&gt;：React Router框架模式+Vite纯SPA（仅营销页预渲染）+ Hono独立后端，API通过显式HTTP调用，无RSC负载，无服务端序列化&lt;br /&gt;7. &lt;b&gt;安全设计原则&lt;/b&gt;：认证授权在API层强制执行，前端中间件只做UX跳转，CORS/CSRF/验证码/限流全部在可控的后端实现，与渲染框架彻底解耦&lt;br /&gt;8. &lt;b&gt;核心收获&lt;/b&gt;：架构清晰可指认、无序列化税、前端攻击面趋近于零、后端语言自由选型、依赖更少爆炸半径更小——&quot;无聊&quot;在软件工程里是赞美&lt;br /&gt;&lt;br /&gt;URL：&lt;a href=&quot;https://dev.to/zulikram/why-i-walked-back-from-nextjs-and-rsc-to-a-plain-spa-and-a-separate-backend-4k8p&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://dev.to/zulikram/why-i-walked-back-from-nextjs-and-rsc-to-a-plain-spa-and-a-separate-backend-4k8p&quot;&gt;https://dev.to/zulikram/why-i-walked-back-from-nextjs-and-rsc-to-a-plain-spa-and-a-separate-backend-4k8p&lt;/a&gt;</content:encoded></item></channel></rss>