Now vibe coding, so learning hammer FE ?
《用 React、GSAP 和 AI 打造 Maxima Therapy 网站》

标签:#前端 #React #GSAP #TailwindCSS #ReactRouter #AI辅助开发 #创意编程 #Lottie #MatterJS #ScrollTrigger

总结:

本文是 Codrops 上的一篇案例复盘,记录了团队为神经多样性支持机构 Maxima Therapy 打造高互动、高插画风格网站的全过程。文章详细介绍了技术栈选型(Sanity + React Router + GSAP + TailwindCSS)、多个核心交互模块的实现思路(可拖拽轮播、SVG 水波纹、物理绳索、形状变形、贴纸动效),以及 AI(Claude Code)在实际开发中的辅助作用与局限。对于想在前端项目中融合创意动画与 AI 提效的开发者来说,这是一份非常接地气的实战参考。

文章要点:

- 技术栈选型很务实:团队选了 React Router(而非 Next.js)做静态生成,搭配 Sanity 做 CMS、Cloudflare Pages 托管,理由是配置更轻量;GSAP + Lenis 负责动画和滚动平滑,TailwindCSS 负责样式,TypeScript 做类型检查
- 首页轮播的交互设计很巧妙:把四个节目板块拆成四个旋转的 <div>,只有当前可见的板块才响应交互;切换时触发路由变化,但轮播组件通过布局隔离避免了不必要的重渲染
- SVG 水波纹效果用 AI 辅助生成:Claude Code 帮忙把原始 SVG 路径转换成带 50 个控制点的系统,再结合 GSAP 实现鼠标触发的涟漪动画——AI 在创意编码这类"繁琐但规则明确"的任务上表现不错
- Lottie 动画与 Canvas 背景混合:通过离屏 Canvas 绘制固定图案,再用 Lottie 的 Canvas 渲染模式做遮罩,最后用 globalCompositeOperation 合成,实现了滚动联动的背景效果
- 物理引擎让页面更有生命力:招聘页用 Matter.js 模拟"supports"单词被两根绳索悬挂的物理效果,绳索由复合体堆叠而成,SVG 文字根据物理模拟结果实时位移
- AI 是"得力助手"但不是"万能替身":Claude Code 在 SVG 优化、Sanity 数据模型扩展、TypeScript 类型生成上帮了大忙,但也会出现结果不一致、擅自改动数据获取模式、甚至"幻觉"出不存在 SVG 路径的情况;团队建议把 AI 用在范围明确的小任务上
- ScrollTrigger 让滚动交互管理很轻松:配合 useGSAP hook 自动清理,避免了手动写 Intersection Observer 的繁琐,实现了文字显现、图片揭示、SVG 播放等丰富的滚动动效

文章URL:

https://tympanus.net/codrops/2026/04/06/building-the-maxima-therapy-website-react-gsap-and-dabbling-with-ai/
《垂直代码库:告别按类型分层,拥抱按业务域组织》

标签:#前端 #代码组织 #架构设计 #Monorepo #React #软件工程

总结:

本文主张前端代码库应从"水平分层"(按 components/hooks/utils 技术类型划分)转向"垂直切片"(按业务域/功能域组织)。作者以 Sentry 代码库十年演进为例,指出水平分层会导致代码分散、认知负荷高、耦合混乱;而垂直组织将同一业务域的组件、工具、类型内聚到一起,配合 Monorepo 的显式边界(exports/eslint-plugin-boundaries),能显著提升可维护性。虽然确定正确的垂直划分需要更多团队沟通,但这是支撑代码库长期演进的必要投资。

文章要点:

