<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>ReactRouter | 锤子前端</title><description>Now vibe coding, so learning hammer FE ?</description><link>https://channel.meo-ai.com</link><item><title>《W键在前端：技术与产品的协同进化》</title><link>https://channel.meo-ai.com/posts/673</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/673</guid><pubDate>Fri, 10 Jul 2026 02:21:02 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《W键在前端：技术与产品的协同进化》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;a href=&quot;/search/result?q=%23%E5%89%8D%E7%AB%AF%E5%B7%A5%E7%A8%8B%E5%8C%96&quot; title=&quot;#前端工程化&quot;&gt;#前端工程化&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Electron&quot; title=&quot;#Electron&quot;&gt;#Electron&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Vite&quot; title=&quot;#Vite&quot;&gt;#Vite&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E4%BB%A3%E7%A0%81%E9%87%8D%E6%9E%84&quot; title=&quot;#代码重构&quot;&gt;#代码重构&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Monorepo&quot; title=&quot;#Monorepo&quot;&gt;#Monorepo&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23TailwindCSS&quot; title=&quot;#TailwindCSS&quot;&gt;#TailwindCSS&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23ShadcnUI&quot; title=&quot;#ShadcnUI&quot;&gt;#ShadcnUI&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23ReactRouter&quot; title=&quot;#ReactRouter&quot;&gt;#ReactRouter&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96&quot; title=&quot;#性能优化&quot;&gt;#性能优化&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Medal&quot; title=&quot;#Medal&quot;&gt;#Medal&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;1. **从&quot;巨兽组件&quot;说起**：作者用一张拥有30+ props的TextInput截图开场，生动展示了&quot;反模式&quot;组件的恐怖——职责混乱、默认值泛滥、DOM和自定义props杂糅，改一行代码要检查十个角落，开发体验堪比噩梦&lt;br /&gt;2. **宏观手术刀**：不硬啃旧组件，而是先换&quot;土壤&quot;——迁移Monorepo+PNPM解决版本混乱，引入Vite+HMR让Electron本地开发告别&quot;停启地狱&quot;，CEO亲自下场当普罗米修斯点火&lt;br /&gt;3. **Marie Kondo式删代码**：统一导入路径（包名+清晰路径+文件后缀），减少barrel文件，让AI能精准识别&quot;死代码&quot;。结果疯狂删代码：单PR删除上万行，团队享受&quot;五杀&quot;快感，还提炼出跨平台通用包（utils/hooks/types）&lt;br /&gt;4. **生产环境统一Vite**：干掉Rollup，用Glob Imports做代码分割，配合路由级动态加载，i18n文件懒加载，最终渲染包从巨大体积瘦身到2.7MB，构建速度快到QA都惊呼&quot;嗖嗖嗖&quot;&lt;br /&gt;5. **组件层&quot;换血&quot;**：用Tailwind+Shadcn/Radix UI（后迁Base UI）替代Grommet和Styled Components，给旧组件挂ESLint&quot;红牌&quot;禁止令，同时写迁移指南。React Router v5→v7的大升级也顺势完成，现在搭个新页面只需一天&lt;br /&gt;&lt;br /&gt;URL：&lt;a href=&quot;https://medal.tv/blog/posts/w-key-in-frontend-synergizing-technology-and-product&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://medal.tv/blog/posts/w-key-in-frontend-synergizing-technology-and-product&quot;&gt;https://medal.tv/blog/posts/w-key-in-frontend-synergizing-technology-and-product&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://medal.tv/blog/posts/w-key-in-frontend-synergizing-technology-and-product&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;Front End Engineer Rick Zhang shares how Medal&apos;s frontend team broke the deadlock between legacy code and new features by rebuilding their developer experience from the ground up. Through a monorepo migration, a full move to Vite and Rolldown, aggressive…&quot;&gt;
  
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;medal.tv&lt;/div&gt;
  &lt;img class=&quot;link_preview_image&quot; alt=&quot;W-Key in Frontend: Synergizing Technology and Product | Medal&quot; src=&quot;/static/https://cdn4.telesco.pe/file/Ja8jh4CR_X5n1ZweFyHbHOk07dDOJlt1YEjJr4IwK-miJoQ7-XP0mn5MVL75muvn92MqXGqIxlsw4__v1RrBmkGaW8nTgADE7YHhACPnMF_so3dlhW2tahrRFuskkx13d_iaE5pDMKgqjqKN6wHyIOmJgbF8a2t-8iPwY393mvUegrIa2IfULNQdyMvXR04Om6MLAElsPSfQME303_B9Q8EsXJx6w40grYF_2XwFkrr94ZK6LZq52EfP3D-BbQ0vl2stbCn-tTACUzoGdP1-C8bU6xtWAb0lLCnGGbaDxIRCCM6sC73HUl48vh4DLQSLPBDMSOSHZpEjqDhNmr3-TQ.jpg&quot; width=&quot;1200&quot; height=&quot;630&quot; loading=&quot;eager&quot; /&gt;
  &lt;div class=&quot;link_preview_title&quot;&gt;W-Key in Frontend: Synergizing Technology and Product | Medal&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;Front End Engineer Rick Zhang shares how Medal&apos;s frontend team broke the deadlock between legacy code and new features by rebuilding their developer experience from the ground up. Through a monorepo migration, a full move to Vite and Rolldown, aggressive…&lt;/div&gt;