- 水平分层的隐患:把代码按 components / hooks / utils / types 分类虽然上手简单,但随着项目膨胀,同一业务逻辑会被拆得七零八落——比如 PageFilters 的组件、类型、工具函数散落在三个目录,改一个小需求要跳来跳去, cognitive load 直接拉满
- 垂直切片的核心思想:不按"技术类型"而按"业务域"分组,把同一个功能域(如 dashboard、profiling、billing)相关的组件、Hook、工具、类型全部收进一个目录;就像当年我们把 HTML/CSS/JS 从三层文件合并成组件一样,这次是更高维度的"关注点内聚"
- 与团队结构天然对齐:现代产品团队通常是端到端的功能团队(dashboard 团队、replay 团队),垂直代码结构让 CODEOWNERS 和包边界直接对应团队职责,谁负责什么一目了然
- 解决跨域复用焦虑:不是所有代码都严格属于某个页面,像 PageFilters 这种被多页面使用的通用能力,完全可以作为独立垂直域存在;关键是按"逻辑关联"而非"物理位置"来划分
- 用边界守护架构:垂直化后还需降低耦合,推荐通过 Monorepo + package.json#exports 显式暴露公共 API,或借助 eslint-plugin-boundaries 禁止深路径导入,把"私有实现"真正保护起来
- 没有银弹,但值得投入:确定合理的垂直域确实比"丢进 utils"更难,也可能出现不同团队重复造轮子;但作者认为这恰恰促进了团队沟通,而沟通本就是软件工程最难也最重要的部分

文章URL:

https://tkdodo.eu/blog/the-vertical-codebase The Vertical Codebase
《2026年JavaScript生态全景指南》

标签:#前端 #JavaScript #ECMAScript2025 #ECMAScript2026 #React #Vue #Svelte #NodeJS #TypeScript #Vite #Bun #Deno #TemporalAPI #IteratorHelpers #ImportAttributes

总结:
本文全面梳理了2026年JavaScript生态系统的最新发展,涵盖ECMAScript 2025(迭代器助手、Set方法、Promise.try等)和2026预期特性(Temporal API、资源管理),React/Vue/Svelte框架动态,Node.js原生TypeScript支持、Bun和Deno运行时竞争,Vite 8与Turbopack构建工具演进,TypeScript v6及AI编程趋势。文章强调掌握基础原理比追逐工具更重要,特别是在AI辅助编程时代,架构能力和代码品味尤为关键。

文章要点:
- **ECMAScript 2025超实用新玩具**:迭代器终于能链式调用`.map().filter()`啦,而且是惰性求值不耗内存;Set之间可以玩集合运算,轻松找出技能交集和差集;`Promise.try()`让同步异步错误一网打尽;还有`RegExp.escape()`终于解决了用户搜索时特殊字符炸正则的问题~

- **2026年最期待的Temporal API**:Date对象终于被拯救了!处理时区和日期计算不会再莫名其妙多出几天,浏览器原生支持即将到来,告别 moment.js 大礼包的时代要来啦~

- **框架圈的大新闻**:React 19的Server Components和Compiler还在消化中,Vue 3.6祭出Vapor Mode性能大招,Svelte 5的Runes API让响应式更细粒度; Next.js 16默认切到Turbopack,Astro被Cloudflare抱走,Remix正在酝酿去React化的大胆实验~

- **运行时三国杀**:Node.js 22+能直接跑.ts文件啦(虽然只是剥离类型),Bun被Anthropic(Claude家)收编后1.3版本速速飞起,Deno 2稳如老狗主打安全牌,三足鼎立格局越来越有意思~

- **TypeScript登顶GitHub第一**:v6严格模式默认开启,v7要用Go重写编译器提速10倍;92%的开发者都在用AI写代码,但文章提醒我们——基础原理和架构品味才是AI时代真正的护城河呀!

文章URL:https://frontendmasters.com/blog/what-to-know-in-javascript-2026-edition/ What To Know in JavaScript (2026 Edition)
《前端内存泄漏:500仓库静态分析与五场景基准测试实证研究》

标签:#前端 #内存泄漏 #性能优化 #React #Vue #Angular #useEffect #静态分析 #基准测试

总结(一段话概括)
该研究对500个开源前端仓库(React/Vue/Angular)进行AST静态分析,发现86%的代码库存在至少一处缺失清理的内存泄漏模式,共识别55,864个潜在泄漏点,其中定时器清理缺失占比最高(43.9%)。通过五个控制变量的基准测试(各50轮×100次挂载循环)证实:每处未清理模式每次挂载/卸载循环平均泄漏约8KB内存,呈线性累积趋势;而正确清理的版本内存增长接近零(约2KB总计)。研究揭示了内存泄漏在前端生产代码中的普遍性及其对长会话应用(如仪表板、视频会议)的性能威胁,并提供了针对性的修复方案。

文章要点:
- 高普遍性:扫描714,217个文件发现55,864处潜在泄漏,430/500个仓库(86%)存在至少一处缺失清理模式,涵盖Kibana、Next.js等知名项目
- 主要泄漏源:定时器未清理(43.9%,22,384处)居首,其次是事件监听器(19.0%)、订阅未取消(13.9%)、useEffect无清理函数(9.3%)
- 统一泄漏成本:五个跨框架场景(React useEffect、Vue onMounted、Angular subscribe、Vue watch、RAF)均显示每循环约8KB线性内存增长,标准差极小(±0.6–37KB),而正确清理版本仅2-3KB噪声基线
- 统计显著性:效应量Cohen's d > 200(BAD与GOOD分布零重叠),p < 0.001,统计功效超99.99%,证实清理缺失是内存占用的主导变量
- 框架差异:React占发现总量62.3%(样本加权),Vue的watch未存储stop handle(3,989处)和Angular的.subscribe()未取消(5,327处)均为高危模式
- 高危上下文:组件生命周期代码(32.9%)和事件绑定(24.5%)是高发区,因路由切换、标签页切换会频繁触发挂载/卸载
- 实际影响:单泄漏模式200次导航累积1.6MB,多模式叠加可达8MB/会话,足以触发移动端浏览器(iOS Safari 80-120MB阈值)杀标签页
- 修复成本低:92.3%的修复仅需单行代码(返回清理函数、存储stop handle、takeUntil模式),ROI极高
- 工具链缺口:现有ESLint规则(如react-hooks/exhaustive-deps)无法检测清理函数缺失,需借助AST级静态分析或生产环境堆内存监控

文章URL
https://stackinsight.dev/blog/memory-leak-empirical-study/ Frontend Memory Leaks: A 500-Repository Static Analysis and Five-Scenario Benchmark Study
《理解 React Fiber 存在的意义》

标签:#前端 #React #React_Fiber #性能优化 #并发渲染 #Virtual_DOM

总结(一段话概括)
React Fiber 是 React 16 对核心协调算法的彻底重写,旨在解决 React 15 中 Stack Reconciler 同步递归更新导致的主线程阻塞问题。通过将组件树重构为链表结构的 Fiber 节点,React 实现了可中断的异步更新、任务优先级调度和时间切片机制,使高优先级任务(如用户输入)能插队执行,避免页面卡顿,并为 Concurrent Mode、Suspense 等现代特性奠定基础。

文章要点:
- React 15 的瓶颈:Stack Reconciler 采用递归遍历,更新一旦开始无法中断,复杂组件树会导致主线程长时间阻塞,造成掉帧和交互卡顿
- Fiber 的本质:将同步更新改为可中断的异步更新,每个 Fiber 节点是一个执行单元,通过 childsiblingreturn 指针形成链表树,取代递归调用栈
- 时间切片(Time Slicing):利用 requestIdleCallback polyfill(基于 MessageChannel),在浏览器每帧(16.6ms)中预留时间(默认 5ms)给 React,超时即让出主线程控制权
- 优先级调度:引入 Lanes 机制,区分 Immediate(最高)、UserBlocking、Normal、Low、Idle 五级优先级,确保紧急更新优先处理
- 双缓冲机制:维护 current FiberworkInProgress Fiber 两棵树,通过 alternate 指针关联,渲染完成后直接切换指针指向,避免重复创建对象
- Phase 分离:将更新分为 Render 阶段(可中断,构建 Fiber 树)和 Commit 阶段(不可中断,同步执行 DOM 操作),支持错误边界(Error Boundaries)捕获
- 架构演进:从 React 15 的两层(Reconciler + Renderer)增至 React 16+ 的三层(Scheduler + Reconciler + Renderer),调度器负责任务分配和中断控制