&lt;/a&gt;</content:encoded></item><item><title>《用 React、GSAP 和 AI 打造 Maxima Therapy 网站》</title><link>https://channel.meo-ai.com/posts/611</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/611</guid><pubDate>Sun, 26 Apr 2026 02:32:10 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《用 React、GSAP 和 AI 打造 Maxima Therapy 网站》&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=%23React&quot; title=&quot;#React&quot;&gt;#React&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23GSAP&quot; title=&quot;#GSAP&quot;&gt;#GSAP&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23TailwindCSS&quot; title=&quot;#TailwindCSS&quot;&gt;#TailwindCSS&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23ReactRouter&quot; title=&quot;#ReactRouter&quot;&gt;#ReactRouter&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23AI%E8%BE%85%E5%8A%A9%E5%BC%80%E5%8F%91&quot; title=&quot;#AI辅助开发&quot;&gt;#AI辅助开发&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E5%88%9B%E6%84%8F%E7%BC%96%E7%A8%8B&quot; title=&quot;#创意编程&quot;&gt;#创意编程&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Lottie&quot; title=&quot;#Lottie&quot;&gt;#Lottie&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23MatterJS&quot; title=&quot;#MatterJS&quot;&gt;#MatterJS&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23ScrollTrigger&quot; title=&quot;#ScrollTrigger&quot;&gt;#ScrollTrigger&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;&lt;br /&gt;本文是 Codrops 上的一篇案例复盘，记录了团队为神经多样性支持机构 Maxima Therapy 打造高互动、高插画风格网站的全过程。文章详细介绍了技术栈选型（Sanity + React Router + GSAP + TailwindCSS）、多个核心交互模块的实现思路（可拖拽轮播、SVG 水波纹、物理绳索、形状变形、贴纸动效），以及 AI（Claude Code）在实际开发中的辅助作用与局限。对于想在前端项目中融合创意动画与 AI 提效的开发者来说，这是一份非常接地气的实战参考。&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;&lt;br /&gt;- 技术栈选型很务实：团队选了 React Router（而非 Next.js）做静态生成，搭配 Sanity 做 CMS、Cloudflare Pages 托管，理由是配置更轻量；GSAP + Lenis 负责动画和滚动平滑，TailwindCSS 负责样式，TypeScript 做类型检查&lt;br /&gt;- 首页轮播的交互设计很巧妙：把四个节目板块拆成四个旋转的 &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;，只有当前可见的板块才响应交互；切换时触发路由变化，但轮播组件通过布局隔离避免了不必要的重渲染&lt;br /&gt;- SVG 水波纹效果用 AI 辅助生成：Claude Code 帮忙把原始 SVG 路径转换成带 50 个控制点的系统，再结合 GSAP 实现鼠标触发的涟漪动画——AI 在创意编码这类&quot;繁琐但规则明确&quot;的任务上表现不错&lt;br /&gt;- Lottie 动画与 Canvas 背景混合：通过离屏 Canvas 绘制固定图案，再用 Lottie 的 Canvas 渲染模式做遮罩，最后用 &lt;code&gt;globalCompositeOperation&lt;/code&gt; 合成，实现了滚动联动的背景效果&lt;br /&gt;- 物理引擎让页面更有生命力：招聘页用 Matter.js 模拟&quot;supports&quot;单词被两根绳索悬挂的物理效果，绳索由复合体堆叠而成，SVG 文字根据物理模拟结果实时位移&lt;br /&gt;- AI 是&quot;得力助手&quot;但不是&quot;万能替身&quot;：Claude Code 在 SVG 优化、Sanity 数据模型扩展、TypeScript 类型生成上帮了大忙，但也会出现结果不一致、擅自改动数据获取模式、甚至&quot;幻觉&quot;出不存在 SVG 路径的情况；团队建议把 AI 用在范围明确的小任务上&lt;br /&gt;- ScrollTrigger 让滚动交互管理很轻松：配合 &lt;code&gt;useGSAP&lt;/code&gt; hook 自动清理，避免了手动写 Intersection Observer 的繁琐，实现了文字显现、图片揭示、SVG 播放等丰富的滚动动效&lt;br /&gt;&lt;br /&gt;文章URL：&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://tympanus.net/codrops/2026/04/06/building-the-maxima-therapy-website-react-gsap-and-dabbling-with-ai/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://tympanus.net/codrops/2026/04/06/building-the-maxima-therapy-website-react-gsap-and-dabbling-with-ai/&quot;&gt;https://tympanus.net/codrops/2026/04/06/building-the-maxima-therapy-website-react-gsap-and-dabbling-with-ai/&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://tympanus.net/codrops/2026/04/06/building-the-maxima-therapy-website-react-gsap-and-dabbling-with-ai&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;A behind-the-scenes look at how we built Maxima Therapy with playful interactions, creative code, and a little AI help along the way.&quot;&gt;
  &lt;i class=&quot;link_preview_right_image&quot; style=&quot;background-image:url(&apos;https://cdn4.telesco.pe/file/OSLXxNQNQbCaKK_WYdjWo3UjgGf4WWi3p-5CfnCy7GI0o1FD73UMf9jQ3VWXSWcUdyMHnJO_OS1yqITy3da1RJOSYIfQeJHrE6s9r50gAZYdWU1RVeDMYUZy3V-4xggyDG3xw0ZDyRc-rU-yTqMHXQju_1RpODiVwM4uPHC5UYZ7fRVe51cLHGS_UH_u5-Lmdp4TjI9aOuW5PvsNcDVn8gkUNq0mL5RLs85sd178uwfxO0OxFDzorvwEhCjaalLaBc54dgfJYl0BDM295uXUHJbzySWOEq0uDax3ceCIeW9lT5dkvmRZqDW8t7uITM8aQVPG1I1CpLMlaaguNK3UdQ.jpg&apos;)&quot;&gt;&lt;/i&gt;
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;Codrops&lt;/div&gt;
  
  &lt;div class=&quot;link_preview_title&quot;&gt;Building the Maxima Therapy Website: React, GSAP, and Dabbling with AI | Codrops&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;A behind-the-scenes look at how we built Maxima Therapy with playful interactions, creative code, and a little AI help along the way.&lt;/div&gt;
&lt;/a&gt;</content:encoded></item></channel></rss>