文章URL:https://inside-react.vercel.app/blog/understanding-why-react-fiber-exists Understanding Why React Fiber Exists
《人生苦短,何必手写 API 类型:OpenAPI 驱动的 React 开发》

标签:#前端 #React #OpenAPI #TypeScript #Hey_API #MSW #Nanoquery #Contract_First

总结

本文是 Evil Martians 团队"契约优先"系列第三篇,介绍如何通过 OpenAPI 规范驱动 React 前端开发。核心思路是将 OpenAPI Spec 作为单一事实来源,利用 Hey API 自动生成 TypeScript 类型、SDK 客户端和 Zod 验证模式,配合 Nanostores 与 Nanoquery 实现类型安全的状态管理,并使用 MSW 在浏览器层面拦截网络请求进行模拟,实现前后端并行开发。当后端契约变更时,重新生成代码即可让 TypeScript 立即暴露所有需要更新的地方,避免生产环境出现类型不匹配错误。

文章要点:

- **手写 API 类型的痛点**:类型与后端脱节、缺乏运行时验证、重复样板代码、错误只能在生产环境发现
- **Hey API 自动生成**:通过 openapi-ts 从 OpenAPI Spec 生成 TypeScript 类型、SDK 函数、Zod 验证模式和客户端配置,实现编译时与运行时双重安全
- **Nanostores + Nanoquery 状态管理**:将 API 数据视为全局状态存储在组件外,支持缓存、自动重取、跨组件共享,避免传统 Hooks 的数据获取陷阱
- **MSW 网络层模拟**:在浏览器层面拦截真实 HTTP 请求返回模拟数据,支持随机延迟、分页、过滤、错误场景,实现不依赖后端的功能开发
- **完整实战示例**:包含酒店管理系统代码,展示表单验证、CRUD 操作、路由集成、环境配置切换等完整开发流程
- **契约优先工作流**:后端更新 Spec → 前端重新生成 → TypeScript 报错定位 → 修复代码,确保集成一次成功

文章URL:https://evilmartians.com/chronicles/lifes-too-short-to-hand-write-api-types-openapi-driven-react Life's too short to hand-write API types: OpenAPI-driven React—Martian Chronicles, Evil Martians’ team blog
《使用 SurveyJS 在 React 中构建动态 JSON 驱动表单》

标签:#前端 #React #SurveyJS #JSON_Schema #Form_Builder #Dynamic_Forms #No_Code

总结

本文介绍了 SurveyJS 表单构建器在 React 应用中的集成与使用方法。通过 JSON Schema 定义表单结构,开发者可实现运行时动态渲染表单,避免硬编码。文章详细讲解了安装配置、组件初始化、主题定制、数据持久化(localStorage/服务端)、图片上传处理、PDF 导出等核心功能,并提供了完整的 Next.js 集成示例代码,帮助开发者快速搭建自托管、数据可控的动态表单解决方案。

文章要点:

- **JSON Schema 驱动**:表单结构通过 JSON 定义,支持运行时动态加载和修改,实现真正的数据驱动表单渲染
- **可视化构建器**:Survey Creator 提供拖拽式界面,非技术人员也能设计表单,实时生成对应 JSON 配置
- **React 集成方案**:需安装 survey-creator-reactsurvey-creator-core`,组件不支持 SSR,在 Next.js 中需使用动态导入并设置 `ssr: false
- **数据持久化**:通过 saveSurveyFunc 回调可将表单配置保存至 localStorage 或后端服务,支持加载已有 JSON 配置继续编辑
- **扩展功能**:支持 Ace 编辑器集成(JSON 编辑)、图片上传至服务器(非 Base64 存储)、PDF 导出、自定义主题等高级功能
- **商业化许可**:Survey Creator 商用需购买许可证,否则界面会显示警告横幅

文章URL:https://surveyjs.hashnode.dev/build-dynamic-json-driven-forms-react Schema-Driven Forms in React: Practical Guide
十亿行数据的虚拟滚动技术——HighTable 的五大实现方案

标签:#前端 #React #虚拟滚动 #性能优化 #大数据表格 #HighTable #DOM优化

总结:本文介绍了 HighTable 组件实现十亿级数据表格渲染的五大核心技术:懒加载仅获取可视区域数据、表格切片只渲染可见行、无限像素技术通过缩放滚动条突破浏览器高度限制、双模式滚动实现全局跳转与本地精确定位、两步随机访问分离垂直与水平滚动逻辑。这些方案完全基于原生 HTML 与 CSS,无需 Canvas 或自定义滚动条即可在浏览器中流畅处理海量数据。

文章要点:
- 技术1:懒加载:仅加载可视区域单元格数据,通过 DataFrame 接口异步获取并缓存数据,将 1TB 数据缩减为仅需加载约 3KB 的可见区域
- 技术2:表格切片:引入 Canvas 层作为定位参考,仅渲染可见行(约 30 行)而非全部十亿行,将 DOM 元素数量控制在恒定范围内
- 技术3:无限像素:设置 Canvas 最大高度(800 万像素),超过阈值时通过 downscaleFactor 缩放滚动条分辨率,突破浏览器元素高度限制(Firefox 约 1700 万像素)
- 技术4:像素级精确滚动:实现本地滚动(小幅度移动保持行连续性)与全局滚动(大幅度跳转)双模式,通过 globalAnchor 和 localOffset 状态管理,确保 2 万亿行内可达任意像素
- 技术5:两步随机访问:解耦垂直与水平滚动逻辑,先计算目标位置并垂直滚动,渲染完成后再处理水平定位与焦点设置,支持键盘导航和程序化跳转至任意单元格

链接:https://rednegra.net/blog/20260212-virtual-scroll/
#React React 19.2 新增 <Activity> 组件,可在保留状态的前提下以最低优先级渲染隐藏内容,显著降低主线程压力并加速交互响应。
配套推出的 Performance Tracks 把 React 内部任务、组件渲染与 SSR 耗时一次性可视化,让开发者快速定位并消除拖慢 INP 的瓶颈。

https://calendar.perfplanet.com/2025/react-19-2-further-advances-inp-optimization/ React 19.2. Further Advances INP Optimization
#React React 19 错误边界在捕获首个错误后立即停止渲染同级组件,避免资源浪费。

同时消除重复错误日志,简化开发者对异常的处理逻辑。

https://andrei-calazans.com/posts/react-19-error-boundary-changed/ React 19 Error Boundary Behaves Differently
#React 介绍了在React Router中如何通过actions和loaders将UI表单数据转换为数据库对象,以及将数据库数据转换为UI友好的格式,强调了分离关注点的重要性,以提高应用的可维护性和可测试性。

扩展重点:
- 三层数据架构
- 关注点分离

https://sergiodxa.com/tutorials/transform-formdata-between-ui-and-database-in-react-router
#React #文章 文章介绍了如何使用React的`useDeferredValue()`和`useSuspenseQuery()`构建响应式的异步组合框组件,通过将数据获取逻辑提取到单独组件中并利用Suspense和错误边界,简化了加载和错误状态管理,同时通过`useDeferredValue()`优化渲染,实现平滑的用户体验和过时数据更新体验。

https://certificates.dev/blog/building-an-async-combobox-with-usesuspensequery-and-usedeferredvalue Building an Async Combobox with useSuspenseQuery() and useDeferredValue()
 
 
Back to Top