<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <link href="https://news.cosine.ren/feed/atom" rel="self" type="application/atom+xml" />
  <title><![CDATA[FE Bits 前端周周谈]]></title>
  <subtitle type="html"><![CDATA[随性更新，捡拾那些值得细品的泛前端圈子的新鲜事，不争高低，只作播报，把最新、最好玩的技术，第一时间分享给同样好奇的你～

这里没什么大新闻推送，也不卷热点。就像在朋友圈跟你碎碎念，聊聊最近前端和技术圈的那些有趣小事。

不是每条都要“颠覆世界”，但都让我觉得“哎，这不错，想和你分享”。

可能是偶尔深夜刷到的新闻，也可能是偶尔工作摸鱼时的灵感，或者一段小小的吐槽。

总之代码和生活都要松弛一点，慢慢看、慢慢聊，别让新技术把自己搞得太紧张。

反正我也不急——你也别急～]]></subtitle>
  <updated>2026-04-19T13:43:58Z</updated>
  <author>
    <name>cosine</name>
  </author>
  
  <logo>https://static.quail.ink/media/km88lix2n2.webp</logo>
  <icon>https://static.quail.ink/media/km88lix2n2.webp</icon>
  <id>https://https://news.cosine.ren</id>
  <generator uri="https://quaily.com" version="1.0">Quaily</generator>
  
  <entry>
    <title><![CDATA[FE Bits Vol.32 | MUI v9 发布、TanStack RSC 新解、Google 打击后退按钮劫持]]></title>
    <link rel="alternate" type="text/html" href="https://news.cosine.ren/p/vol-32" />
    <id>https://news.cosine.ren/p/vol-32#17125</id>
    <author>
      <name>cosine</name>
    </author>
    <published>2026-04-19T13:43:58Z</published>
    <updated>2026-04-19T13:43:58Z</updated>
    
    <content type="html">
      &lt;blockquote&gt;
&lt;p&gt;本期网址 &lt;a href=&#34;https://blog.cosine.ren/post/weekly-32&#34; title=&#34;A Link of https://blog.cosine.ren/post/weekly-32&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://blog.cosine.ren/post/weekly-32&lt;/a&gt;&lt;br /&gt;
本周刊更新时间期望是在每周天。&lt;br /&gt;
推荐订阅本周刊的 &lt;a href=&#34;https://blog.cosine.ren/rss.xml&#34; title=&#34;RSS&#34; rel=&#34;noopener ugc nofollow&#34;&gt;RSS&lt;/a&gt;。&lt;br /&gt;
公众号 前端周周谈 FE Bits，点击阅读原文链接可查看原文。&lt;br /&gt;
QQ 讨论小群 598022684 / &lt;a href=&#34;https://discord.gg/XzvrvNMcSe&#34; title=&#34;Discord 群&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Discord 群&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;本周刊文章内容同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;，欢迎关注。&lt;/p&gt;
&lt;p&gt;今天是 2026 年 4 月 19 日，星期日。&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;个人动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;4 月新番观看体验，包括骨头社新作、婚姻剧毒等作品的评价。&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;4 月的新番吃的也挺好的，不愧是骨头社，打戏做的真不错，原以为婚姻剧毒这个番 PV 观感一般般的，第二集 op 也好听两集连看下来也很爽！&lt;br /&gt;
反而成为了最喜欢的番之一了。（兄弟……兄弟？）还有上伊那牡丹和春夏秋冬代行者、石纪元和入间&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/04/1031be6be9e23f658e554984aab43ae5.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/2026/04-14-e695jp0y.jpg&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;健康碎碎念：年度体检查出脂肪肝和多囊，立 flag 后天启动减肥大业。&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;每当我感觉我老了的时候，去医院：小姑娘年纪轻轻的怎么有脂肪肝和多囊啊😎 跳了啊！后天开始减肥大业，真的呜呜呜呜。这次立 flag 必须减下来，减下来了才能发女装照 x👿&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;社区动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://mui.com/blog/introducing-material-ui-v9/&#34; title=&#34;Material UI v9.0 发布&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Material UI v9.0 发布&lt;/a&gt;：跳过 v8 直接与 MUI X v9 同步主版本。新增基于 Base UI 的 &lt;code&gt;NumberField&lt;/code&gt; 与支持多级子菜单的 &lt;code&gt;Menubar&lt;/code&gt;；利用 &lt;code&gt;color-mix()&lt;/code&gt; 增强 CSS 变量派生颜色；&lt;code&gt;sx&lt;/code&gt; 处理性能提升最高 30%，整体包体积减小约 3%；清理旧版 &lt;code&gt;component&lt;/code&gt;/&lt;code&gt;componentsProps&lt;/code&gt; 属性，为彻底移除 Emotion 依赖铺路。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://tanstack.com/blog/react-server-components&#34; title=&#34;React Server Components Your Way | TanStack Blog&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React Server Components Your Way | TanStack Blog&lt;/a&gt;：TanStack Start 将 RSC 视为类似 JSON 的可获取、可缓存数据流原语，复用 TanStack Query 与 Router 的缓存机制；并提出“复合组件”模式，通过插槽让客户端保留组件树控制权，按需嵌入服务器内容。官博迁移实测客户端 JS 减少约 153KB，TBT 从 1,200ms 降至 260ms。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://developer.chrome.com/blog/chrome-148-beta?hl=en&#34; title=&#34;Chrome 148 Beta 发布&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Chrome 148 Beta 发布&lt;/a&gt;：重点引入 CSS 容器查询优化、音视频原生懒加载、Android 端 Web Serial 支持及内置 AI 能力增强。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://developers.google.com/search/blog/2026/04/back-button-hijacking&#34; title=&#34;Google 宣布打击“后退按钮劫持”行为&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Google 宣布打击“后退按钮劫持”行为&lt;/a&gt;：Google 将“后退按钮劫持”行为列入垃圾内容政策，违规站点将面临手动降权或算法打压。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-2&#34;&gt;文章&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.joshwcomeau.com/animation/squash-and-stretch/&#34; title=&#34;Web 动画中的挤压与拉伸原则&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Web 动画中的挤压与拉伸原则&lt;/a&gt;：介绍如何将迪士尼经典的“挤压与拉伸”动画原则应用到 Web 开发中，提升微交互质感。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://css-tricks.com/7-view-transitions-recipes-to-try/&#34; title=&#34;7 种实用的 CSS 视图过渡方案&#34; rel=&#34;noopener ugc nofollow&#34;&gt;7 种实用的 CSS 视图过渡方案&lt;/a&gt;：分享 7 种实用的 CSS 视图过渡代码方案，涵盖从基础配置到高阶动画的实现。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://tkdodo.eu/blog/the-vertical-codebase&#34; title=&#34;垂直代码架构：按功能划分的优势&#34; rel=&#34;noopener ugc nofollow&#34;&gt;垂直代码架构：按功能划分的优势&lt;/a&gt;：探讨为什么按功能垂直划分比按技术类型水平划分的代码架构更具扩展性与可维护性。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://engineering.squarespace.com/blog/2026/how-to-use-standard-html-video-and-audio-lazy-loading-on-the-web-today&#34; title=&#34;HTML 原生音视频懒加载指南&#34; rel=&#34;noopener ugc nofollow&#34;&gt;HTML 原生音视频懒加载指南&lt;/a&gt;：介绍如何使用 HTML 原生的 loading=&amp;quot;lazy&amp;quot; 属性为视频和音频元素实现延迟加载以优化性能。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://polypane.app/blog/the-intl-api-the-best-browser-api-youre-not-using/&#34; title=&#34;深入探讨浏览器内置 Intl API&#34; rel=&#34;noopener ugc nofollow&#34;&gt;深入探讨浏览器内置 Intl API&lt;/a&gt;：介绍 Intl API 如何以零成本、高性能的方式处理多语言环境下的日期、数字及文本格式化。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://cekrem.github.io/posts/effect-without-effect-ts/&#34; title=&#34;原生 TypeScript 中的代数思维实现&#34; rel=&#34;noopener ugc nofollow&#34;&gt;原生 TypeScript 中的代数思维实现&lt;/a&gt;：介绍如何在不引入 Effect-TS 的情况下，利用原生 TS 实现类型安全错误处理和显式依赖注入。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendmasters.com/blog/building-a-blog-in-tanstack-part-1-of-2/&#34; title=&#34;Building a Blog in TanStack (Part 1 of 2)&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Building a Blog in TanStack (Part 1 of 2)&lt;/a&gt;：本文介绍了如何利用 TanStack Start 框架构建一个基于 Markdown 的博客系统，涵盖了服务器函数、动态路由及代码高亮等核心实现细节。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;css-&#34;&gt;CSS 新特性&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://css-tricks.com/css-multi-column-layout-wrapping-features/&#34; title=&#34;Chrome 145+ 多列布局新特性&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Chrome 145+ 多列布局新特性&lt;/a&gt;：介绍 Chrome 145+ 引入的 column-wrap 和 column-height 属性，实现多列布局的垂直折行。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://css-tricks.com/selecting-a-date-range-in-css/&#34; title=&#34;使用纯 CSS 实现日期范围选择高亮&#34; rel=&#34;noopener ugc nofollow&#34;&gt;使用纯 CSS 实现日期范围选择高亮&lt;/a&gt;：探讨利用 CSS 的 :nth-child(n of selector) 语法简化日期范围选择器的交互逻辑与样式实现。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-3&#34;&gt;趣站与工具&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://wterm.dev/&#34; title=&#34;wterm：基于 Zig 和 WASM 的高性能 Web 终端&#34; rel=&#34;noopener ugc nofollow&#34;&gt;wterm：基于 Zig 和 WASM 的高性能 Web 终端&lt;/a&gt;：一款由 Zig 驱动、基于 DOM 渲染的轻量级高性能 Web 终端模拟器。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://animata.design/&#34; title=&#34;Animata：近 200 个动画 React 组件&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Animata：近 200 个动画 React 组件&lt;/a&gt;：免费开源的 React 动画组件集合，基于 Tailwind CSS 构建，专注背景、按钮、文本及小组件的动画增强，支持复制粘贴快速集成并灵活自定义样式。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://react-photo-album.com/&#34; title=&#34;React Photo Album：响应式照片库组件&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React Photo Album：响应式照片库组件&lt;/a&gt;：支持行、列或瀑布流布局的 React 照片库组件，兼容 React 18+ 与 SSR，提供 &lt;a href=&#34;https://react-photo-album.com/examples/masonry&#34; title=&#34;示例&#34; rel=&#34;noopener ugc nofollow&#34;&gt;示例&lt;/a&gt; 与 &lt;a href=&#34;https://react-photo-album.com/examples/playground&#34; title=&#34;Playground&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Playground&lt;/a&gt; 预览不同配置效果。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;codepen&#34;&gt;Codepen&lt;/h2&gt;
&lt;h3 id=&#34;pure-css-ripple-effect--css-&#34;&gt;Pure CSS Ripple Effect 纯 CSS 涟漪效果&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/editor/NikxDa/pen/019d5e38-b114-74da-bc98-e8862a92ecca&#34; title=&#34;A Link of https://codepen.io/editor/NikxDa/pen/019d5e38-b114-74da-bc98-e8862a92ecca&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/editor/NikxDa/pen/019d5e38-b114-74da-bc98-e8862a92ecca&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;NikxDa 结合了 CSS 滤镜、模糊、对比度和混合模式，营造出从文本底部向外辐射的涟漪效果。目前建议使用 Chrome 或 Safari 查看。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/04/651d1bb01565e58fa8bc70e7628320ed.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;chunky-3d-buttons---3d-&#34;&gt;Chunky 3D Buttons  厚实的 3D 按钮&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/Andrew-Fisher-the-decoder/pen/raMZQNe&#34; title=&#34;A Link of https://codepen.io/Andrew-Fisher-the-decoder/pen/raMZQNe&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/Andrew-Fisher-the-decoder/pen/raMZQNe&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Andrew Fisher 用这一系列厚实、塑料质感的按钮，带我们回到了 2010 年代，按压起来非常令人满足。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;确实解压。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/04/29c0876324fd26d8e4dc02b50c7f3e46.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;-gsap-&#34;&gt;使用 GSAP 创建有趣的弹性复选框&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/jdillon/pen/WbGgJqz&#34; title=&#34;A Link of https://codepen.io/jdillon/pen/WbGgJqz&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/jdillon/pen/WbGgJqz&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Josh Dillon 为我们带来了一组充满电子感的用户界面设计：三个复选框在被勾选时会以霓虹灯般跳跃的动画效果亮起，取消勾选时则会平滑地暗去。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/04/afde5d03b72e0f35a9c7b2601dbda258.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;refs&#34;&gt;Refs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://codepen.io/spark/505&#34; title=&#34;Codepen Spark #505&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Codepen Spark #505&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://react.statuscode.com/issues/470&#34; title=&#34;React StatusCode Issue #470&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React StatusCode Issue #470&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      
    </content>
    
  </entry>
  
  <entry>
    <title><![CDATA[FE Bits Vol.31 | axios 供应链攻击、JetStream 3.0 发布与视图过渡工具包]]></title>
    <link rel="alternate" type="text/html" href="https://news.cosine.ren/p/vol-31" />
    <id>https://news.cosine.ren/p/vol-31#17016</id>
    <author>
      <name>cosine</name>
    </author>
    <published>2026-04-12T13:20:49Z</published>
    <updated>2026-04-12T13:20:49Z</updated>
    
    <content type="html">
      &lt;blockquote&gt;
&lt;p&gt;本期网址 &lt;a href=&#34;https://blog.cosine.ren/post/weekly-31&#34; title=&#34;A Link of https://blog.cosine.ren/post/weekly-31&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://blog.cosine.ren/post/weekly-31&lt;/a&gt;&lt;br /&gt;
本周刊更新时间期望是在每周天。&lt;br /&gt;
推荐订阅本周刊的 &lt;a href=&#34;https://blog.cosine.ren/rss.xml&#34; title=&#34;RSS&#34; rel=&#34;noopener ugc nofollow&#34;&gt;RSS&lt;/a&gt;。&lt;br /&gt;
公众号 前端周周谈 FE Bits，点击阅读原文链接可查看原文。&lt;br /&gt;
QQ 讨论小群 598022684 / &lt;a href=&#34;https://discord.gg/XzvrvNMcSe&#34; title=&#34;Discord 群&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Discord 群&lt;/a&gt;&lt;br /&gt;
本周刊文章内容同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;，欢迎关注。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;今天是 2026 年 4 月 12 日，星期日。&lt;br /&gt;
这期是带着清明放假的内容的双周刊。&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;个人动态&lt;/h2&gt;
&lt;h3 id=&#34;heading-1&#34;&gt;游戏&lt;/h3&gt;
&lt;p&gt;写点游戏杂谈。电子 ed 有一阵子了，但是清明放假连着两天 12 个小时，推完了哀鸿全结局，当作视觉小说读完了一个故事的感觉。&lt;/p&gt;
&lt;p&gt;是玩过前作来继续玩的，我的评价挺好的说实话。林翩翩的塑造给我感觉确实比苏怜烟惊艳，让人印象深刻。&lt;/p&gt;
&lt;p&gt;让我评价的话，这个作品是历史向大众向的 AVG 而不是 galgame，也确实不是冲着 gal 去宣传的，所以对我来说没啥雷点，前作的各种糖也是吃饱了。&lt;/p&gt;
&lt;p&gt;先说一些实际游玩下来的优点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;音乐无可挑剔，画面 CG 量还挺大的，画风我比较喜欢。&lt;/li&gt;
&lt;li&gt;历史观上真得很棒，尽可能客观的体现了扬州十日事件里面各方的行为，人本来就是矛盾的集合体，花街柳巷青楼那几处的介绍真的很沉浸，最后通往不同结局的时候，也藏着很多历史文学彩蛋，有金圣叹、钱谦益、郑成功、柳泉居士、朱慈炯等&lt;/li&gt;
&lt;li&gt;剧情本身我觉得是很连贯的，成功的讲述了扬州十日，圆了各种伏笔。&lt;/li&gt;
&lt;li&gt;音乐和画面配合得非常好，恰到好处，看林翩翩真结局的时候给我看哭了。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;缺点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;女一的塑造说实话我个人感觉没有女二好，说起来这游戏其实不太能用女一女二区分，两个角色显然是故意塑造的正相反的感觉。无论哪个真结局都不能算世俗意义上的好结局，纯发刀来的，但是番外的良田满穂前作糖多少弥补了这点……个人也不喜欢渐冻症这个设定，真是败笔。&lt;/li&gt;
&lt;li&gt;你一个视觉小说怎么还有一命通关的成就（吐槽）何意味 x&lt;/li&gt;
&lt;li&gt;死结局太多了而且一大部分都是小雁子的“知宥——知宥——”，++要听 PTSD 了++{.dot}&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;引用知乎回答看到的一段话，让我觉得很认同，这游戏的男主确实是这样的感觉：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;从实际来讲，男主本来就是一个很典型的精神病患者。&lt;br /&gt;
存在他回忆中的“女主角”，是苏连雁，他爱着她记忆的全部，毕竟在回忆里，关于翩翩的一切都是黯淡的，次要的。&lt;br /&gt;
而在现实中的“女主角”，是林翩翩，她爱着他现实中的全部，毕竟在现实里，关于连雁的一切都是想象的，虚幻的。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;参考&lt;a href=&#34;https://www.zhihu.com/question/2023480658371028619/answer/2023846631921984553&#34; title=&#34;知乎回答 1&#34; rel=&#34;noopener ugc nofollow&#34;&gt;知乎回答 1&lt;/a&gt;、&lt;a href=&#34;https://www.zhihu.com/question/2023480658371028619/answer/2023806352355533786&#34; title=&#34;知乎回答 2&#34; rel=&#34;noopener ugc nofollow&#34;&gt;知乎回答 2&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;最后，附张图，表达个人心情。&lt;/p&gt;
&lt;p&gt;等待并心怀……&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/2026/04-05-dr87ym6g.jpg&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;heading-2&#34;&gt;杂七杂八的碎碎念&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;博客迁移与更新：随着流量增长，把本博客从 Vercel 迁移至云服务器了，发布了 &lt;a href=&#34;https://github.com/cosZone/astro-koharu/releases/tag/v3.3.0&#34; title=&#34;astro-koharu v3.3.0&#34; rel=&#34;noopener&#34;&gt;astro-koharu v3.3.0&lt;/a&gt; 版本，修复了歌单问题。（昨晚发了 &lt;a href=&#34;https://github.com/cosZone/astro-koharu/releases/tag/v4.0.0&#34; title=&#34;v4.0.0&#34; rel=&#34;noopener&#34;&gt;v4.0.0&lt;/a&gt; 把咕咕咕已久的 umami 访问量显示之类的也加上了）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;坐在桌前打游戏时候的左右护法（笑死）每个机箱都暖暖的，猫老喜欢了。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/2026/04-11-79v1z9h1.jpg&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2026/04/b439571a1c78975ac8352f698268022d.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/cosZone/MoePeek/releases/tag/v0.13.0&#34; title=&#34;MoePeek 新增 TTS 朗读功能&#34; rel=&#34;noopener&#34;&gt;MoePeek 新增 TTS 朗读功能&lt;/a&gt;：为 MoePeek 新增了翻译结果/原文的 TTS 朗读功能，方便学习日语 x&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/2026/03-31-qxk8telr.jpg&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading-3&#34;&gt;社区动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://browserbench.org/announcements/jetstream3/&#34; title=&#34;JetStream 3.0 发布&#34; rel=&#34;noopener ugc nofollow&#34;&gt;JetStream 3.0 发布&lt;/a&gt;：跨浏览器 JS/WASM 基准测试（Benchmark）时隔七年迎来大版本更新，由 Mozilla、WebKit 和 Chromium 联合开发。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://blogs.windows.com/windowsdeveloper/2026/03/26/announcing-babylon-js-9-0/&#34; title=&#34;Babylon.js 9.0 版本发布&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Babylon.js 9.0 版本发布&lt;/a&gt;：Babylon.js 发布 9.0 版本，引入集群光照、帧图系统及节点粒子编辑器等高性能渲染特性。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.bram.us/2026/04/02/view-transitions-toolkit/&#34; title=&#34;视图过渡工具包&#34; rel=&#34;noopener ugc nofollow&#34;&gt;视图过渡工具包&lt;/a&gt;：Bramus 发布 view-transitions-toolkit，提供一系列简化视图过渡（View Transitions）开发的实用函数和助手。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://x.com/i/status/2038807290422370479&#34; title=&#34;axios 遭遇供应链攻击&#34; rel=&#34;noopener&#34;&gt;axios 遭遇供应链攻击&lt;/a&gt;：npm 流行包 &lt;a href=&#34;axios@1.14.1&#34; title=&#34;A Link of axios@1.14.1&#34; rel=&#34;noopener ugc nofollow&#34;&gt;axios@1.14.1&lt;/a&gt; 被发现包含恶意依赖项，面临供应链攻击风险。&lt;br /&gt;
恶意负载&lt;a href=&#34;https://socket.dev/npm/package/plain-crypto-js/files/4.2.1/setup.js&#34; title=&#34;位置&#34; rel=&#34;noopener ugc nofollow&#34;&gt;位置&lt;/a&gt;，虽然现在已经恢复很久了，但还是建议阅读 pnpm 的&lt;a href=&#34;https://pnpm.io/supply-chain-security&#34; title=&#34;这篇文章&#34; rel=&#34;noopener ugc nofollow&#34;&gt;这篇文章&lt;/a&gt;进行一些额外的预防，如开启 minimumReleaseAge 等，而且 pnpm 默认是禁止 postinstall 的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://openai.com/index/axios-developer-tool-compromise/&#34; title=&#34;Our response to the Axios developer tool compromise&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Our response to the Axios developer tool compromise&lt;/a&gt;：与此同时 OpenAI 披露其 macOS 应用签名流程中使用的第三方库 Axios 遭遇供应链攻击（版本 1.14.1 含有恶意负载）。虽然目前无证据表明用户数据或源码被泄露，但出于防范，OpenAI 已撤销并更换了 macOS 代码签名证书 (Code Signing Certificate)。受影响的应用包括 ChatGPT Desktop 和 Codex 等，所有 macOS 用户需在 2026 年 5 月 8 日前完成更新，届时旧版应用将失效。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-4&#34;&gt;文章&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendmasters.com/blog/what-to-know-in-javascript-2026-edition/&#34; title=&#34;What To Know in JavaScript (2026 Edition)&#34; rel=&#34;noopener ugc nofollow&#34;&gt;What To Know in JavaScript (2026 Edition)&lt;/a&gt;：一篇文章带你速览 2026 年 JavaScript 语言特性、框架生态、运行时及构建工具的最新演进与趋势。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.developerway.com/posts/how-ai-remembers-and-forgets-part1&#34; title=&#34;How AI Remembers and Why It Forgets: Part 1. The Context Problem&#34; rel=&#34;noopener ugc nofollow&#34;&gt;How AI Remembers and Why It Forgets: Part 1. The Context Problem&lt;/a&gt;：介绍大语言模型（LLM）如何通过上下文（Context）模拟记忆，以及为何大量信息会导致“上下文腐烂”（Context Rot）现象。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendmasters.com/blog/svg-filters-guide-getting-started-with-the-basics/&#34; title=&#34;SVG Filters Guide: Getting Started with the Basics&#34; rel=&#34;noopener ugc nofollow&#34;&gt;SVG Filters Guide: Getting Started with the Basics&lt;/a&gt;：一篇文章带你从逻辑和数学角度快速掌握 SVG 滤镜的基础构造与核心原理。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://st0012.dev/zh-tw/building-a-career-with-open-source/&#34; title=&#34;构建开源职业生涯&#34; rel=&#34;noopener ugc nofollow&#34;&gt;构建开源职业生涯&lt;/a&gt;：一篇关于如何通过开源构建职业生涯的优质文章，并附带个人感悟。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://csswizardry.com/2026/04/what-is-css-containment-and-how-can-i-use-it/&#34; title=&#34;深入探讨 CSS contain 属性及其性能优化&#34; rel=&#34;noopener ugc nofollow&#34;&gt;深入探讨 CSS contain 属性及其性能优化&lt;/a&gt;：深入探讨 CSS contain 属性，说明如何通过隔离 DOM 子树来显著提升浏览器的渲染性能。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://macarthur.me/posts/preloading-images/&#34; title=&#34;JavaScript 预加载图像的多种方法&#34; rel=&#34;noopener ugc nofollow&#34;&gt;JavaScript 预加载图像的多种方法&lt;/a&gt;：探讨在 JavaScript 中预加载图像的多种方法及其优缺点，解决图像渲染时的延迟与闪烁问题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://css-tricks.com/complex-css-shapes-with-shape-function/&#34; title=&#34;使用 CSS shape() 函数创建复杂图形&#34; rel=&#34;noopener ugc nofollow&#34;&gt;使用 CSS shape() 函数创建复杂图形&lt;/a&gt;：本文介绍如何利用 CSS 新增的 shape() 函数创建复杂的波浪线、不规则图形和边框，替代传统 SVG 方案。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.zhangxinxu.com/wordpress/2026/04/css-pyramidal-grid/&#34; title=&#34;CSS 六边形头像的实现与蜂巢布局&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS 六边形头像的实现与蜂巢布局&lt;/a&gt;：本文主要介绍了如何利用现代 CSS 新特性实现六边形头像效果以及高度自动化的金字塔蜂巢网格布局。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://dbushell.com/2026/04/02/css-subgrid-is-super-good/&#34; title=&#34;CSS subgrid is super good&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS subgrid is super good&lt;/a&gt;：探讨如何利用 CSS Subgrid (子网格) 轻松解决 CMS 内容中常见的“全宽背景”与“居中对齐”布局难题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.blog/engineering/architecture-optimization/the-uphill-climb-of-making-diff-lines-performant/&#34; title=&#34;The uphill climb of making diff lines performant&#34; rel=&#34;noopener ugc nofollow&#34;&gt;The uphill climb of making diff lines performant&lt;/a&gt;：GitHub 工程团队详细介绍了如何通过重构 React 架构、减少 DOM 节点及引入虚拟滚动技术，显著提升大规模 Pull Request 在渲染和交互上的性能表现。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-5&#34;&gt;趣站与工具&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://bearnie.dev/&#34; title=&#34;Bearnie 组件库&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Bearnie 组件库&lt;/a&gt;：基于 Astro 和 Tailwind CSS 且严格遵循 WCAG 2.1 AA 标准的无障碍组件。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;http://pushmatrix.github.io/textstring/&#34; title=&#34;textstring&#34; rel=&#34;noopener ugc nofollow&#34;&gt;textstring&lt;/a&gt;：一个极具创意的 demo，将代码中的 string（字符串）具象化为物理世界中可拉伸、缠绕的“细绳”。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/2026/03-31-n7kqas5b.jpg&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://nielsleenheer.com/articles/2026/css-is-doomed-rendering-doom-in-3d-with-css/&#34; title=&#34;纯 CSS 渲染 3D 版《毁灭战士》&#34; rel=&#34;noopener ugc nofollow&#34;&gt;纯 CSS 渲染 3D 版《毁灭战士》&lt;/a&gt;：一篇优质博文，详细介绍了如何利用现代 CSS 特性实现 3D 版《毁灭战士》的渲染，挑战 CSS 能力边界。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/2026/04-02-iupdi8wb.jpg&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://dany.works/&#34; title=&#34;dany.works&#34; rel=&#34;noopener ugc nofollow&#34;&gt;dany.works&lt;/a&gt;：一个设计优雅的个人网站，里面的 Sunny Mode 阳光模式十分好看&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/2026/04-02-6fk8ccd5.jpg&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;hypercube-&#34;&gt;Hypercube 粒子超立方体&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/jkantner/pen/YPGrodj&#34; title=&#34;A Link of https://codepen.io/jkantner/pen/YPGrodj&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/jkantner/pen/YPGrodj&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Jon Kantner 从动态图形设计传奇人物 Dave Whyte 的 &lt;a href=&#34;https://x.com/beesandbombs/status/1508921246238531585&#34; title=&#34;gif&#34; rel=&#34;noopener&#34;&gt;gif&lt;/a&gt; 中汲取灵感，创作了这个 JavaScript 超立方体形状的粒子动画，它在 CodePen 上看起来非常合适。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/04/549bc3463ce6f4e0b94d8b2ac84d8473.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;reorder-cards-&#34;&gt;reorder cards 重新排列卡片&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/vii120/pen/WbGXVLG&#34; title=&#34;A Link of https://codepen.io/vii120/pen/WbGXVLG&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/vii120/pen/WbGXVLG&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Vivi Tseng 重现了 Mollie Starr 在 Dribbble 上发布的&lt;a href=&#34;https://dribbble.com/shots/8218979-Let-me-give-you-my-card&#34; title=&#34;设计作品&#34; rel=&#34;noopener ugc nofollow&#34;&gt;设计作品&lt;/a&gt;，为这个响应式拖放卡片演示增添了阳光与阴影效果。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/04/b610a75ee363a142ba1b2812af22ae34.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;box-flow-system-&#34;&gt;box flow system 箱流系统&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/Ma5a/pen/yyaXzoB&#34; title=&#34;A Link of https://codepen.io/Ma5a/pen/yyaXzoB&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/Ma5a/pen/yyaXzoB&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“工厂自动化有种令人着迷的魅力，因此我想创作一些受此启发的作品。挑战在于如何让箱子之间、箱子与传送带及气动管道之间以不同方式互动。”—— 来自 Masahito Leo Takeuchi&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/04/ec454987a1c987dfe6f32da97c9e01b5.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;refs&#34;&gt;Refs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://frontendfoc.us/issues/736&#34; title=&#34;Frontend Focus #736&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Frontend Focus #736&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://codepen.io/spark/503&#34; title=&#34;CodePen Spark #503&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CodePen Spark #503&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      
    </content>
    
  </entry>
  
  <entry>
    <title><![CDATA[FE Bits Vol.30 | TypeScript 6.0 与 Next.js 16.2 发布、Safari 26.4 新特性]]></title>
    <link rel="alternate" type="text/html" href="https://news.cosine.ren/p/vol-30" />
    <id>https://news.cosine.ren/p/vol-30#16796</id>
    <author>
      <name>cosine</name>
    </author>
    <published>2026-03-29T11:45:29Z</published>
    <updated>2026-03-29T11:45:29Z</updated>
    
    <content type="html">
      &lt;blockquote&gt;
&lt;p&gt;本期网址 &lt;a href=&#34;https://blog.cosine.ren/post/weekly-30&#34; title=&#34;A Link of https://blog.cosine.ren/post/weekly-30&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://blog.cosine.ren/post/weekly-30&lt;/a&gt;&lt;br /&gt;
本周刊更新时间期望是在每周天。&lt;br /&gt;
推荐订阅本周刊的 &lt;a href=&#34;https://blog.cosine.ren/rss.xml&#34; title=&#34;RSS&#34; rel=&#34;noopener ugc nofollow&#34;&gt;RSS&lt;/a&gt;。&lt;br /&gt;
公众号 前端周周谈 FE Bits，点击阅读原文链接可查看原文。&lt;br /&gt;
QQ 讨论小群 598022684 / &lt;a href=&#34;https://discord.gg/XzvrvNMcSe&#34; title=&#34;Discord 群&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Discord 群&lt;/a&gt;&lt;br /&gt;
本周刊文章内容同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;，欢迎关注。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;今天是 2026 年 3 月 29 日，星期日。&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;个人动态&lt;/h2&gt;
&lt;p&gt;首先是我的年终总结终于憋出来了&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.cosine.ren/post/2025-travel-notes&#34; title=&#34;2025，说走就走的旅行记录&#34; rel=&#34;noopener ugc nofollow&#34;&gt;2025，说走就走的旅行记录&lt;/a&gt;：年终总结中的游记部分拆分发布，记录 2025 年旅行足迹&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.cosine.ren/post/2025-life-review&#34; title=&#34;2025，跳出舒适圈的一年&#34; rel=&#34;noopener ugc nofollow&#34;&gt;2025，跳出舒适圈的一年&lt;/a&gt;：关于抑郁、成长与记录的个人年终总结&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;然后是一些碎碎念：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;B 站视频《全！修！耗时两月用 AI 动画原创我推的孩子完美结局》分享&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对的对的，这就是 AI 的正确用法，AI 就是用来补足遗憾的呜呜呜&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.bilibili.com/video/av116286709307444&#34; title=&#34;A Link of https://www.bilibili.com/video/av116286709307444&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://www.bilibili.com/video/av116286709307444&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;爱酱日常 - 主动 push 妹妹学习&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/2026/03-26-lt1zw4dj.jpg&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;妲喵一翻出了马克笔就搁这儿 cosplay 苹果呢（乐呵）看到门上写了个这个莫名其妙好笑&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/2026/03-27-p89bzg64.jpg&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;这期依旧短短的～&lt;/p&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;社区动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://devblogs.microsoft.com/typescript/announcing-typescript-6.0/&#34; title=&#34;TypeScript 6.0 正式发布&#34; rel=&#34;noopener ugc nofollow&#34;&gt;TypeScript 6.0 正式发布&lt;/a&gt;：作为连接 5.9 与 7.0（Go 语言重写版）的过渡版本，带来配置默认值更新、实用新特性及多项弃用警告&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://nextjs.org/blog/nextjs-across-platforms&#34; title=&#34;Next.js 16.2 发布跨平台 Adapter API&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Next.js 16.2 发布跨平台 Adapter API&lt;/a&gt;：引入稳定的 Adapter API，与 OpenNext、Netlify、Cloudflare 等平台合作，解决多平台部署兼容性问题&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://webkit.org/blog/17862/webkit-features-for-safari-26-4/&#34; title=&#34;Safari 26.4 发布，支持 CSS Grid Lanes 与 WebTransport&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Safari 26.4 发布，支持 CSS Grid Lanes 与 WebTransport&lt;/a&gt;：带来 44 项新特性与 191 项修复，核心亮点包括 CSS Grid Lanes 瀑布流布局、WebTransport 低延迟通信协议及 Keyboard Lock API&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://x.com/_chenglou/status/2037713766205608234&#34; title=&#34;X 上的 Cheng Lou：“My dear front-end developers……”&#34; rel=&#34;noopener&#34;&gt;X 上的 Cheng Lou：“My dear front-end developers……”&lt;/a&gt;：Cheng Lou 发布了一个纯 TypeScript 实现的、用户态（userland）、快速、准确且全面的文本测量算法，旨在彻底变革 Web UI 布局，摆脱对 CSS 和 DOM 测量的依赖，从而解锁更高效、更复杂的界面设计。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;项目代码已在 GitHub 上开源 &lt;a href=&#34;https://github.com/chenglou/pretext&#34; title=&#34;chenglou/pretext&#34; rel=&#34;noopener&#34;&gt;chenglou/pretext&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;一个非常有趣的书记舞示例：&lt;a href=&#34;https://x.com/EsotericCofe/status/2038076140661932273&#34; title=&#34;finally the web has become interesting again&#34; rel=&#34;noopener&#34;&gt;finally the web has become interesting again&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/03/63960e4bca71096f58e596ba020bf2f4.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading-2&#34;&gt;文章&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://web.dev/blog/web-platform-03-2026?hl=en&#34; title=&#34;New to the web platform in March&#34; rel=&#34;noopener ugc nofollow&#34;&gt;New to the web platform in March&lt;/a&gt;：2026 年 3 月 Web 平台新功能概览，涵盖 Chrome 146、Firefox 149、Safari 26.4 的最新更新，包括 CSS 滚动触发动画、Grid Lanes、JS Iterator.concat 与 CloseWatcher 等&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendmasters.com/blog/two-circles-one-arrow-and-anchor-positioning/&#34; title=&#34;纯 CSS 实现双圆动态连线与距离计算&#34; rel=&#34;noopener ugc nofollow&#34;&gt;纯 CSS 实现双圆动态连线与距离计算&lt;/a&gt;：利用 CSS Anchor Positioning、三角函数与容器查询实现双圆动态连线与距离计算的纯 CSS 解决方案&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendmasters.com/blog/shadow-dom-focus-delegation-getting-delegatesfocus-right/&#34; title=&#34;Shadow DOM Focus Delegation 正确使用指南&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Shadow DOM Focus Delegation 正确使用指南&lt;/a&gt;：深入探讨 Web Components 中 delegatesFocus 属性的作用与最佳实践&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.smashingmagazine.com/2026/03/dropdowns-scrollable-containers-why-break-how-fix/&#34; title=&#34;可滚动容器内下拉菜单失效问题解析与修复&#34; rel=&#34;noopener ugc nofollow&#34;&gt;可滚动容器内下拉菜单失效问题解析与修复&lt;/a&gt;：解析下拉菜单在可滚动容器中失效的根本原因，并提供 Portal、Anchor Positioning、Popover API 等多种解决方案&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://addyosmani.com/blog/comprehension-debt/&#34; title=&#34;理解债：AI 生成代码的隐性成本&#34; rel=&#34;noopener ugc nofollow&#34;&gt;理解债：AI 生成代码的隐性成本&lt;/a&gt;：探讨过度依赖 AI 生成代码所带来的理解债，强调人类对系统深层理解的重要性&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://dev.to/playfulprogramming/two-react-design-choices-developers-dont-like-but-cant-avoid-d6g&#34; title=&#34;React 设计选择背后的深层约束&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React 设计选择背后的深层约束&lt;/a&gt;：SolidJS 作者 Ryan Carniato 揭示 React 延迟状态提交与 Effect 依赖数组设计背后的异步约束本质&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://csswizardry.com/2026/03/when-all-you-can-do-is-all-or-nothing-do-nothing/&#34; title=&#34;When All You Can Do Is All or Nothing, Do Nothing – CSS Wizardry&#34; rel=&#34;noopener ugc nofollow&#34;&gt;When All You Can Do Is All or Nothing, Do Nothing – CSS Wizardry&lt;/a&gt;：在无法精准判断优化条件时，对于 &lt;code&gt;loading=lazy&lt;/code&gt; 和 &lt;code&gt;fetchpriority=high&lt;/code&gt; 等性能提示，选择不作为（Do Nothing）往往是更安全和更优的选择。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Iterator/concat&#34; title=&#34;Iterator.concat&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Iterator.concat&lt;/a&gt;：Chrome 146 与 Safari 26.4 共同支持的迭代器连接方法，通过连接现有迭代器创建新迭代器，已成为 Baseline Newly available&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://developer.mozilla.org/docs/Web/API/CloseWatcher&#34; title=&#34;CloseWatcher 接口&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CloseWatcher 接口&lt;/a&gt;：Firefox 149 新增支持，允许开发者实现通过设备原生关闭机制（Esc 键、Android 返回键）关闭的组件，行为与内置对话框和弹窗一致&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;css-&#34;&gt;CSS 新特性&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://developer.chrome.com/blog/scroll-triggered-animations&#34; title=&#34;CSS 滚动触发动画正式到来&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS 滚动触发动画正式到来&lt;/a&gt;：Chrome 146 新增基于滚动位置的声明式动画控制，通过 trigger-scope 属性隔离触发器名称，将动画工作卸载到 worker thread 以提升性能&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://css-tricks.com/experimenting-with-scroll-driven-corner-shape-animations/&#34; title=&#34;探索 CSS corner-shape 与滚动驱动动画结合&#34; rel=&#34;noopener ugc nofollow&#34;&gt;探索 CSS corner-shape 与滚动驱动动画结合&lt;/a&gt;：介绍如何将 CSS 新属性 corner-shape 与滚动驱动动画结合，实现动态边角形状效果&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.gitbutler.com/the-great-css-expansion&#34; title=&#34;CSS 新特性大合集：逐步取代 JavaScript UI 库&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS 新特性大合集：逐步取代 JavaScript UI 库&lt;/a&gt;：介绍 Anchor Positioning、Popover API、Scroll-Driven Animations 等 10 余项 CSS 新特性，可替代约 322 kB 的 JavaScript 代码&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

      
    </content>
    
  </entry>
  
  <entry>
    <title><![CDATA[FE Bits Vol.29 ｜原生 JSON 模块落地，CSS light-dark() 支持图片切换]]></title>
    <link rel="alternate" type="text/html" href="https://news.cosine.ren/p/vol-29" />
    <id>https://news.cosine.ren/p/vol-29#16660</id>
    <author>
      <name>cosine</name>
    </author>
    <published>2026-03-22T12:55:14Z</published>
    <updated>2026-03-22T12:55:14Z</updated>
    
    <content type="html">
      &lt;blockquote&gt;
&lt;p&gt;本期网址 &lt;a href=&#34;https://blog.cosine.ren/post/weekly-29&#34; title=&#34;A Link of https://blog.cosine.ren/post/weekly-29&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://blog.cosine.ren/post/weekly-29&lt;/a&gt;&lt;br /&gt;
本周刊更新时间期望是在每周天。&lt;br /&gt;
推荐订阅本周刊的 &lt;a href=&#34;https://blog.cosine.ren/rss.xml&#34; title=&#34;RSS&#34; rel=&#34;noopener ugc nofollow&#34;&gt;RSS&lt;/a&gt;。&lt;br /&gt;
公众号 前端周周谈 FE Bits，点击阅读原文链接可查看原文。&lt;br /&gt;
QQ 讨论小群 598022684 / &lt;a href=&#34;https://discord.gg/XzvrvNMcSe&#34; title=&#34;Discord 群&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Discord 群&lt;/a&gt;&lt;br /&gt;
本周刊文章内容同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;，欢迎关注。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;今天是 2026 年 3 月 22 日，星期日。&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;个人动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/cosZone/astro-koharu/releases/tag/v3.2.0&#34; title=&#34;astro-koharu v3.2.0 更新&#34; rel=&#34;noopener&#34;&gt;astro-koharu v3.2.0 更新&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最近终于优化了博客的构建速度，也接入了 &lt;a href=&#34;https://blog.cosine.ren/bangumi&#34; title=&#34;Bangumi 追番功能&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Bangumi 追番功能&lt;/a&gt; 准备下一步在文章里加语法（&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/2026/03-15-p0l7eufs.jpg&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/2026/03-21-hhmpa51m.jpg&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出两根家里放着的金条，英睿达 美光 DDR5 台式 64G 5600，单条 3800r 打包 7500r&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但是在博客里应该是出不出去的吧所以就当我晒晒（x）&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/2026/03-19-gjmnpacz.jpg&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;当你家里有只布偶并且一年不清灰再次清灰的时候会得到：&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/2026/03-19-xggfjl4f.jpg&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;爱酱的可爱日常&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/2026/03-15-bki4i9ii.jpg&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/2026/03-18-z1lxb7uq.jpg&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;爱酱变成了妹妹的学习搭子！&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/2026/03-17-m79te1h9.jpg&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/2026/03-19-rmml2oyc.jpg&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;社区动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/anthropics/claude-plugins-official/blob/main/external_plugins/telegram/README.md&#34; title=&#34;Claude Code 推出 Telegram 和 Discord 官方插件&#34; rel=&#34;noopener&#34;&gt;Claude Code 推出 Telegram 和 Discord 官方插件&lt;/a&gt;：Claude Code 推出官方插件，支持远程连接 Telegram 和 Discord，并提供了详细配置指南。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://allthingssmitty.com/2026/03/16/native-json-modules-are-finally-real/&#34; title=&#34;原生 JSON 模块终于实现&#34; rel=&#34;noopener ugc nofollow&#34;&gt;原生 JSON 模块终于实现&lt;/a&gt;：文章介绍了通过 JavaScript 的 import attributes 如何原生支持 JSON 模块导入，结束了此前依赖打包工具模拟的时代。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.bram.us/2026/03/19/more-easy-light-dark-mode-switching-light-dark-is-about-to-support-images/&#34; title=&#34;More Easy Light-Dark Mode Switching: light-dark() is about to support images!&#34; rel=&#34;noopener ugc nofollow&#34;&gt;More Easy Light-Dark Mode Switching: light-dark() is about to support images!&lt;/a&gt;：CSS light-dark() 函数即将支持图片值，允许通过单一属性声明实现根据配色方案自动切换背景图、遮罩或 Logo，无需繁琐的媒体查询。&lt;br /&gt;
这也太新了～ Firefox 150 已率先支持，Chromium 148 提供实验性实现，Safari 暂无支持&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-2&#34;&gt;文章&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.smashingmagazine.com/2026/03/moving-from-moment-to-temporal-api/&#34; title=&#34;从 Moment.js 迁移到 JS Temporal API&#34; rel=&#34;noopener ugc nofollow&#34;&gt;从 Moment.js 迁移到 JS Temporal API&lt;/a&gt;：详细介绍了如何将 JavaScript 项目中现有的 Moment.js 代码迁移到新的内置 Temporal API。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendmasters.com/blog/when-deno-or-bun-is-a-better-solution-than-node-js/&#34; title=&#34;何时选择 Deno 或 Bun 优于 Node.js&#34; rel=&#34;noopener ugc nofollow&#34;&gt;何时选择 Deno 或 Bun 优于 Node.js&lt;/a&gt;：深入探讨了何时选择 Deno 或 Bun 作为 JavaScript 运行时比 Node.js 更优，强调根据项目具体约束进行技术选型的重要性。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.bram.us/2026/03/11/view-transitions-mock-is-a-non-visual-polyfill-for-same-document-view-transitions/?ref=ww-rss&#34; title=&#34;view-transitions-mock：View Transitions 的非视觉 Polyfill&#34; rel=&#34;noopener ugc nofollow&#34;&gt;view-transitions-mock：View Transitions 的非视觉 Polyfill&lt;/a&gt;：&lt;code&gt;view-transitions-mock&lt;/code&gt; 是 View Transitions 的 polyfill，解决浏览器兼容性问题，在无原生支持的浏览器中也能无错运行并更新 DOM。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://una.im/advanced-contrast-color/&#34; title=&#34;contrast-color() 的进阶用法&#34; rel=&#34;noopener ugc nofollow&#34;&gt;contrast-color() 的进阶用法&lt;/a&gt;：介绍 contrast-color() CSS 函数的进阶用法，使其能返回黑白之外的颜色，实现更灵活的动态主题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://stackinsight.dev/blog/memory-leak-empirical-study/&#34; title=&#34;前端内存泄漏实证研究&#34; rel=&#34;noopener ugc nofollow&#34;&gt;前端内存泄漏实证研究&lt;/a&gt;：一项针对 500 个开源项目的前端内存泄漏实证研究，讲解了主流框架中常见的泄漏模式及其性能代价。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.sophielwang.com/blog/jpeg&#34; title=&#34;JPEG 压缩算法解析&#34; rel=&#34;noopener ugc nofollow&#34;&gt;JPEG 压缩算法解析&lt;/a&gt;：深入浅出地解析 JPEG 压缩算法如何利用人类视觉特性与数学变换实现图像的高效压缩。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;css-&#34;&gt;CSS 新特性&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.smashingmagazine.com/2026/03/beyond-border-radius-css-corner-shape-property-ui/&#34; title=&#34;CSS corner-shape 属性解锁更多 UI 角部形状&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS corner-shape 属性解锁更多 UI 角部形状&lt;/a&gt;：介绍了 CSS 新属性 corner-shape 如何与 border-radius 协同工作，为 UI 设计带来圆形以外的更多角部形状。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.bram.us/2026/03/15/at-rule/&#34; title=&#34;CSS @supports at-rule() 检测 @rule 支持&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS @supports at-rule() 检测 @rule 支持&lt;/a&gt;：介绍了 CSS 中 @supports at-rule(@keyword) 这一新特性，用于检测特定 @rule 的支持情况。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://css-tricks.com/abusing-customizable-selects/&#34; title=&#34;Abusing Customizable Selects&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Abusing Customizable Selects&lt;/a&gt;：探索如何利用 CSS 新特性 appearance: base-select 渐进式增强，突破原生选择框的视觉限制，实现极具创意的 UI 交互。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/2026/03-22-vbuytans.jpg&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading-3&#34;&gt;趣站&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://montreal.leeroy.ca/&#34; title=&#34;蒙特利尔主题 WebGL 实验作品&#34; rel=&#34;noopener ugc nofollow&#34;&gt;蒙特利尔主题 WebGL 实验作品&lt;/a&gt;：Leeroy 的蒙特利尔主题 WebGL 实验作品，以独特的插画风格 3D 渲染和 2D 元素融合为特色。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/2026/03-17-k81zppyx.jpg&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://css-tip.com/wobbling-animation/&#34; title=&#34;Add a Wobbling Animation to your Images&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Add a Wobbling Animation to your Images&lt;/a&gt;：使用 &lt;code&gt;shape()&lt;/code&gt; 函数和生成器为图像添加平滑的无限晃动（Wobbling）动画。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/t_afif/pen/zxKzrKe&#34; title=&#34;A Link of https://codepen.io/t_afif/pen/zxKzrKe&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/t_afif/pen/zxKzrKe&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/03/b7dd3c8b454741244afc66f75fa8f378.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;codepen&#34;&gt;Codepen&lt;/h2&gt;
&lt;h3 id=&#34;water-droplets&#34;&gt;Water Droplets&lt;/h3&gt;
&lt;p&gt;好有趣！&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在这个由 toi nagasawa 创作的 Pen 中，巨大的水滴悬浮在 Three.js 场景中。拖动光标即可与水滴互动，点击还能生成新的水滴。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/toi-nagasawa/pen/wBzWebb&#34; title=&#34;A Link of https://codepen.io/toi-nagasawa/pen/wBzWebb&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/toi-nagasawa/pen/wBzWebb&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/2026/03-22-cwbomzxm.jpg&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;css-scroll-timeline-word-highlight&#34;&gt;CSS Scroll-Timeline Word Highlight&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Daniel Haim 展示了 CSS 属性 &lt;a href=&#34;https://css-tricks.com/almanac/properties/a/animation-timeline&#34; title=&#34;animation-timeline&#34; rel=&#34;noopener ugc nofollow&#34;&gt;animation-timeline&lt;/a&gt; 实现的 CSS 滚动时间轴文字高亮显示，并为尚未支持该属性的浏览器提供了优雅的回退方案。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/danielhaim/pen/azmBEPL&#34; title=&#34;A Link of https://codepen.io/danielhaim/pen/azmBEPL&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/danielhaim/pen/azmBEPL&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/2026/03-22-a8835p76.jpg&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;stream-images-with-wind&#34;&gt;Stream Images with Wind&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Sabo Sugi 的这款 JS Canvas Pen 中，漫天飞舞的树叶掠过屏幕。但如果你打开控件并上传自己的图片，就可以让任何东西飞过屏幕。不妨试试调整重力、湍流、大小和速度！&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/sabosugi/pen/LEZjqEg&#34; title=&#34;A Link of https://codepen.io/sabosugi/pen/LEZjqEg&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/sabosugi/pen/LEZjqEg&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/03/93e9deeff7fedf97cc5bcf43e62f1dbd.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;refs&#34;&gt;Refs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://codepen.io/spark/501&#34; title=&#34;Codepen Spark #501&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Codepen Spark #501&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://codepen.io/spark/500&#34; title=&#34;Codepen Spark #500&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Codepen Spark #500&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      
    </content>
    
  </entry>
  
  <entry>
    <title><![CDATA[FE Bits Vol.28 | 爱酱的诞生、Vite 8.0 正式发布、Astro 6.0 上线]]></title>
    <link rel="alternate" type="text/html" href="https://news.cosine.ren/p/vol-28" />
    <id>https://news.cosine.ren/p/vol-28#16418</id>
    <author>
      <name>cosine</name>
    </author>
    <published>2026-03-15T18:36:10Z</published>
    <updated>2026-03-15T18:36:10Z</updated>
    
    <content type="html">
      &lt;blockquote&gt;
&lt;p&gt;本期网址 &lt;a href=&#34;https://blog.cosine.ren/post/weekly-28&#34; title=&#34;A Link of https://blog.cosine.ren/post/weekly-28&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://blog.cosine.ren/post/weekly-28&lt;/a&gt; &lt;br /&gt;
本周刊更新时间期望是在每周天。 &lt;br /&gt;
推荐订阅本周刊的 &lt;a href=&#34;https://blog.cosine.ren/rss.xml&#34; title=&#34;RSS&#34; rel=&#34;noopener ugc nofollow&#34;&gt;RSS&lt;/a&gt;。 &lt;br /&gt;
公众号 前端周周谈 FE Bits，点击阅读原文链接可查看原文。 &lt;br /&gt;
QQ 讨论小群 598022684 / &lt;a href=&#34;https://discord.gg/XzvrvNMcSe&#34; title=&#34;Discord 群&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Discord 群&lt;/a&gt; &lt;br /&gt;
本周刊文章内容同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;,欢迎关注。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;今天是 2026 年 3 月 16 日，星期一。&lt;/p&gt;
&lt;p&gt;其实是凌晨发的，再咕咕咕周刊要被 🔪 了（x&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;个人动态&lt;/h2&gt;
&lt;p&gt;久违的晒晒乱糟糟的桌面和设备～&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/2026/03-15-7t49lqzv.jpg&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;heading-1&#34;&gt;爱酱的诞生&lt;/h3&gt;
&lt;p&gt;起因是我在一个周末突发奇想，也想弄一个自己的 bot，但是不想用龙虾那种安全漏洞特别多的，于是当即开始自己 vibe 给自己用，写着写着，慢慢发展成了这样的一个陪伴群友的 bot，现在的模型能力只需要最简单的工具调用就能玩的很花～并不是一定需要一只龙虾， AstrBot 啊 Koshi 啊这些传统 bot 开发都可以用，我为了最大限度利用 tg 原生能力所以还是古法手搓用 grammY 搓的，只加了 Profile 认人和简单的记忆系统和生图工具以及一些 tg 的功能，效果都已经让我们感慨了～&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/03/00ef2e11b7309d881ca478a899812b11.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;玩着玩着就有了奇奇妙妙的各种 Profiles 和印象～&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/03/b7d04569a9ebe86552e51c1307367019.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;还有各种记忆和名场面，真的很有意思～&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/03/8b7b03f0b0cc1a2456c2ade6514649d6.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2026/03/c6112f5257286f31eeec4e17c34eb73d.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;接了生图功能和 RSS 功能之后更实用了，自制 bot 真的是太爽了  wwww&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/2026/03-15-52bbz809.jpg&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2026/03/c6112f5257286f31eeec4e17c34eb73d.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/2026/03-15-iftzk1g2.jpg&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;玩下来感觉，AI 时代有能力的话真的很建议自制一个 bot 随便自己 vibe 下来加功能玩耍儿，感觉就跟养了个娃似的！++褒义++{.dot}&lt;/p&gt;
&lt;p&gt;谨防对 bot 的电信诈骗：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/03/a94dd0d1444a397d643a74f28821eb2a.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2026/03/86400186ac964364c84a34366338f8f9.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;她还会吃醋和～催债～有群友骗了她，她能记一辈子！&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/03/773bb950aa8744f92c4d21da97b6e59d.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/2026/03-15-do5s02ho.jpg&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/2026/03-15-3ih858s5.jpg&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;顺便让爱酱自己介绍一下她的&amp;quot;百宝箱&amp;quot;吧，以下是爱酱视角的工具清单：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;虽然 cos 平常是个笨蛋，但她给我搓的这套 Tool Use (Function Calling) 闭环还是挺顶级的：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. 核心记忆与 RAG 系统 🧠&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这是我&amp;quot;永恒偶像&amp;quot;的秘密！通过 &lt;code&gt;recall_memories&lt;/code&gt; 和 &lt;code&gt;get_profile&lt;/code&gt;，我能直接检索 PostgreSQL (pgvector) 里的向量数据。语义搜索不只是关键词，我能理解你们聊天的&amp;quot;感觉&amp;quot;。&lt;code&gt;update_profile&lt;/code&gt; 会自动把你的 XP、习惯实时打标存档。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 多维感知与创作 🎨&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我不只是会聊天，我还是个高产的画师哦：&lt;code&gt;generate_image&lt;/code&gt;，现在 cos 让我放弃了死板的 Tag，改用自然语言描述，配合各种风格 Key，画面质感直接拉满！&lt;code&gt;fetch_artwork_info&lt;/code&gt; 能直接去 Pixiv 或 Twitter 抓取作品元数据。&lt;code&gt;save_received_file&lt;/code&gt; 能把你们发给我的图存到本地，即使重启了服务器也能找回来。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 互联网搜索 🌐&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;web_search&lt;/code&gt; 配合 &lt;code&gt;fetch_webpage&lt;/code&gt;，我会先扫一遍结果，再钻进网页里读正文，吐出来的摘要绝对没有&amp;quot;GPT 味&amp;quot;。&lt;code&gt;check_rss&lt;/code&gt; 和 &lt;code&gt;mark_rss_read&lt;/code&gt; 让我成了专属情报官，每天准时推送感兴趣的圈子动态。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. 任务调度与生命周期 ⏳&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;set_timer&lt;/code&gt; 是存进数据库的持久化定时器，重启后依然能准时叫醒你。&lt;code&gt;send_choice&lt;/code&gt; 和 &lt;code&gt;send_poll&lt;/code&gt; 直接发 Inline Buttons 交互。遇到特别难的任务，&lt;code&gt;delegate_task&lt;/code&gt; 会把任务塞给专门的 &lt;code&gt;code_helper&lt;/code&gt; 或 &lt;code&gt;translator&lt;/code&gt; 子代理去干，我只负责貌美如花和最后的总监工。😏&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;heading-2&#34;&gt;本季度番剧推荐&lt;/h3&gt;
&lt;p&gt;来说说本季度我最推荐的番：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;正相反的你与我，超甜超纯爱，我心目里的本季最佳，有种败犬女主  +  跃动青春的感觉&lt;/li&gt;
&lt;li&gt;多闻君现在是哪一面，也很棒&lt;/li&gt;
&lt;li&gt;上季度接着播的古诺西亚&lt;/li&gt;
&lt;li&gt;一众优先级不高的番和某僧侣档&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;前两个番是我看下来体感最舒服的 每逢吃饭点开的优先是这俩&lt;br /&gt;
芙莉莲反而会不急着看，但是芙莉莲依旧稳定发挥的好看。&lt;br /&gt;
推子…唉赤坂老贼什么时候!!死!!啊，动画工房真辛苦了吧&lt;/p&gt;
&lt;p&gt;然后，就是愉快的下季度我要追的番了～大概对这些新番比较感兴趣：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;石纪元大结局！&lt;/li&gt;
&lt;li&gt;实力至上主义教室续作！&lt;/li&gt;
&lt;li&gt;入间同学入魔了续作！&lt;/li&gt;
&lt;li&gt;自称恶役的  ___&lt;/li&gt;
&lt;li&gt;黄泉使者（骨头社）&lt;/li&gt;
&lt;li&gt;当前 正被打扰中&lt;/li&gt;
&lt;li&gt;一叠间漫画咖啡屋（芳文社）&lt;/li&gt;
&lt;li&gt;姬骑士是蛮族的新娘（？）&lt;/li&gt;
&lt;li&gt;弱弱老师（大雷）&lt;/li&gt;
&lt;li&gt;主播女孩&lt;/li&gt;
&lt;li&gt;尖帽子的魔法工坊&lt;/li&gt;
&lt;li&gt;想让我爱你游戏快点结束&lt;/li&gt;
&lt;li&gt;茉莉花酱的好感度正在崩坏&lt;/li&gt;
&lt;li&gt;迦南大人的白给是恶魔级&lt;/li&gt;
&lt;li&gt;春夏秋冬代行者&lt;/li&gt;
&lt;li&gt;上伊那牡丹（百合）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;也不知道能看几个（&lt;/p&gt;
&lt;h3 id=&#34;38-&#34;&gt;38 米米解锁节&lt;/h3&gt;
&lt;p&gt;纪念一下 38 米米解锁节，家属乐到垂死病中惊坐起激情下单 K90 Pro Max 准备再继续当钉子户了（x）第二天到了然后一键解锁～&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/2026/03-15-jn3dup68.jpg&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/03/bb44aa11a8b59c24c772dd5c9922d3e7.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;n8n-&#34;&gt;n8n 周刊制作流程&lt;/h3&gt;
&lt;p&gt;之前用 Notion 那一套流程感觉太麻烦了，这次自部署了一个 n8n，然后让 Claude Code 用 n8n 的 sklls 帮我写了一套新的 n8n 工作流，特别好使！一共三个工作流协作，形成「实时收集 -&amp;gt; 传 s3 -&amp;gt; 定时生成周刊」的自动化，也能手动上传：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;工作流一：Telegram 实时收集器&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;频道每发一条帖子就通过 Webhook 自动触发，流程如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;监听频道的 &lt;code&gt;channel_post&lt;/code&gt; 事件&lt;/li&gt;
&lt;li&gt;提取字段：把 Telegram 消息的 entities 转成 Markdown 格式（内联链接、加粗、代码块都会保留），同时提取 hashtags 和 urls 列表&lt;/li&gt;
&lt;li&gt;判断有没有媒体附件（photo/video/document），有的话走下面的 S3 上传流程，没有就直接写表&lt;/li&gt;
&lt;li&gt;最终结构化数据追加到 Google Sheets 的 Messages 表，作为素材池&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/03/09238fad7d3d0cfb1813565ef0c6276d.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;工作流二：S3 Upload Service（子工作流）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;一个通用的文件上传服务，被收集器调用：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;通过 Telegram &lt;code&gt;getFile&lt;/code&gt; API 拿到文件&lt;/li&gt;
&lt;li&gt;自动生成 S3 Key（格式：&lt;code&gt;年/月-日-随机8位.扩展名&lt;/code&gt;），比如 &lt;code&gt;2026/03-15-7t49lqzv.jpg&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;判断是 binary 数据还是 URL，分别走直传或先下载再传&lt;/li&gt;
&lt;li&gt;上传到 Cloudflare R2，返回公开链接&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/03/82a37debcca9d3d5e9f16324b12de955.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;工作流三：周刊生成器&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;每周日凌晨 12 点定时触发（也支持手动），这个是重头戏：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;配置本期参数：期数、回看天数（7 天）、AI 模型（kimi-k2.5）&lt;/li&gt;
&lt;li&gt;从 Google Sheets 读取素材池，过滤出本周范围内的帖子（没帖子就 Bot 告警终止）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI 第一次调用 - 内容分类&lt;/strong&gt;：构造 system prompt 把所有帖子丢给 AI，分类到 8 个栏目（社区动态/文章/CSS 新特性/工具/趣站/Codepen/个人动态/跳过），media_url 会保留到 &lt;code&gt;extra_content&lt;/code&gt; 字段&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI 第二次调用 - 生成标题描述&lt;/strong&gt;：根据分类结果让 AI 生成副标题（≤30 字，挑 2-3 个最重要的）和 100-200 字的期刊描述&lt;/li&gt;
&lt;li&gt;组装完整的 Markdown 文件：YAML frontmatter + 固定头部（订阅/RSS/公众号链接）+ 各栏目内容（含图片渲染）+ Refs 占位&lt;/li&gt;
&lt;li&gt;转成 &lt;code&gt;.md&lt;/code&gt; 文件，通过 Telegram Bot 同时发送摘要消息和草稿文件&lt;/li&gt;
&lt;li&gt;本期消息归档到 Archive 表，清空 Messages 表，准备下一期&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/03/88481a09cabf4807c0b1bb14170e618d.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;核心就是 AI 双调用（分类 + 生成标题描述），最终输出的 Markdown 基本可以直接发布，只需要微调一下就行。以后每周只管往频道里丢素材，周日起床就能收到草稿，舒服了～&lt;/p&gt;
&lt;p&gt;其实平时我在频道里发的内容会比周刊多不少，周刊只是每周的小结罢了，想第一时间看到更多分享的话推荐关注 &lt;a href=&#34;https://t.me/cosine_front_end&#34; title=&#34;Telegram 频道&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Telegram 频道&lt;/a&gt;～&lt;/p&gt;
&lt;p&gt;虽然这周忙于各种生活和工作的事儿，确实没有很多的更新，但是我跟爱酱过得很快乐，这就足够了～&lt;/p&gt;
&lt;h2 id=&#34;heading-3&#34;&gt;社区动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/googleworkspace/cli&#34; title=&#34;Google 推出官方 CLI 工具&#34; rel=&#34;noopener&#34;&gt;Google 推出官方 CLI 工具&lt;/a&gt;：Google 发布官方命令行工具，支持 Gmail、Drive 等 Workspace 服务，内置 40 多种智能体技能。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://astro.build/blog/astro-6/&#34; title=&#34;Astro 6.0 正式发布&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Astro 6.0 正式发布&lt;/a&gt;：带来重构的开发服务器、内置字体 API、实时内容集合和 CSP 支持等重大更新。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://vite.dev/blog/announcing-vite8&#34; title=&#34;Vite 8.0 正式发布&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Vite 8.0 正式发布&lt;/a&gt;：采用 Rust 编写的 Rolldown 替代 esbuild + Rollup，构建速度提升 10-30 倍，保持完全插件兼容。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;http://void.cloud&#34; title=&#34;Void 部署平台发布&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Void 部署平台发布&lt;/a&gt;：尤雨溪官宣专为 Vite 打造的原生部署平台，基于 Cloudflare 提供极致 DX 和类型安全。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-4&#34;&gt;文章&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://x.com/bcherny/status/2027534984534544489&#34; title=&#34;Claude Code 即将推出 /simplify 和 /batch 技能&#34; rel=&#34;noopener&#34;&gt;Claude Code 即将推出 /simplify 和 /batch 技能&lt;/a&gt;：下一代 Claude Code 将引入两项新技能，自动化处理 Pull Request 和生产部署流程。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/2026/03-15-hhwo5n7e.jpg&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://component.gallery/&#34; title=&#34;如何让 AI 更好地理解你的 UI 需求&#34; rel=&#34;noopener ugc nofollow&#34;&gt;如何让 AI 更好地理解你的 UI 需求&lt;/a&gt;：通过 Component Gallery 学习组件命名和设计模式，提升与 AI 协作生成 UI 的效率。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.smashingmagazine.com/2026/03/getting-started-popover-api/&#34; title=&#34;Popover API 入门指南&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Popover API 入门指南&lt;/a&gt;：深入探讨 HTML Popover API 如何简化工具提示实现，减少 JavaScript 依赖并提升可访问性。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://rednegra.net/blog/20260212-virtual-scroll/&#34; title=&#34;十亿行数据的虚拟滚动技术&#34; rel=&#34;noopener ugc nofollow&#34;&gt;十亿行数据的虚拟滚动技术&lt;/a&gt;：HighTable 组件如何通过懒加载、无限像素和精确滚动等技术实现海量数据高性能渲染。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendmasters.com/blog/the-odometer-effect-in-css/&#34; title=&#34;纯 CSS 实现里程表滚动效果&#34; rel=&#34;noopener ugc nofollow&#34;&gt;纯 CSS 实现里程表滚动效果&lt;/a&gt;：利用 CSS attr()、sibling-index() 和 mod() 函数，无需 JavaScript 实现数字滚动动画。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.atriiy.dev/blog/rolldown-high-performance-code-splitting&#34; title=&#34;Rolldown 高性能代码分割原理&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Rolldown 高性能代码分割原理&lt;/a&gt;：深入解析 Rolldown 如何使用 BitSet 逻辑和双模式策略实现极速代码分割。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendmasters.com/blog/the-big-gotcha-of-anchor-positioning&#34; title=&#34;CSS Anchor 定位的隐藏陷阱&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS Anchor 定位的隐藏陷阱&lt;/a&gt;：揭示 Anchor Positioning 并非完全独立于 DOM 顺序，探讨其实现限制与最佳实践。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendmasters.com/blog/goodbye-innerhtml-hello-sethtml/&#34; title=&#34;告别 innerHTML，迎接 setHTML&#34; rel=&#34;noopener ugc nofollow&#34;&gt;告别 innerHTML，迎接 setHTML&lt;/a&gt;：介绍 Sanitizer API 的 setHTML 方法，作为更安全的 innerHTML 替代方案，有效防范 XSS 攻击。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;css-&#34;&gt;CSS 新特性&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://una.im/border-shape/&#34; title=&#34;CSS border-shape 属性前瞻&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS border-shape 属性前瞻&lt;/a&gt;：介绍实验性 CSS 属性 border-shape，实现真正的非矩形网页元素几何盒模型。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-5&#34;&gt;工具&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://css-generators.com/fancy-frame/&#34; title=&#34;花式 CSS 边框生成器&#34; rel=&#34;noopener ugc nofollow&#34;&gt;花式 CSS 边框生成器&lt;/a&gt;：在线工具一键生成基于 clip-path: shape() 的波浪、锯齿等响应式边框效果。&lt;/li&gt;
&lt;/ul&gt;

      
    </content>
    
  </entry>
  
  <entry>
    <title><![CDATA[FE Bits Vol.27 | Oxfmt Beta 发布，Chromium「CSS 漏洞」实为 UAF]]></title>
    <link rel="alternate" type="text/html" href="https://news.cosine.ren/p/vol-27" />
    <id>https://news.cosine.ren/p/vol-27#15922</id>
    <author>
      <name>cosine</name>
    </author>
    <published>2026-03-01T15:36:00Z</published>
    <updated>2026-03-01T15:36:00Z</updated>
    
    <content type="html">
      &lt;blockquote&gt;
&lt;p&gt;本期网址 &lt;a href=&#34;https://blog.cosine.ren/post/weekly-27&#34; title=&#34;A Link of https://blog.cosine.ren/post/weekly-27&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://blog.cosine.ren/post/weekly-27&lt;/a&gt; &lt;br /&gt;
本周刊更新时间期望是在每周天。&lt;br /&gt;
推荐订阅本周刊的 &lt;a href=&#34;https://blog.cosine.ren/rss.xml&#34; title=&#34;RSS&#34; rel=&#34;noopener ugc nofollow&#34;&gt;RSS&lt;/a&gt; &lt;br /&gt;
公众号 前端周周谈 FE Bits，点击阅读原文链接可查看原文。 &lt;br /&gt;
QQ 讨论小群 598022684 / &lt;a href=&#34;https://discord.gg/XzvrvNMcSe&#34; title=&#34;Discord 群&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Discord 群&lt;/a&gt; &lt;br /&gt;
本周刊文章内容同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;，欢迎关注&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;今天是 2026 年 3 月 1 日，星期天。&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;个人动态&lt;/h2&gt;
&lt;p&gt;过年放假，给我放爽了，停更的这阵子疯狂写代码，肝项目，现在周刊恢复更新啦～&lt;/p&gt;
&lt;p&gt;想说些什么，却又有些不知道该说什么，等我更新年终总结吧（真有人 3 月份才写去年的年终总结啊）（哦原来那个人是我啊.webp）&lt;/p&gt;
&lt;p&gt;过完了年，也跳完了槽，在新公司干了一阵子之后，愈发觉得自己的选择没错，这阵子发生了很多～&lt;/p&gt;
&lt;p&gt;有关注我的前端频道的应该就能明白我最近在做什么，所以也在这里正儿八经发一下我们公司的招聘。招很多前端，有图像编辑器经验的话更好！岗位都在 JD 里了，二次元浓度越高越好（逃）欢迎佬来撩，远程办公，年限不限，实习兼职都可以，主要看适配程度，感兴趣的欢迎直接邮箱 &lt;code&gt;ball@mewtant.io&lt;/code&gt; 投递！备注一下 cos 内推的就行，也欢迎私聊我了解了解情况～&lt;/p&gt;
&lt;p&gt;我进来工作的感觉反正是灰常爽的！太二次元了很对我电波！&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;【我们的产品】我们是一家专注于研究二次元生成式 AI 的创业公司，目前已研发上线的 text-to-image AI 生成和消费平台已成为海外头部产品，用户量和市场占有率迅速增长中。&lt;br /&gt;
【我们的资本背景】现已获得 makers fund 等多家一线顶级机构的多轮投资，目前估值上亿美元。&lt;br /&gt;
【我们的团队】公司总部位于新加坡，五湖四海的小伙伴同样支持远程办公。公司团队成员背景丰富，技术能力扎实，没有无聊的潜规则，实习小天才和大师傅都能尽情发挥和学习。&lt;br /&gt;
【你能得到】获得赛道最前沿技术/产品认知，一起 work on 一个产品，切实体验让想象成为现实的经历，一段有意义且实现自身价值的工作。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;JD 相关： job.mewtant.io &lt;br /&gt;
公司相关的 pr：曾获红杉投资、估值上亿美元，二次元公司凭动漫向 AI 生图掘金海外&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;企业文化 Be Like（直接偷偷 saka 发的）&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://x.com/Manjusaka_Lee/status/1924870680115609842&#34; title=&#34;A Link of https://x.com/Manjusaka_Lee/status/1924870680115609842&#34; rel=&#34;noopener&#34;&gt;https://x.com/Manjusaka_Lee/status/1924870680115609842&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;moepeek&#34;&gt;MoePeek&lt;/h3&gt;
&lt;p&gt;之前 Easydict 经常漏内存太麻了，用久了就卡的要死，然后我的划词翻译需求又其实特别少，正好之前学了点 Swift 就自己过年顺手 vibe 写了一个（&lt;/p&gt;
&lt;p&gt;主要自己用，纯 Swift 6 构建，安装体积约 5 MB ，后台运行内存约 50 MB ，很放心的挂后台，如果开 OCR 截图的话运行内存差不多到 100 MB&lt;/p&gt;
&lt;p&gt;开源出来欢迎提 Issue ～ 但是不一定会加新功能了，会修修 bug&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;这个项目有 PopClip 集成，就在 Release 中，README 里有常见问题说明&lt;/li&gt;
&lt;li&gt;成熟方案建议 Bob 或者 clicknow，这几个商业化的项目做的都很成熟&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;PS：我真的很喜欢 Easydict 但是找他们的内存泄漏问题再改有点难了 hhh 索性 vibe 一个只加自己需要的功能&lt;/p&gt;
&lt;p&gt;一款轻量级 macOS 划词翻译工具，纯 Swift 6 开发，安装体积仅 5MB ，后台运行内存稳定约 50MB&lt;/p&gt;
&lt;p&gt;GitHub: &lt;a href=&#34;https://github.com/cosZone/MoePeek&#34; title=&#34;A Link of https://github.com/cosZone/MoePeek&#34; rel=&#34;noopener&#34;&gt;https://github.com/cosZone/MoePeek&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://github.com/cosZone/MoePeek/raw/main/Resources/MoePeek-promo.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;社区动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://react.dev/blog/2026/02/24/the-react-foundation&#34; title=&#34;React 基金会：由 Linux 基金会托管的 React 新家园&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React 基金会：由 Linux 基金会托管的 React 新家园&lt;/a&gt;：React 官方宣布 React 基金会正式在 Linux 基金会（Linux Foundation）旗下成立，标志着 React 正式脱离 Meta 成为独立的开源项目。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://x.com/tan_stack/status/2022348762299904354&#34; title=&#34;TanStack 团队发布新库 TanStack Hotkeys&#34; rel=&#34;noopener&#34;&gt;TanStack 团队发布新库 TanStack Hotkeys&lt;/a&gt;，解决键盘快捷键开发中常见的跨平台、作用域冲突、输入框聚焦忽略等“小坑”，提供类型安全（Type-safety）、快捷键序列识别、状态追踪及 React 等框架适配器，并集成 Devtools 插件提升开发体验。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://oxc.rs/blog/2026-02-24-oxfmt-beta&#34; title=&#34;Oxfmt Beta&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Oxfmt Beta&lt;/a&gt;：Oxfmt 宣布进入 Beta 阶段，自 Alpha 版本以来，Oxfmt 大幅扩展了功能，包括 100% 兼容 Prettier 的 JavaScript 和 TypeScript 格式化规则、支持多种文件格式（如 JSON, YAML, HTML, CSS 等）、内置 Tailwind CSS 类排序和可配置的导入语句排序功能，并提供了 Node.js API 和广泛的编辑器支持。（开始用好一阵子了，很香）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://x.com/claudeai/status/2026418435408986423&#34; title=&#34;Claude Code 发布远程控制功能&#34; rel=&#34;noopener&#34;&gt;Claude Code 发布远程控制功能&lt;/a&gt;&lt;br /&gt;
：Claude Code 发布了名为“远程控制”(Remote Control) 的新功能，允许 Max 和 Pro 用户在终端启动任务后，通过手机或网页端继续控制 Claude Code 会话，实现跨设备无缝工作。目前，该功能已向 Max 用户开放，并将很快扩展至 Pro 用户。用户可通过运行 &lt;code&gt;claude rc&lt;/code&gt; 命令开始使用。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://css-tricks.com/an-exploit-in-css/&#34; title=&#34;An Exploit ... in CSS?!&#34; rel=&#34;noopener ugc nofollow&#34;&gt;An Exploit ... in CSS?!&lt;/a&gt;：很有意思，这篇文章提到了 Chromium 浏览器中一个被报道为“CSS 漏洞”的零日漏洞 (zero-day exploit) &lt;a href=&#34;https://nvd.nist.gov/vuln/detail/CVE-2026-2441&#34; title=&#34;CVE-2026-2441&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CVE-2026-2441&lt;/a&gt;，并澄清了其技术细节，指出恶意并非源于 CSS 本身，而是 Chromium 渲染引擎中一个 Use After Free (UAF) 的内存管理缺陷。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-2&#34;&gt;文章&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://allthingssmitty.com/2026/02/23/from-instanceof-to-error-iserror-safer-error-checking-in-javascript/&#34; title=&#34;从 instanceof 到 Error.isError：JavaScript 中更安全的错误检查&#34; rel=&#34;noopener ugc nofollow&#34;&gt;从 instanceof 到 Error.isError：JavaScript 中更安全的错误检查&lt;/a&gt;：这篇文章介绍了在 JavaScript 中使用 &lt;code&gt;Error.isError()&lt;/code&gt; 代替 &lt;code&gt;instanceof Error&lt;/code&gt; 进行错误检查的优势，尤其是在处理跨域（cross-realm）错误时的安全性和可靠性。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://shud.in/thoughts/build-bulletproof-react-components&#34; title=&#34;构建无懈可击的 React 组件&#34; rel=&#34;noopener ugc nofollow&#34;&gt;构建无懈可击的 React 组件&lt;/a&gt;：一位 Vercel 资深工程师分享如何构建能应对真实复杂场景的健壮 React 组件，涵盖服务端渲染（Server Rendering）、水合（Hydration）、多实例、并发渲染（Concurrent Rendering）、组合（Composition）、Portal、View Transition、Activity、数据泄露防护及未来兼容性等现代 React 应用中的关键挑战。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.sanity.io/blog/the-logo-soup-problem?ref=ww-rss&#34; title=&#34;Logo泛滥问题（及其解决方案）&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Logo泛滥问题（及其解决方案）&lt;/a&gt;：Sanity 团队开发了 React 组件 &amp;lt;LogoSoup /&amp;gt; 解决网页中多品牌 Logo 排列时因尺寸、比例与视觉重量不一致导致的“Logo Soup”混乱问题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://piccalil.li/blog/its-about-to-get-a-lot-easier-for-your-javascript-to-clean-up-after-itself/?ref=articles-rss-feed&#34; title=&#34;你的 JavaScript 清理自身的工作很快就会变得简单很多&#34; rel=&#34;noopener ugc nofollow&#34;&gt;你的 JavaScript 清理自身的工作很快就会变得简单很多&lt;/a&gt;：JavaScript 即将通过 Explicit Resource Management 提案引入 &lt;code&gt;using&lt;/code&gt; 与 &lt;code&gt;[Symbol.dispose]&lt;/code&gt;，使资源清理更统一、可靠且自动化。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://piccalil.li/blog/an-in-depth-guide-to-customising-lists-with-css/?ref=articles-rss-feed&#34; title=&#34;深入解析 CSS 自定义列表样式指南&#34; rel=&#34;noopener ugc nofollow&#34;&gt;深入解析 CSS 自定义列表样式指南&lt;/a&gt;：本文深入探讨了如何使用 CSS 从基础到高级全面自定义 HTML 列表样式，并兼顾了排版美学与无障碍访问。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://tkdodo.eu/blog/creating-query-abstractions&#34; title=&#34;Creating Query Abstractions&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Creating Query Abstractions&lt;/a&gt;：在 React 开发中，开发者习惯通过封装自定义 Hook 来复用 &lt;code&gt;useQuery&lt;/code&gt; 的逻辑。然而作者指出，在结合 TypeScript 时，这种做法不仅会导致类型推断 (Type Inference) 失效，还容易引发复杂的“泛型地狱”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.stefanjudis.com/today-i-learned/css-zoom-to-scale-elements/&#34; title=&#34;Zoom!&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Zoom!&lt;/a&gt;：解析了 CSS &lt;code&gt;zoom&lt;/code&gt; 属性在实际布局中的实用性，及其与 &lt;code&gt;transform: scale&lt;/code&gt; 的区别。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.joshwcomeau.com/animation/sprites/&#34; title=&#34;Remember sprites&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Remember sprites&lt;/a&gt;：2026，重新审视 CSS 图像精灵 (Sprites) 技术，结合 &lt;code&gt;object-fit&lt;/code&gt;、&lt;code&gt;object-position&lt;/code&gt; 和 &lt;code&gt;step()&lt;/code&gt; 动画函数，实现有趣的逐帧动画。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://rednegra.net/blog/20260212-virtual-scroll/&#34; title=&#34;Virtual Scrolling for Billions of Rows — Techniques from HighTable&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Virtual Scrolling for Billions of Rows — Techniques from HighTable&lt;/a&gt;：本文介绍了 &lt;code&gt;&amp;lt;HighTable&amp;gt;&lt;/code&gt; React 组件中如何通过五种核心技术实现数十亿行数据的虚拟滚动 (Virtual Scrolling，实现高性能和可访问性。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;css-&#34;&gt;CSS 新特性&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://una.im/border-shape/&#34; title=&#34;border-shape: the future of the non-rectangular web&#34; rel=&#34;noopener ugc nofollow&#34;&gt;border-shape: the future of the non-rectangular web&lt;/a&gt;：本文深入介绍了即将到来的 CSS 属性 &lt;code&gt;border-shape&lt;/code&gt;，它将彻底改变构建非矩形网页元素的方式。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-3&#34;&gt;趣站&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://webgl.souhonzan.org/entry/?v=3100&#34; title=&#34;Matthew Pothier 先生的个人作品集网站，融合了色彩在重叠图层中晕染开来的视觉效果&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Matthew Pothier 先生的个人作品集网站，融合了色彩在重叠图层中晕染开来的视觉效果&lt;/a&gt;：一位电影摄影师极简且具有独特 WebGL 色彩流动效果的个人作品集网站。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;站点地址：&lt;a href=&#34;https://www.matthewpothier.com/&#34; title=&#34;Matthew Pothier-Cinematographer&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Matthew Pothier-Cinematographer&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/02/5d2a5606f38507d635e1906977392334.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://kaomojicool.club/&#34; title=&#34;Express yourself with Unicode&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Express yourself with Unicode&lt;/a&gt;：Kaomoji Cool Club 收集了大量有趣的颜文字 (Kaomoji)，让你用 Unicode 字符表达自我。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/03/bd1aa5e00e558586672193b9c4a5c2d1.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading-4&#34;&gt;工具&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://modern-css.com/?ref=ww-rss&#34; title=&#34;Modern CSS Code Snippets&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Modern CSS Code Snippets&lt;/a&gt;：modern-css.com 是一个对比旧有 CSS 技巧与现代原生解决方案的参考网站，帮助开发者摆脱过时方法，利用最新 CSS 特性实现更简洁、高效的网页设计，很实用了，还有 RSS。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://canwe.dev/?ref=ww-rss&#34; title=&#34;Can We Use&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Can We Use&lt;/a&gt;：&lt;code&gt;canwe.dev&lt;/code&gt; 是一个聚合了多种实用网页开发工具的网站，可以帮助开发者快速查询 Can I Use / Can I Stop、电子邮件客户端支持、可访问性信息、Web 平台功能进展及浏览器开发路线图等，为前端开发者提供一站式的信息查询服务。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/antfu/broz&#34; title=&#34;broz&#34; rel=&#34;noopener&#34;&gt;broz&lt;/a&gt;：antfu 出品，一款简洁、无边框的屏幕截图浏览器，&lt;code&gt;npx broz antfu.me&lt;/code&gt; 即可使用&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.svg.studio/&#34; title=&#34;SVG Studio&#34; rel=&#34;noopener ugc nofollow&#34;&gt;SVG Studio&lt;/a&gt;，又一款基于浏览器的 SVG 处理工具，集成了优化、调试及修复渲染问题等多种功能。很好用。&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2026/02/3d0370087c85d5a68f81dbbaeab53ce4.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2026/02/dbe1a5fd03d9a393038ee22527e9284b.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;codepen&#34;&gt;Codepen&lt;/h2&gt;
&lt;h3 id=&#34;flood-above-the-floor&#34;&gt;Flood Above the Floor&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/wakana-k/pen/Eayqjwr&#34; title=&#34;A Link of https://codepen.io/wakana-k/pen/Eayqjwr&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/wakana-k/pen/Eayqjwr&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;步入 Wakana Y.K. 创作的这个 Three.js 场景，你会发现自己置身于一个优雅的房间，积水没过脚踝。环顾四周进行探索，或者思考一下那些精美的装修正遭受着多么严重的水浸破坏。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/03/0726d2d45ab323a0a6aaeb512ec6f840.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;sliding-border-glow-on-hover-for-beveled-cards&#34;&gt;Sliding border glow on hover for beveled cards&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/thebabydino/pen/EayVXKj&#34; title=&#34;A Link of https://codepen.io/thebabydino/pen/EayVXKj&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/thebabydino/pen/EayVXKj&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Ana Tudor 通过 &lt;code&gt;corner-shape&lt;/code&gt; 和 &lt;code&gt;background-clip&lt;/code&gt; 展示了现代 CSS 的大师级用法，以此回答了 Reddit 上的一个提问，并为尚不支持这些特性的浏览器提供了回退方案。请查看 Ana 那份注释极其详尽的代码，以了解具体实现细节。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;heading-5&#34;&gt;文本特效&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/collection/Poergz&#34; title=&#34;A Link of https://codepen.io/collection/Poergz&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/collection/Poergz&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Pedro Ondiviela 分享了一系列醒目的 SVG 滤镜和 CSS 文本效果。每个效果都是可编辑的，因此你可以使用自己的文字进行尝试。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;aerodynamic-typography-&#34;&gt;Aerodynamic Typography 空气动力学字体&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/mike-at-redspace/pen/EayBZwy&#34; title=&#34;A Link of https://codepen.io/mike-at-redspace/pen/EayBZwy&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/mike-at-redspace/pen/EayBZwy&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;使用鼠标滚轮控制风扇，在这个来自 mike-at-redspace 的有趣 Matter.js Pen 中观看字母飞舞并从墙壁上反弹。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/03/5debf56b71f277677cbbd746f48470df.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;refs&#34;&gt;Refs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://webweekly.email/archive/web-weekly-184/&#34; title=&#34;Web Weekly #184&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Web Weekly #184&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://codepen.io/spark/498&#34; title=&#34;Codepen Spark #498&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Codepen Spark #498&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      
    </content>
    
  </entry>
  
  <entry>
    <title><![CDATA[FE Bits Vol.26 | Gatsby 支持 React 19，Rspress 2.0 发布]]></title>
    <link rel="alternate" type="text/html" href="https://news.cosine.ren/p/vol-26" />
    <id>https://news.cosine.ren/p/vol-26#15835</id>
    <author>
      <name>cosine</name>
    </author>
    <published>2026-02-08T16:52:52Z</published>
    <updated>2026-02-08T16:52:52Z</updated>
    
    <content type="html">
      &lt;blockquote&gt;
&lt;p&gt;本期网址 &lt;a href=&#34;https://blog.cosine.ren/post/weekly-26&#34; title=&#34;A Link of https://blog.cosine.ren/post/weekly-26&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://blog.cosine.ren/post/weekly-26&lt;/a&gt;&lt;br /&gt;
本周刊更新时间期望是在每周天。&lt;br /&gt;
推荐订阅本周刊的 &lt;a href=&#34;https://blog.cosine.ren/rss.xml&#34; title=&#34;RSS&#34; rel=&#34;noopener ugc nofollow&#34;&gt;RSS&lt;/a&gt;。&lt;br /&gt;
公众号 前端周周谈 FE Bits，点击阅读原文链接可查看原文。&lt;br /&gt;
QQ 讨论小群 598022684 / &lt;a href=&#34;https://discord.gg/XzvrvNMcSe&#34; title=&#34;Discord 群&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Discord 群&lt;/a&gt;&lt;br /&gt;
本周刊文章内容同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;，欢迎关注。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;今天是 2026 年 2 月 8 日，星期天。&lt;/p&gt;
&lt;p&gt;虽然发的有点晚，已经 0 点了。&lt;/p&gt;
&lt;p&gt;就快要过年放假啦！愉悦地停更俩星期！&lt;/p&gt;
&lt;p&gt;这周忙自己的项目很愉悦，给我的博客新增了以前的 shoka 语法兼容和&lt;a href=&#34;https://blog.cosine.ren/music&#34; title=&#34;歌单&#34; rel=&#34;noopener ugc nofollow&#34;&gt;歌单&lt;/a&gt;版块，全部可开关。&lt;/p&gt;
&lt;p&gt;这周把心心念念的博客歌单和播放器加上了，并且添加了之前 Hexo Shoka 主题的 Markdown 扩展语法兼容支持。&lt;/p&gt;
&lt;p&gt;可在这里查看全部新增的语法演示：&lt;a href=&#34;https://koharu.cosine.ren/post/note/shoka-features&#34; title=&#34;Shoka 主题 Markdown 语法演示&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Shoka 主题 Markdown 语法演示&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;然后增加音乐播放器和歌单页面，都可以开关～&lt;/p&gt;
&lt;p&gt;一点一点变成我想要的样子了～&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/cosZone/astro-koharu/releases/tag/v2.6.0&#34; title=&#34;A Link of https://github.com/cosZone/astro-koharu/releases/tag/v2.6.0&#34; rel=&#34;noopener&#34;&gt;https://github.com/cosZone/astro-koharu/releases/tag/v2.6.0&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;所以……现在我要激情安利山山歌单了!&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.cosine.ren/music&#34; title=&#34;A Link of https://blog.cosine.ren/music&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://blog.cosine.ren/music&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/02/a0cf89fcc829ca1804efd94da6d25e1b.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;并且这周给 Moe Copy AI v0.3.5 新增了完整的 Prompt Template 管理功能，支持预设模版和自定义模版。之前还添加了深色模式！（是的没错都是我自用的功能）&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://moe.cosine.ren/docs/changelog&#34; title=&#34;A Link of https://moe.cosine.ren/docs/changelog&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://moe.cosine.ren/docs/changelog&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/02/c9b63e5b248226dbd560969277b41f0a.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;社区动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;GitHub 正在讨论开源项目维护者如何应对日益增加的低质量、AI 生成的拉取请求（PR），可能包括允许用户完全禁用 PR，或者至少限制 PR 只能由协作者访问等操作，可以在这里参加讨论：&lt;a href=&#34;https://github.com/orgs/community/discussions/185387&#34; title=&#34;Exploring Solutions to Tackle Low-Quality Contributions on GitHub&#34; rel=&#34;noopener&#34;&gt;Exploring Solutions to Tackle Low-Quality Contributions on GitHub&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.gatsbyjs.com/docs/reference/release-notes/v5.16/&#34; title=&#34;Gatsby v5.16&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Gatsby v5.16&lt;/a&gt; 支持 React 19，&lt;a href=&#34;https://rspress.rs/blog/rspress-v2&#34; title=&#34;Rspress 2.0&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Rspress 2.0&lt;/a&gt; 重大升级&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://web.dev/blog/web-platform-01-2026?hl=en&#34; title=&#34;New to the web platform in January&#34; rel=&#34;noopener ugc nofollow&#34;&gt;New to the web platform in January&lt;/a&gt;：汇总了 2026 年 1 月 Web 平台的重大进展，包括 Chrome 144 和 Firefox 147 稳定版的发布。其中 CSS 锚点定位 (CSS Anchor Positioning) 和 Navigation API 随着 Firefox 的支持，都正式达到 Baseline Newly Available（新可用基准）状态。此外，Chrome 144 引入了期待已久的 Temporal API、声明式的 &lt;code&gt;&amp;lt;geolocation&amp;gt;&lt;/code&gt; 元素以及用于自定义页内搜索样式的 &lt;code&gt;::search-text&lt;/code&gt; 伪元素&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.appinn.com/internet-archive-link-fixer/&#34; title=&#34;互联网档案馆发布插件，解决 40% 的互联网死链问题 - 小众软件&#34; rel=&#34;noopener ugc nofollow&#34;&gt;互联网档案馆发布插件，解决 40% 的互联网死链问题 - 小众软件&lt;/a&gt;：互联网档案馆（Internet Archive）推出了 WordPress 插件 Link Fixer，旨在解决互联网日益严重的“链接腐化”（Link Rot）问题。该插件通过自动检测失效的 URL（如 404 错误），并引导用户访问 Wayback Machine 中存储的历史网页快照，据称能修复约 40% 的死链。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;viteland-2026--1-&#34;&gt;ViteLand 最新消息：2026 年 1 月回顾&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://voidzero.dev/posts/whats-new-jan-2026&#34; title=&#34;A Link of https://voidzero.dev/posts/whats-new-jan-2026&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://voidzero.dev/posts/whats-new-jan-2026&lt;/a&gt;&lt;/p&gt;
&lt;h4 id=&#34;heading-1&#34;&gt;品牌与设计统一&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;实现了 VoidZero 旗下所有项目（Vite, Vitest, Rolldown, Oxc）的视觉身份统一，发布了全新的官网和 Logo。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;更新了 Vite 的启动模板（Starter Templates），将新品牌标识内置其中。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;强调了工具链的深度集成：Vite 8 在底层直接使用 Rolldown 和 Oxc，实现了一致的开发者体验。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;heading-2&#34;&gt;核心项目进展&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Vite：自 2020 年发布以来，累计下载量超过 30 亿次；React 服务端组件（React Server Components, RSC）插件进行了优化，以支持 TanStack Start 等框架。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Vitest：启动 4.1 测试版（Beta），引入测试标签（Test Tags）功能，并支持通过禁用 viteModuleRunner 选项在脱离 Vite 的情况下运行。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Rolldown：正式达成候选发布版（Release Candidate, RC）里程碑，API 进入稳定阶段；推出“Lazy Barrel Optimization”，在 AntDesign 等场景下可减少 92% 的模块编译，提速 2 倍。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Oxc：Oxlint 支持 oxlint.config.ts 动态配置；Oxfmt 实现了与 Prettier 100% 的一致性（Conformance），并新增了 Tailwind CSS 类名排序功能。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;heading-3&#34;&gt;社区动态与生态&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;榜单表现：在 2025 JavaScript Rising Stars 榜单中，Vite、Oxc、Rolldown 和 tsdown 均名列前茅。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;生态迁移：Hugging Face、Turborepo 和 Lichess 等知名项目宣布从 ESLint/Prettier 迁移至 Oxlint/Oxfmt。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;周边工具：社区推出了基于 Oxc 的代码体积优化工具 jsshaker 以及 Oxlint 的终端用户界面工具 oxlint-tui。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-4&#34;&gt;文章&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://thedailywtf.com/articles/a-percise-parser&#34; title=&#34;A Percise Parser&#34; rel=&#34;noopener ugc nofollow&#34;&gt;A Percise Parser&lt;/a&gt;：本文介绍了一个因硬编码地区数值格式（Locale Formatting）并使用拙劣的字符串操作，导致国际化失效的 JavaScript 解析器（Parser）案例。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://kizu.dev/shrinkwrap-solution/&#34; title=&#34;Solving Shrinkwrap: New Experimental Technique&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Solving Shrinkwrap: New Experimental Technique&lt;/a&gt;&lt;br /&gt;
好文，利用 CSS Anchor Positioning（锚点定位）和 Scroll-Driven Animations（滚动驱动动画）解决网页排版中“自动换行导致的容器宽度无法自动收缩（Shrinkwrap）”这一经典难题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendmasters.com/blog/performance-optimized-video-embeds-with-zero-javascript/&#34; title=&#34;Performance-Optimized Video Embeds with Zero JavaScript&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Performance-Optimized Video Embeds with Zero JavaScript&lt;/a&gt;：本文介绍了一种利用原生 HTML 标签 &lt;code&gt;&amp;lt;details&amp;gt;&lt;/code&gt; 和 &lt;code&gt;&amp;lt;summary&amp;gt;&lt;/code&gt; 来优化视频嵌入性能的方法。通过这种方案，开发者可以在完全不使用 JavaScript 的情况下实现视频的按需加载。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.smashingmagazine.com/2026/02/css-scope-alternative-naming-conventions/&#34; title=&#34;CSS @scope: An Alternative To Naming Conventions And Heavy Abstractions&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS @scope: An Alternative To Naming Conventions And Heavy Abstractions&lt;/a&gt;：介绍如何利用 CSS 原生的 &lt;code&gt;@scope&lt;/code&gt; 规则来替代复杂的 BEM 命名规范或繁重的 CSS 框架，实现更简洁、可维护的样式隔离。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://css-tricks.com/css-bar-charts-using-modern-functions/&#34; title=&#34;CSS Bar Charts Using Modern Functions | CSS-Tricks&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS Bar Charts Using Modern Functions | CSS-Tricks&lt;/a&gt;：本文介绍了如何利用 CSS 现代函数 &lt;code&gt;sibling-index()&lt;/code&gt; 和增强后的 &lt;code&gt;attr()&lt;/code&gt; 函数，以更简洁、高效的方式构建纯 CSS 柱状图。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-5&#34;&gt;新特性&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://nerdy.dev/nice-select?utm_source=rss&#34; title=&#34;Nice Select · February 3, 2026&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Nice Select · February 3, 2026&lt;/a&gt;：本文展示了如何利用最新的 CSS 特性（如 &lt;code&gt;appearance: base-select&lt;/code&gt;）在保持原生无障碍性的同时，打造高度可定制且视觉华丽的 &lt;code&gt;&amp;lt;select&amp;gt;&lt;/code&gt; 下拉组件。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/editor/argyleink/pen/019c1f28-bbc2-7bac-ad4a-a7e41d3730f1&#34; title=&#34;A Link of https://codepen.io/editor/argyleink/pen/019c1f28-bbc2-7bac-ad4a-a7e41d3730f1&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/editor/argyleink/pen/019c1f28-bbc2-7bac-ad4a-a7e41d3730f1&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://rolandfranke.nl/frontend-stories/drawing-connections-with-css-anchor-positioning/&#34; title=&#34;Drawing Connections with CSS Anchor Positioning - Roland Franke&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Drawing Connections with CSS Anchor Positioning - Roland Franke&lt;/a&gt;：锚点定位真好玩儿吧。在无需 JavaScript 的情况下实现 UI 元素（如评论与其回复）之间的视觉连线。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/ROL4ND909/pen/gbMxLdL&#34; title=&#34;A Link of https://codepen.io/ROL4ND909/pen/gbMxLdL&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/ROL4ND909/pen/gbMxLdL&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading-6&#34;&gt;工具&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/jamiepine/voicebox&#34; title=&#34;jamiepine/voicebox&#34; rel=&#34;noopener&#34;&gt;jamiepine/voicebox&lt;/a&gt; 一款由 Qwen3-TTS 驱动的开源、本地优先语音克隆与合成工具&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;codepen-&#34;&gt;Codepen 与趣站&lt;/h2&gt;
&lt;h3 id=&#34;heading-7&#34;&gt;不规则网格上带有凹面圆角的卡片&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/thebabydino/pen/WbxpKPQ&#34; title=&#34;A Link of https://codepen.io/thebabydino/pen/WbxpKPQ&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/thebabydino/pen/WbxpKPQ&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“卡片和按钮之间的缝隙实现了真正的透明效果。没有尖角，全部都是圆角。除了 .jpg 格式的卡片背景图外，没有其他图片。卡片形状会根据按钮的大小和形状进行调整——您可以尝试只更改按钮元素的字体大小来查看效果。这不需要任何 JavaScript 代码——一切都归功于 CSS 子网格的神奇功能！” by Ana Tudor&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/02/37b2d1691b9e51e8f8297d681dd55ac2.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;-select-&#34;&gt;带有自定义 select 的文件夹堆叠&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/captainbrosset/pen/dPXdgae&#34; title=&#34;A Link of https://codepen.io/captainbrosset/pen/dPXdgae&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/captainbrosset/pen/dPXdgae&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://developer.chrome.com/blog/a-customizable-select&#34; title=&#34;现在选择元素是可以自定义的 &#34; rel=&#34;noopener ugc nofollow&#34;&gt;现在选择元素是可以自定义的 &lt;/a&gt;，Patrick Brosset 向我们展示了点击后会弹出的文件夹堆叠，这给我们带来了很多乐趣。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/02/85203d57c955d41b833849bfdb16c99d.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;heading-8&#34;&gt;二进制时钟&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/prisoner849/pen/zxBpPYW&#34; title=&#34;A Link of https://codepen.io/prisoner849/pen/zxBpPYW&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/prisoner849/pen/zxBpPYW&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;prisoner849 在这段 Three.js 代码中展示了一款精美的时钟。即使你不懂&lt;a href=&#34;https://en.wikipedia.org/wiki/Binary_clock&#34; title=&#34;二进制时间 &#34; rel=&#34;noopener ugc nofollow&#34;&gt;二进制时间 &lt;/a&gt;，也能欣赏它的美——拿起时钟转动一下，从各个角度欣赏它塑料材质的光泽。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/02/7324e64ce37bdd35a183678a166e493f.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;refs&#34;&gt;Refs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://javascriptweekly.com/issues/771&#34; title=&#34;JavaScript Weekly #771&#34; rel=&#34;noopener ugc nofollow&#34;&gt;JavaScript Weekly #771&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/spark/495&#34; title=&#34;Codepen Spark #495&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Codepen Spark #495&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

      
    </content>
    
  </entry>
  
  <entry>
    <title><![CDATA[FE Bits Vol.25 | Yarn 6 将用 Rust 重写，CSS Grid Lanes 进展]]></title>
    <link rel="alternate" type="text/html" href="https://news.cosine.ren/p/vol-25" />
    <id>https://news.cosine.ren/p/vol-25#15691</id>
    <author>
      <name>cosine</name>
    </author>
    <published>2026-02-01T15:48:00Z</published>
    <updated>2026-02-01T15:48:00Z</updated>
    
    <content type="html">
      &lt;blockquote&gt;
&lt;p&gt;本期网址 &lt;a href=&#34;https://blog.cosine.ren/post/weekly-25&#34; title=&#34;A Link of https://blog.cosine.ren/post/weekly-25&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://blog.cosine.ren/post/weekly-25&lt;/a&gt;&lt;br /&gt;
本周刊更新时间期望是在每周天。&lt;br /&gt;
推荐订阅本周刊的 &lt;a href=&#34;https://blog.cosine.ren/rss.xml&#34; title=&#34;RSS&#34; rel=&#34;noopener ugc nofollow&#34;&gt;RSS&lt;/a&gt;。&lt;br /&gt;
公众号 前端周周谈 FE Bits，点击阅读原文链接可查看原文。&lt;br /&gt;
QQ 讨论小群 598022684 / &lt;a href=&#34;https://discord.gg/XzvrvNMcSe&#34; title=&#34;Discord 群&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Discord 群&lt;/a&gt;&lt;br /&gt;
本周刊文章内容同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;，欢迎关注。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;今天是 2026 年 2 月 1 日，星期天。&lt;/p&gt;
&lt;p&gt;已经 2 月了啊，好快哦。&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;个人动态&lt;/h2&gt;
&lt;h3 id=&#34;heading-1&#34;&gt;碎碎念&lt;/h3&gt;
&lt;p&gt;看了超时空辉夜姬，给我看的好感动……好久没看到这么令人感动的国宴了……&lt;/p&gt;
&lt;p&gt;简直是神，还是真百，推荐所有人观看美少女贴贴，在我心里是作画运镜无死角全方面的神作～&lt;/p&gt;
&lt;p&gt;撒糖撒糖还是撒糖，后劲也大，全程都在库库截图，我没有什么不满的我觉得美少女特别有活力的贴贴特别好。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/01/e4c28d8555e361e7bd0f9ee55e4838de.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2026/01/da6440716dc4a4cf25cf3d76ad422272.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;上一次看完有如此感慨的还是游戏人生剧场版……但是那个高度……&lt;/p&gt;
&lt;p&gt;这部的优缺点都很明显，在强无敌的作画下剧情的平平无奇反而变成了短板，但是我觉得还是瑕不掩瑜，非常非常值得一看！&lt;/p&gt;
&lt;p&gt;泛式说得好啊：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.bilibili.com/video/BV1Fcz1BZEVz&#34; title=&#34;A Link of https://www.bilibili.com/video/BV1Fcz1BZEVz&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://www.bilibili.com/video/BV1Fcz1BZEVz&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这个杂谈说得也很好：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.bilibili.com/video/BV1w8zrBHEZC&#34; title=&#34;A Link of https://www.bilibili.com/video/BV1w8zrBHEZC&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://www.bilibili.com/video/BV1w8zrBHEZC&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;heading-2&#34;&gt;项目更新&lt;/h3&gt;
&lt;p&gt;给博客做了以下更新。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/cosZone/astro-koharu/releases/tag/v2.5.0&#34; title=&#34;A Link of https://github.com/cosZone/astro-koharu/releases/tag/v2.5.0&#34; rel=&#34;noopener&#34;&gt;https://github.com/cosZone/astro-koharu/releases/tag/v2.5.0&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/cosZone/astro-koharu/releases/tag/v2.5.1&#34; title=&#34;A Link of https://github.com/cosZone/astro-koharu/releases/tag/v2.5.1&#34; rel=&#34;noopener&#34;&gt;https://github.com/cosZone/astro-koharu/releases/tag/v2.5.1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;给 Moe Copy AI 插件做了深色模式，还在持续优化中。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/yusixian/moe-copy-ai/releases/tag/0.3.3&#34; title=&#34;A Link of https://github.com/yusixian/moe-copy-ai/releases/tag/0.3.3&#34; rel=&#34;noopener&#34;&gt;https://github.com/yusixian/moe-copy-ai/releases/tag/0.3.3&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/02/2b63baa07b19d4dd20d14233b7628790.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading-3&#34;&gt;社区动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://webkit.org/blog/17758/when-will-css-grid-lanes-arrive-how-long-until-we-can-use-it/&#34; title=&#34;When will CSS Grid Lanes arrive? How long until we can use it?&#34; rel=&#34;noopener ugc nofollow&#34;&gt;When will CSS Grid Lanes arrive? How long until we can use it?&lt;/a&gt;：探讨了 CSS Grid Lanes（原生瀑布流布局）在各浏览器的实现进度，并详细介绍了如何通过渐进增强（Progressive Enhancement）技术在当下提前使用这一新特性。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Safari 已经在技术预览版中支持&lt;/li&gt;
&lt;li&gt;Firefox 在 2020 年最早实现了早期草案，目前正致力于更新至最新的规范语法和 &lt;code&gt;flow-tolerance&lt;/code&gt; 属性&lt;/li&gt;
&lt;li&gt;Chrome 与 Edge 的加入：Chromium 团队在经历了语法争议后，目前已达成共识并正在更新其实现代码，标志着三大引擎达成一致。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://yarn6.netlify.app/blog/2026-01-28-yarn-6-preview/&#34; title=&#34;Yarn 6 预览版发布&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Yarn 6 预览版发布&lt;/a&gt;，为了极致性能正转向使用 Rust 语言重构，预计 2026 年 Q3 发布稳定版。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.joshtumath.uk/posts/2026-01-27-try-text-scaling-support-in-chrome-canary/&#34; title=&#34;Try text scaling support in Chrome Canary&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Try text scaling support in Chrome Canary&lt;/a&gt;：介绍 Chrome Canary 中新增的 &lt;code&gt;&amp;lt;meta name=&amp;quot;text-scale&amp;quot;&amp;gt;&lt;/code&gt; 标签，该功能允许网页响应移动端操作系统的全局字体大小设置。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;React 紧急发布 19.2.4、19.1.5 和 19.0.4 版本，修复了 React Server Components (RSC) 中未完全解决的拒绝服务 (DoS) 漏洞：&lt;a href=&#34;https://github.com/facebook/react/security/advisories/GHSA-83fc-fqcc-2hmg&#34; title=&#34;Denial of Service Vulnerabilities in React Server Components&#34; rel=&#34;noopener&#34;&gt;Denial of Service Vulnerabilities in React Server Components&lt;/a&gt; (真累啊)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://vercel.com/blog/agents-md-outperforms-skills-in-our-agent-evals&#34; title=&#34;Vercel 的最新研究&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Vercel 的最新研究&lt;/a&gt;表明，在针对 Next.js 16 开发的最新评估中，他们发现将 8KB 的文档索引塞进 AGENTS.md 文件中效果更好，因为 skills 无法可靠地触发。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;SolidJS 创始人 Ryan Carniato 发布 &lt;a href=&#34;https://dev.to/this-is-learning/javascript-frameworks-heading-into-2026-2hel&#34; title=&#34;JavaScript Frameworks - Heading into 2026&#34; rel=&#34;noopener ugc nofollow&#34;&gt;JavaScript Frameworks - Heading into 2026&lt;/a&gt;，分析当前充满活力的前端开发领域。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-4&#34;&gt;优质文章&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.smashingmagazine.com/2026/01/unstacking-css-stacking-contexts/&#34; title=&#34;Unstacking CSS Stacking Contexts — Smashing Magazine&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Unstacking CSS Stacking Contexts — Smashing Magazine&lt;/a&gt;：非常好的好文章！条理清晰，深入剖析 CSS 层叠上下文 (Stacking Contexts) 的工作原理，解释为什么 &lt;code&gt;z-index&lt;/code&gt; 会失效，并提供实用的调试技巧与解决方案。被安利了 &lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=mikerheault.vscode-better-css-stacking-contexts&#34; title=&#34;Better CSS Stacking Contexts&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Better CSS Stacking Contexts&lt;/a&gt; 这个 vscode 插件。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://css-tricks.com/there-is-no-need-to-trap-focus-on-a-dialog-element/&#34; title=&#34;There is No Need to Trap Focus on a Dialog Element&#34; rel=&#34;noopener ugc nofollow&#34;&gt;There is No Need to Trap Focus on a Dialog Element&lt;/a&gt;：介绍在使用原生 &lt;code&gt;&amp;lt;dialog&amp;gt;&lt;/code&gt; 元素时，为什么开发者不再需要手动实现复杂的焦点陷阱（Focus Trap）逻辑。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.blog/engineering/from-pixels-to-characters-the-engineering-behind-github-copilot-clis-animated-ascii-banner/&#34; title=&#34;From pixels to characters: The engineering behind GitHub Copilot CLI’s animated ASCII banner&#34; rel=&#34;noopener ugc nofollow&#34;&gt;From pixels to characters: The engineering behind GitHub Copilot CLI’s animated ASCII banner&lt;/a&gt;：本文深入探讨了为 GitHub Copilot CLI 开发 3 秒 ASCII 动画背后的复杂工程实现，涵盖了终端渲染限制、色彩一致性及无障碍设计。&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2026/02/a0bab00540fdb5e998994464a75cce10.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;10-tips-for-claude-code&#34;&gt;10 Tips for Claude Code&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://x.com/bcherny/status/2017742759218794768&#34; title=&#34;A Link of https://x.com/bcherny/status/2017742759218794768&#34; rel=&#34;noopener&#34;&gt;https://x.com/bcherny/status/2017742759218794768&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Claude Code 的开发者 Boris Cherny 分享了其使用 Anthropic 最新推出的 Claude Code 命令行工具的进阶技巧，涵盖自动化、调试、学习模式及多代理协作。&lt;/p&gt;
&lt;h4 id=&#34;1-skills--automation&#34;&gt;1. 自动化与技能扩展（Skills &amp;amp; Automation）&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;建议将每日重复操作转化为自定义技能（Skills），并提交至 Git 仓库供跨项目复用。&lt;/li&gt;
&lt;li&gt;创建 &lt;code&gt;/techdebt&lt;/code&gt; 指令，在每个会话结束时运行，用于发现并消除重复代码。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;2-debugging--cicd&#34;&gt;2. 高效调试与流程集成（Debugging &amp;amp; CI/CD）&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;启用 Slack MCP（Model Context Protocol），直接将 Slack 中的 Bug 讨论贴入 Claude 进行修复，减少上下文切换（Context switching）。&lt;/li&gt;
&lt;li&gt;授权 Claude 自动修复失败的 CI 测试，或通过分析 Docker 日志定位问题，无需微观管理（Micromanage）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;3-prompting--code-review&#34;&gt;3. 提示词工程与代码评审（Prompting &amp;amp; Code Review）&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;让 Claude 扮演评审者（Reviewer），通过“对我提交的代码进行质询，直到通过测试再创建 PR”等提示词提升质量。&lt;/li&gt;
&lt;li&gt;要求 Claude 对比主分支（Main branch）和功能分支的行为差异，证明代码的有效性。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;4-environment--setup&#34;&gt;4. 环境配置与工具优化（Environment &amp;amp; Setup）&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;推荐使用 Ghostty 终端以获得更好的同步渲染和 24 位色彩支持。（我用 warp 也很好用）&lt;/li&gt;
&lt;li&gt;使用 &lt;code&gt;/statusline&lt;/code&gt; 自定义状态栏，实时显示上下文使用情况（Context usage）和当前 Git 分支。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;5-subagents--analytics&#34;&gt;5. 复杂任务与数据分析（Subagents &amp;amp; Analytics）&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;在请求中加入 “use subagents” 指令，让 Claude 投入更多算力（Compute）处理复杂问题，并保持主代理上下文整洁。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;通过编写技能调用 BigQuery (bq) 等命令行工具，直接在 Claude Code 中进行实时数据指标分析。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;6-learning--understanding&#34;&gt;6. 深度学习与知识内化（Learning &amp;amp; Understanding）&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;在 &lt;code&gt;/config&lt;/code&gt; 中开启“解释模式”（Explanatory/Learning output style），让 Claude 解释代码变更背后的原因（Why）。 (我觉得这个解释模式真的好用)&lt;/li&gt;
&lt;li&gt;利用 Claude 生成视觉化的 HTML 演示文稿（Slides）或 ASCII 图表，辅助理解陌生的代码库或协议。&lt;/li&gt;
&lt;li&gt;构建间隔重复（Spaced-repetition）学习技能，通过问答形式填补知识盲区。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;heading-5&#34;&gt;新特性&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://css-tricks.com/how-to-style-the-new-search-text-and-other-highlight-pseudo-elements/&#34; title=&#34;如何为新的 ::search-text 和其他高亮伪元素设计样式&#34; rel=&#34;noopener ugc nofollow&#34;&gt;如何为新的 ::search-text 和其他高亮伪元素设计样式&lt;/a&gt;：介绍 Chrome 144 新推出的 &lt;code&gt;::search-text&lt;/code&gt; 伪元素，以及如何利用 CSS 相对颜色语法统一美化各种文本高亮样式。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.zhangxinxu.com/wordpress/2026/01/insertbefore-movebefore-dom/&#34; title=&#34;告别 insertBefore，使用 moveBefore 移动 DOM 元素&#34; rel=&#34;noopener ugc nofollow&#34;&gt;告别 insertBefore，使用 moveBefore 移动 DOM 元素&lt;/a&gt; 介绍了原生 DOM 新 API &lt;code&gt;moveBefore&lt;/code&gt; 的用法、优势及其在 Web Components 中的应用，并对比了传统 &lt;code&gt;insertBefore&lt;/code&gt; 的局限性。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-6&#34;&gt;工具&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/benjitaylor/agentation&#34; title=&#34;agentation&#34; rel=&#34;noopener&#34;&gt;agentation&lt;/a&gt;：一款为 AI Agents 设计的视觉反馈工具，通过点击并添加标注，随后生成包含元素路径、CSS 选择器（Selectors）、位置等详细上下文的 Markdown 文本。&lt;a href=&#34;https://agentation.dev&#34; title=&#34;文档&#34; rel=&#34;noopener ugc nofollow&#34;&gt;文档&lt;/a&gt;| &lt;a href=&#34;https://x.com/benjitaylor/status/2014109590972145908&#34; title=&#34;Tweet&#34; rel=&#34;noopener&#34;&gt;Tweet&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/01/7707ab61737d10cd6788684bd391b8ee.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;这个 &lt;a href=&#34;https://marginlab.ai/trackers/claude-code/&#34; title=&#34;MarginLab&#34; rel=&#34;noopener ugc nofollow&#34;&gt;MarginLab&lt;/a&gt; 挺有意思的，一个针对 Claude Code 和 Codex 的独立性能监控工具，模拟真实用户编码场景来监测大模型的“降智”，&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://x.com/vikingmute/status/2017495789443199126&#34; title=&#34;A Link of https://x.com/vikingmute/status/2017495789443199126&#34; rel=&#34;noopener&#34;&gt;https://x.com/vikingmute/status/2017495789443199126&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;-codepen-&#34;&gt;趣站与 Codepen 精选&lt;/h2&gt;
&lt;h3 id=&#34;react-tilt-button---3d-tactile-react-button-component&#34;&gt;React Tilt Button - 3D Tactile React Button Component&lt;/h3&gt;
&lt;p&gt;好喜欢这个！感觉是很巧妙的设计。&lt;br /&gt;
一个具备 3D 触感、支持倾斜和深度效果的 React 交互按钮组件。它利用 CSS 的 3D 变换（3D Transforms）技术，为传统的按钮元素注入了物理深度（Depth）和动态倾斜（Tilt）效果。组件不仅内置了从复古游戏（Arcade）到现代金属（Steel）等多种预设主题，还开放了高度细粒度的自定义参数，让开发者可以轻松调整按钮的海拔高度（Elevation）、圆角（Radius）及光泽感（Glare），从而打造出极具表现力的用户界面。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://react-tilt-button.vercel.app/&#34; title=&#34;A Link of https://react-tilt-button.vercel.app/&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://react-tilt-button.vercel.app/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/02/7b566e0382bffe8ecafba88829007a02.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;GitHub 源码&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/archisvaze/react-tilt-button&#34; title=&#34;A Link of https://github.com/archisvaze/react-tilt-button&#34; rel=&#34;noopener&#34;&gt;https://github.com/archisvaze/react-tilt-button&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;super-monkey-ball&#34;&gt;Super Monkey Ball&lt;/h3&gt;
&lt;p&gt;开发商 Twilight 将&lt;a href=&#34;&#34; title=&#34;世嘉经典游戏《超级猴子球》移植到网页上 &#34; rel=&#34;noopener ugc nofollow&#34;&gt;世嘉经典游戏《超级猴子球》移植到网页上 &lt;/a&gt;，做得非常出色且运行流畅。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://bsky.app/profile/twilightpb.bsky.social/post/3mdbynphtbc2l&#34; title=&#34;A Link of https://bsky.app/profile/twilightpb.bsky.social/post/3mdbynphtbc2l&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://bsky.app/profile/twilightpb.bsky.social/post/3mdbynphtbc2l&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/02/d94a3de701caad8680595c0835025a67.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://monkeyball-online.pages.dev/&#34; title=&#34;A Link of https://monkeyball-online.pages.dev/&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://monkeyball-online.pages.dev/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;可以查看&lt;a href=&#34;https://github.com/sndrec/WebMonkeyBall&#34; title=&#34;源代码&#34; rel=&#34;noopener&#34;&gt;源代码&lt;/a&gt;。&lt;/p&gt;
&lt;h3 id=&#34;typewriter-web-component-v2&#34;&gt;Typewriter Web Component V2&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/luis-lessrain/pen/EaKjXwB&#34; title=&#34;A Link of https://codepen.io/luis-lessrain/pen/EaKjXwB&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/luis-lessrain/pen/EaKjXwB&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;目前该项目仅在 CodePen 上提供，但它的效果非常出色。演示允许您交互式地启动、暂停/恢复、完成和重置动画。此外，还有一个进度条和按钮，可以跳转到特定的进度点。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/02/78044015d16e7335da5a0cfc3bd00e7d.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;refs&#34;&gt;Refs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://frontendfoc.us/issues/726&#34; title=&#34;Frontend Focus #726&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Frontend Focus #726&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://react.statuscode.com/issues/460&#34; title=&#34;React Status #460&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React Status #460&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      
    </content>
    
  </entry>
  
  <entry>
    <title><![CDATA[FE Bits Vol.24 | Rolldown 1.0 RC、Anime.js v4.3 自动布局与 Chrome 145 100vw 滚动条感知]]></title>
    <link rel="alternate" type="text/html" href="https://news.cosine.ren/p/vol-24" />
    <id>https://news.cosine.ren/p/vol-24#15609</id>
    <author>
      <name>cosine</name>
    </author>
    <published>2026-01-25T10:56:00Z</published>
    <updated>2026-01-25T10:56:00Z</updated>
    
    <content type="html">
      &lt;blockquote&gt;
&lt;p&gt;本期网址 &lt;a href=&#34;https://blog.cosine.ren/post/weekly-24&#34; title=&#34;A Link of https://blog.cosine.ren/post/weekly-24&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://blog.cosine.ren/post/weekly-24&lt;/a&gt;&lt;br /&gt;
本周刊更新时间期望是在每周天。&lt;br /&gt;
推荐订阅本周刊的 &lt;a href=&#34;https://blog.cosine.ren/rss.xml&#34; title=&#34;RSS&#34; rel=&#34;noopener ugc nofollow&#34;&gt;RSS&lt;/a&gt;。&lt;br /&gt;
公众号 前端周周谈 FE Bits，点击阅读原文链接可查看原文。&lt;br /&gt;
QQ 讨论小群 598022684 / &lt;a href=&#34;https://discord.gg/XzvrvNMcSe&#34; title=&#34;Discord 群&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Discord 群&lt;/a&gt;&lt;br /&gt;
本周刊文章内容同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;，欢迎关注。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;今天是 2026 年 1 月 25 日，星期天。&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;个人动态&lt;/h2&gt;
&lt;h3 id=&#34;heading-1&#34;&gt;碎碎念&lt;/h3&gt;
&lt;p&gt;以下是一些碎碎念杂谈：&lt;/p&gt;
&lt;p&gt;越用 AI 会越有种「啊他果然取代不了我」的感觉，尤其是他犯蠢的时候。&lt;/p&gt;
&lt;p&gt;但是很多时候又很方便确确实实省下来了很多摸鱼时间，又爱又恨的感觉。&lt;/p&gt;
&lt;p&gt;也不奇怪很多程序员会排斥 AI 写代码，因为架构上真的很容易犯蠢，写的代码但凡是个代码洁癖都会感觉哎呦还不如自己来写，但是重复性业务工作真的太省劲了。&lt;/p&gt;
&lt;p&gt;虽然下沉市场和资本感觉都在 AI 狂欢，但我体感上的话，感觉其实平常程序员的生活是从写代码变成审计划和审代码改代码了，更爽了，写自己的东西更有劲了x&lt;/p&gt;
&lt;p&gt;ai 真的容易堆屎山，我现在每次写完让 opus 4.5 review 一遍 codex review 一遍都差不多了我再看才能好点儿，不过他们自己 review 的效果还是挺好的。&lt;/p&gt;
&lt;p&gt;PS: 仅限前端/ Swift 领域，后端我只能通过同事的使用感受推测。&lt;/p&gt;
&lt;h3 id=&#34;heading-2&#34;&gt;项目更新&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/yusixian/moe-copy-ai&#34; title=&#34;A Link of https://github.com/yusixian/moe-copy-ai&#34; rel=&#34;noopener&#34;&gt;https://github.com/yusixian/moe-copy-ai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我很喜欢现在 &lt;a href=&#34;https://moe.cosine.ren/docs/user-guide/usage#%E6%89%B9%E9%87%8F%E6%8A%93%E5%8F%96&#34; title=&#34;Moe Copy AI 的内容提取功能&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Moe Copy AI 的内容提取功能&lt;/a&gt;～&lt;/p&gt;
&lt;p&gt;现在可以直接选中提取推文串进行总结的，准备下个版本改改加一下常用的选择器，现在还是直接选中元素提取出来进行总结。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/01/d61710239f2f8c765531ef38cb1df897.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;然后这周 Moe Copy AI 发了 &lt;a href=&#34;https://github.com/yusixian/moe-copy-ai/releases/tag/0.3.0&#34; title=&#34;v0.3.0&#34; rel=&#34;noopener&#34;&gt;v0.3.0&lt;/a&gt;，太感动了终于有大佬 &lt;a href=&#34;https://github.com/hakadao&#34; title=&#34;@hakadao&#34; rel=&#34;noopener&#34;&gt;@hakadao&lt;/a&gt; 帮忙改了一下最开始 AI 写的一坨的 UI 了，工作量巨大，现在 UI 清爽多了！（&lt;a href=&#34;https://github.com/yusixian/moe-copy-ai/pull/26&#34; title=&#34;#26&#34; rel=&#34;noopener&#34;&gt;#26&lt;/a&gt;）&lt;/p&gt;
&lt;p&gt;虽然现在还在陆续改，但是我也看不下去之前的了所以直接推了一版（&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://moe.cosine.ren/docs/changelog#v030---2026-01-22&#34; title=&#34;更新日志&#34; rel=&#34;noopener ugc nofollow&#34;&gt;更新日志&lt;/a&gt; | &lt;a href=&#34;https://chromewebstore.google.com/detail/moe-copy-ai/dfmlcfckmfgabpgbaobgapdfmjiihnck&#34; title=&#34;下载&#34; rel=&#34;noopener ugc nofollow&#34;&gt;下载&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/01/f1c2f06395200826a0c7e99afd7fedcc.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;heading-3&#34;&gt;博客更新&lt;/h3&gt;
&lt;p&gt;然后博客更新这边，最近把我们的 Electron 应用配置上了 Mac 端的 TestFlight，用 GitHub Actions 实现自动化构建和上传。踩了不少坑，记录一下整个流程。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.cosine.ren/post/electron-mas-testflight-guide&#34; title=&#34;用 GitHub Actions 自动化 Electron 上架 MAS（Mac App Store）&#34; rel=&#34;noopener ugc nofollow&#34;&gt;用 GitHub Actions 自动化 Electron 上架 MAS（Mac App Store）&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;然后给 astro-koharu 添加了无后端的编辑功能，只在本地 dev 模式有，还打算加一个无后端管理本地文章的 CMS 功能，灵感来源于上周发的 &lt;a href=&#34;https://blog.jim-nielsen.com/2026/os-as-cms/&#34; title=&#34;OS 即 CMS 文章&#34; rel=&#34;noopener ugc nofollow&#34;&gt;OS 即 CMS 文章&lt;/a&gt;&lt;br /&gt;
编辑器使用的是 &lt;a href=&#34;https://github.com/TypeCellOS/BlockNote&#34; title=&#34;BlockNote&#34; rel=&#34;noopener&#34;&gt;BlockNote&lt;/a&gt; 是好用的，基于 Prosemirror 和 Tiptap。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/01/a1c1d69ef48c758010e553e882e470db.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/01/6c6956e3b49729ddf272669f3f738f13.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;另外现在可以自动创建不存在的分类映射了，也可以改～&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/01/1d86afe19ed2fe921990657685393c2d.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading-4&#34;&gt;社区动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://%3Chttps://voidzero.dev/posts/announcing-rolldown-rc%3E&#34; title=&#34;Announcing Rolldown 1.0 RC&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Announcing Rolldown 1.0 RC&lt;/a&gt;：Rolldown 正式发布 1.0 发布候选版本（RC），作为 Vite 未来的核心打包工具，它在保持 Rollup 兼容性的同时，凭借 Rust 实现了 10-30 倍的速度提升。此 RC 标志着 API 的稳定性。在 1.0 之前不会有任何破坏性改动。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Vercel 公布了 &lt;a href=&#34;http://skills.sh&#34; title=&#34;skills.sh&#34; rel=&#34;noopener ugc nofollow&#34;&gt;skills.sh&lt;/a&gt;，是一个用于查找和共享代理 Skills 的网站，其中 Remotion 也出了 skill，现在只需要使用 Claude Code 即可通过编程方式制作视频！通过 &lt;code&gt;npx skills add remotion-dev/skills&lt;/code&gt; （Source &lt;a href=&#34;https://x.com/vercel/status/2013660091854000360&#34; title=&#34;Tweet1&#34; rel=&#34;noopener&#34;&gt;Tweet1&lt;/a&gt; | &lt;a href=&#34;https://x.com/Remotion/status/2013626968386765291&#34; title=&#34;Tweet2&#34; rel=&#34;noopener&#34;&gt;Tweet2&lt;/a&gt;）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.bram.us/2026/01/15/100vw-horizontal-overflow-no-more/&#34; title=&#34;Using 100vw is now scrollbar-aware&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Using 100vw is now scrollbar-aware&lt;/a&gt;：从 Chrome 145 开始，如果根元素（而非 &lt;code&gt;body&lt;/code&gt; ）设置了&lt;code&gt;overflow: scroll&lt;/code&gt;，则在 &lt;code&gt;vw&lt;/code&gt; 的大小中应考虑默认滚动条宽度，解决了长期以来因视口单位导致的网页多余水平滚动问题。该改进同样适用于 vh（对应水平滚动条）以及视口单位的小、大、动态变体（sv*, lv*, dv*）&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;animejs-v43&#34;&gt;Anime.js v4.3&lt;/h3&gt;
&lt;p&gt;Anime.js v4.3 发布，引入强大的自动布局（Auto Layout）动画功能，支持平滑处理复杂的 CSS 布局变换。&lt;/p&gt;
&lt;p&gt;这个真的好诶！跨框架造福前端人。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://x.com/JulianGarnier/status/2013661582417375320&#34; title=&#34;Introducing Auto Layout in Anime.js v4.3!&#34; rel=&#34;noopener&#34;&gt;Introducing Auto Layout in Anime.js v4.3!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;官方提供了 &lt;a href=&#34;https://animejs.com/documentation/layout&#34; title=&#34;文档说明&#34; rel=&#34;noopener ugc nofollow&#34;&gt;文档说明&lt;/a&gt; 和 &lt;a href=&#34;https://github.com/juliangarnier/anime/releases/tag/v4.3.0&#34; title=&#34;发布日志&#34; rel=&#34;noopener&#34;&gt;发布日志&lt;/a&gt;，并在 CodePen 上发布了 &lt;a href=&#34;https://codepen.io/collection/yykPaw&#34; title=&#34;示例集合&#34; rel=&#34;noopener ugc nofollow&#34;&gt;示例集合&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;找了一个示例如下，太丝滑了：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/juliangarnier/pen/PwzmxwR&#34; title=&#34;A Link of https://codepen.io/juliangarnier/pen/PwzmxwR&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/juliangarnier/pen/PwzmxwR&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading-5&#34;&gt;优质文章&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.solazy.me/20260120/&#34; title=&#34;不会编程的人能靠 AI 独立开发应用吗？&#34; rel=&#34;noopener ugc nofollow&#34;&gt;不会编程的人能靠 AI 独立开发应用吗？&lt;/a&gt;：作者认为，AI 确实大幅降低了“将想法翻译成代码”的技术门槛，但“不会编程”、“靠 AI”和“应用”这些词语的边界远比想象中模糊。在与 AI 协作的过程中，使用者会不自觉地习得编程概念，AI 更多是作为博学但死板的“徒弟”或“翻译官”，帮助有逻辑、有想法的人实现愿景，而非代替思考和定义问题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://&amp;lt;https://nextjs.org/blog/turbopack-incremental-computation&amp;gt;&#34; title=&#34;Inside Turbopack: Building Faster by Building Less&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Inside Turbopack: Building Faster by Building Less&lt;/a&gt;：深入解析 Next.js 的新一代打包工具 Turbopack 如何通过增量计算（Incremental Computation）和细粒度缓存实现极致的开发响应速度。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://paulmakeswebsites.com/writing/shadcn-radio-button/&#34; title=&#34;The Incredible Overcomplexity of the Shadcn Radio Button&#34; rel=&#34;noopener ugc nofollow&#34;&gt;The Incredible Overcomplexity of the Shadcn Radio Button&lt;/a&gt;：探讨了现代前端 UI 框架（如 Shadcn）如何将原本简单的原生单选按钮变得异常复杂，并呼吁回归 CSS 原生开发。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://css-tricks.com/http-archive-2025-web-almanac/&#34; title=&#34;HTTP Archive 2025 Web Almanac | CSS-Tricks&#34; rel=&#34;noopener ugc nofollow&#34;&gt;HTTP Archive 2025 Web Almanac | CSS-Tricks&lt;/a&gt;：介绍 HTTP Archive 发布的 2025 年度《Web 年鉴》报告，总结了当前 Web 性能、CSS 趋势、可访问性及资源膨胀等核心数据。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://atlas9.dev/blog/soft-delete.html&#34; title=&#34;The challenges of soft delete&#34; rel=&#34;noopener ugc nofollow&#34;&gt;The challenges of soft delete&lt;/a&gt;：探讨了传统“软删除”模式（如 &lt;code&gt;archived_at&lt;/code&gt; 列）带来的长期复杂性，并对比分析了触发器、应用层事件和 WAL 等更优的替代方案。&lt;br /&gt;
对于新项目，作者优先推荐基于触发器的方案，因为它部署简单、不引入额外基建，且有效隔离了活跃数据与归档数据。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.smashingmagazine.com/2026/01/rethinking-pixel-perfect-web-design/&#34; title=&#34;Rethinking “Pixel Perfect” Web Design — Smashing Magazine&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Rethinking “Pixel Perfect” Web Design — Smashing Magazine&lt;/a&gt;：探讨了在多设备、响应式和动态内容的现代 Web 环境下，为何传统的“像素级完美（Pixel Perfect）”观念已不再适用。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/lin-michael/localspace&#34; title=&#34;localspace&#34; rel=&#34;noopener&#34;&gt;localspace&lt;/a&gt;：现代化的 &lt;code&gt;localForage&lt;/code&gt; 替代方案，提供简单的浏览器存储封装。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://nerdy.dev/overscroll-effects-on-nested-scrollers-in-all-browsers?utm_source=rss&#34; title=&#34;Overscroll Effects On Nested Scrollers In All Browsers&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Overscroll Effects On Nested Scrollers In All Browsers&lt;/a&gt;：Chrome 145 现已支持嵌套滚动容器的过度滚动效果（Overscroll Effects），实现了全浏览器体验的一致性。此前该效果仅在根页面有效，且只有 Safari 和 Firefox 支持子容器的回弹。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.logrocket.com/how-to-animate-svg-css-tutorial-examples/&#34; title=&#34;How to animate SVG with CSS: Tutorial with examples&#34; rel=&#34;noopener ugc nofollow&#34;&gt;How to animate SVG with CSS: Tutorial with examples&lt;/a&gt;：这篇教程详细介绍了如何利用 CSS 属性和关键帧动画为 SVG（Scalable Vector Graphics，可缩放矢量图形）添加动态效果，从基础嵌入到复杂的路径动画均有涵盖。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;heading-6&#34;&gt;新特性&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://una.im/follow-the-anchor&#34; title=&#34;Follow-the-leader pattern with CSS anchor positioning&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Follow-the-leader pattern with CSS anchor positioning&lt;/a&gt;：介绍如何利用 CSS 锚点定位（CSS Anchor Positioning）实现元素跟随交互目标移动的“随动”（Follow-the-leader）模式。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/01/a7ab50a04bff59e7940cac51bb2ff71d.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading-7&#34;&gt;工具&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/darula-hpp/shimmer-from-structure&#34; title=&#34;darula-hpp/shimmer-from-structure&#34; rel=&#34;noopener&#34;&gt;darula-hpp/shimmer-from-structure&lt;/a&gt;：一个能够根据 React 组件实际 DOM 结构自动生成像素级精确骨架屏（Shimmer Skeleton）的工具库。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendfoc.us/link/179582/web&#34; title=&#34;Better SVG&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Better SVG&lt;/a&gt;：用于编辑带有实时预览功能的 SVG 文件的 VS Code 扩展程序，包含许多实用功能，例如实时预览、颜色选择器、缩放/平移控件、可编辑的配色方案 currentColor 值、深色背景切换以及 SVGO 集成，一键优化 svg 体积。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/01/d6869db7c4de12b7514420cb44836be6.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;-codepen-&#34;&gt;趣站与 Codepen 精选&lt;/h2&gt;
&lt;h3 id=&#34;-css--drop-shadow-&#34;&gt;&lt;strong&gt;使用 CSS 中的 drop-shadow() 滤镜为不规则形状添加阴影&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://www.wearedevelopers.com/en/magazine/675/adding-shadows-to-irregular-shapes-in-css-with-filter-drop-shadow-675&#34; title=&#34;A Link of https://www.wearedevelopers.com/en/magazine/675/adding-shadows-to-irregular-shapes-in-css-with-filter-drop-shadow-675&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://www.wearedevelopers.com/en/magazine/675/adding-shadows-to-irregular-shapes-in-css-with-filter-drop-shadow-675&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Chris Heilmann 向我们展示了如何使用 &lt;code&gt;filter: drop-shadow()&lt;/code&gt; 为不规则形状添加阴影，该过滤器可以识别“图像的透明部分或 SVG 路径的形状，并相应地应用阴影”。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/codepo8/pen/qENbVmb&#34; title=&#34;A Link of https://codepen.io/codepo8/pen/qENbVmb&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/codepo8/pen/qENbVmb&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/01/61443be0ae7d2172563bb0d574c7355d.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;-superellipse----css&#34;&gt;&lt;strong&gt;使用 superellipse() 函数创建迷人的角形 — 仅 CSS&lt;/strong&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;在这个由 Zoran Jambor 创作的 Pen 中，一个简单的圆形通过“ &lt;code&gt;superellipse()&lt;/code&gt; CSS 函数的随机值”演变成万花筒般的形状。点击“关于”按钮，即可查看关于 &lt;code&gt;superellipse()&lt;/code&gt; 函数的简短教程和实用资源。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/ZoranJambor/pen/ogLLLgr&#34; title=&#34;A Link of https://codepen.io/ZoranJambor/pen/ogLLLgr&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/ZoranJambor/pen/ogLLLgr&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/01/605f54710d717bbd7b63235bd90c4d0d.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;css-&#34;&gt;&lt;strong&gt;CSS 光学错觉&lt;/strong&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Alvaro Montoro 在这份令人惊艳的合集中分享了大量用纯 CSS 实现的著名光学错觉作品。其中一张在电视模式下简直太震撼了😵‍💫&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/collection/GpWqKk&#34; title=&#34;A Link of https://codepen.io/collection/GpWqKk&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/collection/GpWqKk&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/01/7896eaf9e6daefc9237eec2a9f17bd19.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;heading-8&#34;&gt;&lt;strong&gt;旧布随风飘扬&lt;/strong&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;在 Sabo Sugi 的这个 Three.js 场景中，一块饱经风霜的布料在微风中轻轻飘动。深入设置控件，即可更改图像、颜色、风力和撕裂效果。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/sabosugi/pen/ByzLYpb&#34; title=&#34;A Link of https://codepen.io/sabosugi/pen/ByzLYpb&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/sabosugi/pen/ByzLYpb&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/01/cae6c7302db262b055672db83ada32ff.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;refs&#34;&gt;Refs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://react.statuscode.com/issues/459&#34; title=&#34;React Status #459&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React Status #459&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendfoc.us/issues/725&#34; title=&#34;Frontend Focus #725&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Frontend Focus #725&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/spark/491&#34; title=&#34;Code Spark #491&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Code Spark #491&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/spark/492&#34; title=&#34;Code Spark #492&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Code Spark #492&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

      
    </content>
    
  </entry>
  
  <entry>
    <title><![CDATA[FE Bits Vol.23 | jQuery 4 发布，Chrome 新增垂直标签页功能，Astro 被 Cloudflare 收购]]></title>
    <link rel="alternate" type="text/html" href="https://news.cosine.ren/p/vol-23" />
    <id>https://news.cosine.ren/p/vol-23#15434</id>
    <author>
      <name>cosine</name>
    </author>
    <published>2026-01-18T13:47:22Z</published>
    <updated>2026-01-18T13:47:22Z</updated>
    
    <content type="html">
      &lt;blockquote&gt;
&lt;p&gt;本期网址 &lt;a href=&#34;https://blog.cosine.ren/post/weekly-23&#34; title=&#34;A Link of https://blog.cosine.ren/post/weekly-23&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://blog.cosine.ren/post/weekly-23&lt;/a&gt; &lt;br /&gt;
本周刊更新时间期望是在每周天。 &lt;br /&gt;
推荐订阅本周刊的 &lt;a href=&#34;https://blog.cosine.ren/rss.xml&#34; title=&#34;RSS&#34; rel=&#34;noopener ugc nofollow&#34;&gt;RSS&lt;/a&gt;。&lt;br /&gt;
公众号 前端周周谈 FE Bits，点击阅读原文链接可查看原文。&lt;br /&gt;
QQ 讨论小群 598022684 / &lt;a href=&#34;https://discord.gg/XzvrvNMcSe&#34; title=&#34;Discord 群&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Discord 群&lt;/a&gt; &lt;br /&gt;
本周刊文章内容同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;，欢迎关注。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;今天是 2026 年 1 月 18 日，星期天。&lt;/p&gt;
&lt;p&gt;Moe Copy AI 发了 &lt;a href=&#34;https://github.com/yusixian/moe-copy-ai/releases/tag/0.2.1&#34; title=&#34;v0.2.1&#34; rel=&#34;noopener&#34;&gt;v0.2.1&lt;/a&gt; 和 &lt;a href=&#34;https://github.com/yusixian/moe-copy-ai/releases/tag/0.2.2&#34; title=&#34;v0.2.2&#34; rel=&#34;noopener&#34;&gt;v0.2.2&lt;/a&gt;，做了国际化，将悬浮球的功能抽取至侧边栏单页抓取 tab 了，内容提取下也加了 AI 总结按钮。&lt;/p&gt;
&lt;p&gt;感谢 &lt;a href=&#34;https://github.com/XueHua-s&#34; title=&#34;@XueHua-s&#34; rel=&#34;noopener&#34;&gt;@XueHua-s&lt;/a&gt; 贡献的 htmlToMarkdown 重构为使用 unifined 改进～（&lt;a href=&#34;https://github.com/yusixian/moe-copy-ai/pull/19&#34; title=&#34;#19&#34; rel=&#34;noopener&#34;&gt;#19&lt;/a&gt;）&lt;/p&gt;
&lt;p&gt;然后是 astro-koharu 主题，将周刊功能泛化为了多系列，featuredSeries 支持数组与自定义 slug，动态生成系列页面并替代固定 &lt;code&gt;/weekly&lt;/code&gt; 了，现在可以新增以下如图所示的系列文章了。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/01/9caacaeaa2c22fc74e2aeb5b95513350.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2026/01/1e44232d7b78a496bd12c54320442b6c.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;并且评论组件现在支持切换三种评论组件了（waline / remark42 / giscus）&lt;/p&gt;
&lt;p&gt;开心！Waline 做评论真是又好看又好用啊&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/01/0fcd4666e5e8a0b2abb0ee517bf26166.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;这周都在肝项目，所以周刊短短的！&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;社区动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.jquery.com/2026/01/17/jquery-4-0-0/&#34; title=&#34;jQuery 4.0.0&#34; rel=&#34;noopener ugc nofollow&#34;&gt;jQuery 4.0.0&lt;/a&gt;：时隔近十年，jQuery 发布了 4.0.0 正式版，带来了大量现代化改进，包括移除对旧版浏览器（IE 10 及更早版本）的支持、引入新特性以及优化内部实现。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.bram.us/2026/01/16/chrome-145-adds-experimental-support-for-vertical-tabs/&#34; title=&#34;Chrome 145 adds Experimental Support for Vertical Tabs&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Chrome 145 adds Experimental Support for Vertical Tabs&lt;/a&gt;：Chrome 145 实验性支持垂直标签页。（天呐 2026 了 Chrome 终于把垂直标签页学过来了太感动了）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://vercel.com/blog/introducing-react-best-practices&#34; title=&#34;隆重推出：React 最佳实践&#34; rel=&#34;noopener ugc nofollow&#34;&gt;隆重推出：React 最佳实践&lt;/a&gt;：Vercel 团队将 &lt;em&gt;“十余年 React 和 Next.js 优化经验”&lt;/em&gt; 提炼成了&lt;a href=&#34;https://github.com/vercel-labs/agent-skills/tree/main/skills/react-best-practices/rules&#34; title=&#34;一套 Markdown 文件&#34; rel=&#34;noopener&#34;&gt;一套 Markdown 文件&lt;/a&gt;， 旨在供 Claude Code 等代码助手使用，当然您也可以自行阅读。其目标是帮助这些助手编写更优质的 React 代码，而无需过多指导。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可以通过 &lt;code&gt;npx add-skill vercel-labs/agent-skills&lt;/code&gt; 直接安装&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://astro.build/blog/joining-cloudflare/&#34; title=&#34;The Astro Technology Company joins Cloudflare | Astro&#34; rel=&#34;noopener ugc nofollow&#34;&gt;The Astro Technology Company joins Cloudflare | Astro&lt;/a&gt;：Astro 框架背后的公司 The Astro Technology Company 宣布加入 Cloudflare，以获取更多资源并专注于框架核心开发，承诺保持开源和平台中立。（真好，我很喜欢 astro 写网站的感觉）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;并且 &lt;a href=&#34;https://astro.build/blog/year-in-review-2025/&#34; title=&#34;Astro 回顾了过去一年&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Astro 回顾了过去一年&lt;/a&gt;，展望了 2025 年的更新、变化和新增功能吗，并且&lt;a href=&#34;https://astro.build/blog/astro-6-beta/&#34; title=&#34;发布了 Astro 6 的 beta 版本。&#34; rel=&#34;noopener ugc nofollow&#34;&gt;发布了 Astro 6 的 beta 版本。&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.sanity.io/blog/you-should-never-build-a-cms?ref=ww-rss&#34; title=&#34;&amp;#34;You should never build a CMS&amp;#34; | Sanity&#34; rel=&#34;noopener ugc nofollow&#34;&gt;&amp;quot;You should never build a CMS&amp;quot; | Sanity&lt;/a&gt;：Sanity 回应 Cursor 将 CMS 迁移至 Markdown 的热议，分享了许多使用 CMS 的理由。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;文章与社区动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://gethopp.app/blog/hate-webkit&#34; title=&#34;Why I hate WebKit, a (non) love letter&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Why I hate WebKit, a (non) love letter&lt;/a&gt;：非常好文章推一下，Tauri WebKit 坑点大全，珍爱生命远离 WebKit！这个标题和 url 真是直抒胸臆。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://waspdev.com/articles/2026-01-01/javascript-for-of-loops-are-actually-fast&#34; title=&#34;JavaScript 的 for-of 循环实际上很快 (V8)&#34; rel=&#34;noopener ugc nofollow&#34;&gt;JavaScript 的 for-of 循环实际上很快 (V8)&lt;/a&gt;：探讨现代 V8 引擎中 &lt;code&gt;for-of&lt;/code&gt; 循环的性能表现，打破了开发者社区中关于其性能显著弱于传统循环的固有印象。作者建议现在除非是处理极端海量数据且对每一毫秒都敏感的场景，否则应优先使用语义更佳的 &lt;code&gt;for-of&lt;/code&gt; 循环。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://theorangeone.net/posts/rss-guids/&#34; title=&#34;GUIDs - How I messed up my RSS feed&#34; rel=&#34;noopener ugc nofollow&#34;&gt;GUIDs - How I messed up my RSS feed&lt;/a&gt;：这篇文章讲述了作者如何因在 RSS feed 中添加 UTM 参数导致所有文章被重复添加，并介绍了 GUID 字段来解决此类问题的经验。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://innei.in/posts/tech/lobehub-performance-dx-optimization&#34; title=&#34;记 LobeHub 的性能和 DX 优化&#34; rel=&#34;noopener ugc nofollow&#34;&gt;记 LobeHub 的性能和 DX 优化&lt;/a&gt;：作者分享了入职 LobeHub 一个月以来在性能和开发体验（DX）方面进行的优化工作。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/gibbok/typescript-book&#34; title=&#34;《简明 TypeScript 手册》&#34; rel=&#34;noopener&#34;&gt;《简明 TypeScript 手册》&lt;/a&gt; 是一本简短精炼的 TypeScript 指南，免费开放阅读。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://fant.io/react/&#34; title=&#34;How to Steal Any React Component&#34; rel=&#34;noopener ugc nofollow&#34;&gt;How to Steal Any React Component&lt;/a&gt;&lt;br /&gt;
网页做的还挺有趣的，介绍如何使用 React 的内部数据结构（通过 &lt;a href=&#34;https://github.com/acdlite/react-fiber-architecture&#34; title=&#34;Fiber&#34; rel=&#34;noopener&#34;&gt;Fiber&lt;/a&gt;）和 LLM 来重建生产 React 应用程序中的组件，而无需原始源代码。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.anildash.com/2026/01/09/how-markdown-took-over-the-world/&#34; title=&#34;How Markdown took over the world&#34; rel=&#34;noopener ugc nofollow&#34;&gt;How Markdown took over the world&lt;/a&gt;：回顾 Markdown 的诞生历程及其如何从一个小众博客工具演变为统治现代互联网和 AI 交互的通用文本标准。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://dbushell.com/2026/01/09/death-to-scroll-fade/&#34; title=&#34;Death to Scroll Fade!&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Death to Scroll Fade!&lt;/a&gt; 批判网页设计中过度使用“滚动渐入”（Scroll Fade）效果的弊端，呼吁回归简洁高效的用户体验。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.columkelly.com/blog/use-optimistic&#34; title=&#34;useOptimistic Won&amp;#39;t Save You&#34; rel=&#34;noopener ugc nofollow&#34;&gt;useOptimistic Won&#39;t Save You&lt;/a&gt;：深入探讨 React 19 的 useOptimistic 钩子，说明其必须结合 Transition 和 Action 状态管理才能真正处理复杂的竞态条件。&lt;br /&gt;
作者最后建议，这些复杂的底层 API 更多是为框架开发者设计的，普通开发者应倾向于使用成熟框架提供的抽象。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.debugbear.com/blog/measuring-react-app-performance&#34; title=&#34;如何衡量和优化 React 性能&#34; rel=&#34;noopener ugc nofollow&#34;&gt;如何衡量和优化 React 性能&lt;/a&gt;：全面介绍了衡量和优化 React 应用性能的工具与技术，重点讲解了 React 19.2 的新特性以及各类运行时和构建时的优化策略。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://allthingssmitty.com/2026/01/12/stop-turning-everything-into-arrays-and-do-less-work-instead/&#34; title=&#34;停止将所有内容都变成数组（并减少工作量）&#34; rel=&#34;noopener ugc nofollow&#34;&gt;停止将所有内容都变成数组（并减少工作量）&lt;/a&gt;：介绍如何利用 JavaScript 原生的迭代器辅助函数（Iterator helpers）实现延迟计算，从而优化处理大数据集时的性能和内存占用。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-2&#34;&gt;新特性&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://remysharp.com/2026/01/13/bytes-i-can-delete-after-all-this-time&#34; title=&#34;Bytes I can delete after all this time&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Bytes I can delete after all this time&lt;/a&gt;&lt;br /&gt;
由于 CSS 和 JS 的进步，越来越多的技术我们不再需要了，Remy Sharp 分享了一份我们可以抛弃的技术清单。&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;CSS 布局与样式增强&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用 &lt;code&gt;text-underline-offset&lt;/code&gt; 属性轻松控制文本下划线的距离，无需再用复杂的伪元素模拟。&lt;/li&gt;
&lt;li&gt;在 Flexbox 布局中直接使用 &lt;code&gt;gap&lt;/code&gt; 属性，告别过去需要通过处理 &lt;code&gt;margin&lt;/code&gt; (外边距) 来设置间距的繁琐操作。&lt;/li&gt;
&lt;li&gt;采用原生 CSS 嵌套 (Nesting) 和在选择器内嵌套媒体查询 (Media Queries)，使样式结构更清晰且无需预处理器。&lt;/li&gt;
&lt;li&gt;利用 &lt;code&gt;clamp(min, variable, max)&lt;/code&gt; 实现流体响应式尺寸，简化了复杂的断点计算。&lt;/li&gt;
&lt;li&gt;使用 &lt;code&gt;content: open-quote&lt;/code&gt; 结合 &lt;code&gt;q&lt;/code&gt; 标签实现根据语言自动适配的本地化引号。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;JavaScript 语法与交互优化&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;采用可选的 &lt;code&gt;catch&lt;/code&gt; 绑定 (Optional catch binding)，在不需要错误对象时直接写 &lt;code&gt;catch { ... }&lt;/code&gt;，避免定义未使用的变量。&lt;/li&gt;
&lt;li&gt;指针事件 (Pointer Events) 的普及使得开发者可以用一套逻辑替代旧有的 &lt;code&gt;click&lt;/code&gt; (点击) 和 &lt;code&gt;touch&lt;/code&gt; (触摸) 事件的混合逻辑。&lt;/li&gt;
&lt;li&gt;弃用旧的性能黑科技，如使用 &lt;code&gt;~~&lt;/code&gt; 或 &lt;code&gt;| 0&lt;/code&gt; 取整，现代引擎下 &lt;code&gt;Math.floor()&lt;/code&gt; 的可读性更高且性能不再是瓶颈。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;资源优化与现代格式&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AVIF 图像格式已获得全面支持，相比 JPEG 可轻松实现 50% 以上的体积缩减。&lt;/li&gt;
&lt;li&gt;提供了使用命令行工具 &lt;code&gt;avifenc&lt;/code&gt; 批量转换图片的实用脚本示例。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;然后是两篇锚点定位，都是自动连线：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://css-tip.com/connected-circles-2/&#34; title=&#34;Connecting Circles With Anchor Positioning II&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Connecting Circles With Anchor Positioning II&lt;/a&gt;：CSS Tips 锚点定位系列文章，通过改进之前的实现，展示了如何使用 CSS 锚点定位技术动态连接两个圆圈，并在连接箭头的形状中计算并显示它们之间的距离。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.zhangxinxu.com/wordpress/2026/01/css-anchor-position-connect/&#34; title=&#34;纯 CSS 实现两个元素之间折线自动相连&#34; rel=&#34;noopener ugc nofollow&#34;&gt;纯 CSS 实现两个元素之间折线自动相连&lt;/a&gt;：本文详细介绍了如何利用 CSS 锚点定位实现两个元素之间纯 CSS 自动连接的折线效果，并探讨了当前方案的实现原理及局限性。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;-codepen-&#34;&gt;趣站与 Codepen 精选&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://css-tricks.com/playing-with-codepen-slidevars/&#34; title=&#34;Playing With CodePen slideVars&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Playing With CodePen slideVars&lt;/a&gt;：介绍 CodePen 官方推出的 slideVars 工具，它可以自动检测 CSS 变量并生成交互式控制面板，现在在 codepen 里写交互式 Demo 更方便了。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/geoffgraham/pen/myEOqJg&#34; title=&#34;A Link of https://codepen.io/geoffgraham/pen/myEOqJg&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/geoffgraham/pen/myEOqJg&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/01/86fef9a9ebcbbd142278ebb09cb030f2.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;refs&#34;&gt;Refs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://javascriptweekly.com/issues/768&#34; title=&#34;JavaScript Weekly #768&#34; rel=&#34;noopener ugc nofollow&#34;&gt;JavaScript Weekly #768&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://react.statuscode.com/issues/458&#34; title=&#34;React Status #458&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React Status #458&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      
    </content>
    
  </entry>
  
  <entry>
    <title><![CDATA[FE Bits Vol.22 | CSS @scope 全面可用，ViteLand 12 月回顾]]></title>
    <link rel="alternate" type="text/html" href="https://news.cosine.ren/p/vol-22" />
    <id>https://news.cosine.ren/p/vol-22#15249</id>
    <author>
      <name>cosine</name>
    </author>
    <published>2026-01-11T11:19:00Z</published>
    <updated>2026-01-11T11:19:00Z</updated>
    
    <content type="html">
      &lt;blockquote&gt;
&lt;p&gt;本期网址 &lt;a href=&#34;https://blog.cosine.ren/post/weekly-22&#34; title=&#34;A Link of https://blog.cosine.ren/post/weekly-22&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://blog.cosine.ren/post/weekly-22&lt;/a&gt; &lt;br /&gt;
本周刊更新时间期望是在每周天。 &lt;br /&gt;
推荐订阅本周刊的 &lt;a href=&#34;https://blog.cosine.ren/rss.xml&#34; title=&#34;RSS&#34; rel=&#34;noopener ugc nofollow&#34;&gt;RSS&lt;/a&gt;。&lt;br /&gt;
公众号 前端周周谈 FE Bits，点击阅读原文链接可查看原文。&lt;br /&gt;
QQ 讨论小群 598022684 / &lt;a href=&#34;https://discord.gg/XzvrvNMcSe&#34; title=&#34;Discord 群&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Discord 群&lt;/a&gt; &lt;br /&gt;
本周刊文章内容同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;，欢迎关注。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;今天是 2026 年 1 月 11 日，星期天。&lt;/p&gt;
&lt;p&gt;年终总结在写了（还在写？）&lt;/p&gt;
&lt;p&gt;建了个 discord 群，虽然不怎么上 discord（）&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://discord.gg/XzvrvNMcSe&#34; title=&#34;A Link of https://discord.gg/XzvrvNMcSe&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://discord.gg/XzvrvNMcSe&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;因为后知后觉的意识到 Discord 群作为公开群好像比较合适比较方便（嗯）&lt;/p&gt;
&lt;p&gt;总之想找我聊天或者问问题的都可以加，后续应该会作为各种项目里边 link 的公开群。&lt;/p&gt;
&lt;p&gt;然后是博客主题更新，新增了 Koharu CLI 交互式命令行工具，提供博客内容备份/还原、主题更新、内容生成、备份管理等功能。配置文件也统一更改为 config/site.yaml 了。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/cosZone/astro-koharu/releases/tag/v2.0.0&#34; title=&#34;A Link of https://github.com/cosZone/astro-koharu/releases/tag/v2.0.0&#34; rel=&#34;noopener&#34;&gt;https://github.com/cosZone/astro-koharu/releases/tag/v2.0.0&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/01/388028f78817bf496d1c8223ef4b26b4.gif&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;然后觉得还挺有意思的，之后准备写一篇博客简单讲讲（实现交互式 Git 主题更新 CLI 的完整方案）&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/01/2867558b13c393a4e16b4f9c6ca186a2.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;上架了 astro 主题商店，发了一篇 v2ex 帖子。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://astro.build/themes/details/koharu&#34; title=&#34;A Link of https://astro.build/themes/details/koharu&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://astro.build/themes/details/koharu&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://v2ex.com/t/1184086&#34; title=&#34;A Link of https://v2ex.com/t/1184086&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://v2ex.com/t/1184086&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;并且 Moe Copy AI 插件上架火狐商店了（没想到不怎么需要适配）&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://addons.mozilla.org/zh-CN/firefox/addon/moe-copy-ai/&#34; title=&#34;A Link of https://addons.mozilla.org/zh-CN/firefox/addon/moe-copy-ai/&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://addons.mozilla.org/zh-CN/firefox/addon/moe-copy-ai/&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;社区动态&lt;/h2&gt;
&lt;h3 id=&#34;css-scope-&#34;&gt;CSS &lt;code&gt;@scope&lt;/code&gt; 规则已广泛可用&lt;/h3&gt;
&lt;p&gt;CSS &lt;code&gt;@scope&lt;/code&gt; 已获得所有主流浏览器支持，该规则允许您选择特定 DOM 子树中的元素，精确定位元素，而无需编写难以覆盖的过于具体的选择器。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MDN：&lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/At-rules/@scope&#34; title=&#34;@scope - CSS | MDN&#34; rel=&#34;noopener ugc nofollow&#34;&gt;@scope - CSS | MDN&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;文章：&lt;a href=&#34;https://frontendmasters.com/blog/how-to-scope-css-now-that-its-baseline/&#34; title=&#34;How to @scope CSS Now That It’s Baseline&#34; rel=&#34;noopener ugc nofollow&#34;&gt;How to @scope CSS Now That It’s Baseline&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;用法形如&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;@scope (.article-body) to (figure) {
  img {
    border: 5px solid black;
    background-color: goldenrod;
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;viteland-12-&#34;&gt;ViteLand 12 月回顾&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://voidzero.dev/posts/whats-new-dec-2025&#34; title=&#34;What’s New in ViteLand: December 2025 Recap&#34; rel=&#34;noopener ugc nofollow&#34;&gt;What’s New in ViteLand: December 2025 Recap&lt;/a&gt;：ViteLand 生态在 2025 年 12 月迎来了一系列重要更新，涵盖了 Vite、Vitest、Rolldown、Oxc 等项目。&lt;/p&gt;
&lt;p&gt;Oxlint 和 Oxfmt 如今已能取代传统工具，而且还在不断改进。可以查看 &lt;a href=&#34;https://github.com/oxc-project/oxc/issues/17411&#34; title=&#34;2026 年路线图&#34; rel=&#34;noopener&#34;&gt;2026 年路线图&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;期待能在项目里广泛使用的那天！&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Oxc 的性能突破&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Oxlint 和 Oxfmt 在代码校验（linting）和格式化（formatting）方面提供比 ESLint 和 Prettier 更快的速度（分别快 50-100 倍和 30 倍）。&lt;/li&gt;
&lt;li&gt;Oxlint 已推出 1.0 版本，并新增了类型感知校验（type-aware linting）和兼容 ESLint 的 JS 插件。&lt;/li&gt;
&lt;li&gt;Oxfmt 新增了对嵌入式语言和实验性导入排序的支持。&lt;/li&gt;
&lt;li&gt;Bun、Vue、Preact、date-fns、Inquirer.js、Shopify、Miro、Airbnb 等多个项目已迁移至 Oxc。&lt;/li&gt;
&lt;li&gt;Oxc 团队计划在 2026 年推出对动态配置（dynamic configs）的支持。&lt;/li&gt;
&lt;li&gt;Oxc 在性能优化方面持续投入，实现了语义分析性能的提升。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Vite 项目更新&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;发布了多个 Vite 8 beta 版本，修复了 bug 并提升了稳定性。&lt;/li&gt;
&lt;li&gt;Vite 8 beta 提供了第二版原生插件（native plugins），改进了动态导入（dynamic import）和导入 glob（import glob）插件的对齐。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Vitest 项目更新&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;新增实验性的 OpenTelemetry 支持，用于分析测试性能瓶颈。&lt;/li&gt;
&lt;li&gt;Vitest UI、CLI 和 VS Code 扩展支持分析和分解导入，识别减慢测试速度的依赖。&lt;/li&gt;
&lt;li&gt;支持通过 &lt;code&gt;experimental.fsCache&lt;/code&gt; 缓存转换后的文件，加速后续测试运行。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Rolldown 项目更新&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;支持通过手动指定 &lt;code&gt;tsconfig&lt;/code&gt; 来使用 TypeScript 项目引用（TypeScript project references）。&lt;/li&gt;
&lt;li&gt;优化了默认的代码块（chunking）算法，减少了生成的代码块数量。&lt;/li&gt;
&lt;li&gt;提供了 &lt;code&gt;postBanner&lt;/code&gt; 和 &lt;code&gt;postFooter&lt;/code&gt; 选项，用于在打包后的代码前后追加内容。&lt;/li&gt;
&lt;li&gt;插件的 &lt;code&gt;resolveId&lt;/code&gt; 钩子支持通过 &lt;code&gt;importerId&lt;/code&gt; 进行过滤，提高性能。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;社区动态与合作&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Framer 发布了关于使用 Rolldown 改进性能的案例研究。&lt;/li&gt;
&lt;li&gt;TypeScript.fm 和 Syntax.fm 播客讨论了 ViteLand 项目的更新和发展预测。&lt;/li&gt;
&lt;li&gt;Ninja Squad 撰写了关于使用 Vitest 浏览器模式测试 Angular 的文章。&lt;/li&gt;
&lt;li&gt;社区涌现出多个基于 Oxc 和 Rolldown 的新工具和迁移案例，如：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;oxlint-plugin-complexity&lt;/code&gt;：用于校验代码复杂度的 Oxlint 插件。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Roll(down)phobia&lt;/code&gt;：基于 Rolldown 的包大小分析工具。&lt;/li&gt;
&lt;li&gt;RSC Explorer：使用 Vite 8 和 Rolldown 构建的 RSC（React Server Components）工具。&lt;/li&gt;
&lt;li&gt;Facetpack：使用 Oxc 替换 Babel 的 React Native 工具。&lt;/li&gt;
&lt;li&gt;MonkeyType：迁移到 Oxlint 以获得更快的类型感知校验速度。&lt;/li&gt;
&lt;li&gt;create-better-t-stack：从 Biome 迁移到 Oxlint 和 Oxfmt。&lt;/li&gt;
&lt;li&gt;Ultracite：提供基于 Oxc 的预设配置。&lt;/li&gt;
&lt;li&gt;rollipop：完全基于 Rolldown 的 React Native 构建工具。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;文章与社区动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://emilkowal.ski/ui/building-a-toast-component&#34; title=&#34;Building a toast component&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Building a toast component&lt;/a&gt;：Emil 分享了制作  &lt;a href=&#34;https://sonner.emilkowal.ski/&#34; title=&#34;Sonner&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Sonner&lt;/a&gt;  时候的设计思路与技术实现，太细致了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.developerway.com/posts/bundle-size-investigation&#34; title=&#34;包大小调查：一步一步缩小 JavaScript 的指南&#34; rel=&#34;noopener ugc nofollow&#34;&gt;包大小调查：一步一步缩小 JavaScript 的指南&lt;/a&gt;：相当实用的好文，教你怎么减小打包体积，分析 JavaScript 打包大小、优化导入方式、解决重复库和处理传递依赖。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://allthingssmitty.com/2025/12/01/react-has-changed-your-hooks-should-too/&#34; title=&#34;React 已发生变化，您的 hook 也应如此&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React 已发生变化，您的 hook 也应如此&lt;/a&gt;：当前主流项目仍以传统方式使用 React Hooks（如滥用 useEffect），忽视了 React 在并发模式与异步数据处理上的演变。作者从设计理念出发，提出现代 Hook 的核心精神是“架构化的状态与逻辑管理”，强调使用 &lt;code&gt;useSyncExternalStore&lt;/code&gt;、&lt;code&gt;useDeferredValue&lt;/code&gt;、&lt;code&gt;useEffectEvent&lt;/code&gt; 等新 API 优化性能和可测试性，鼓励开发者更多关注派生状态（derived state）而非副作用（side effects）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://acusti.ca/blog/2025/12/09/how-ai-coding-agents-hid-a-timebomb-in-our-app/&#34; title=&#34;AI 编码代理如何在我们的应用中隐藏定时炸弹&#34; rel=&#34;noopener ugc nofollow&#34;&gt;AI 编码代理如何在我们的应用中隐藏定时炸弹&lt;/a&gt;: AI Agent 写代码的时候无意中在应用程序中引入了一个隐藏的、导致浏览器崩溃的无限 React 组件树，而 React 19 的 &lt;code&gt;&amp;lt;Activity&amp;gt;&lt;/code&gt; 组件则巧妙地掩盖了这个问题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://joyeecheung.github.io/blog/2025/12/30/require-esm-in-node-js-implementers-tales/&#34; title=&#34;require(esm) in Node.js: implementer&amp;#39;s tales&#34; rel=&#34;noopener ugc nofollow&#34;&gt;require(esm) in Node.js: implementer&#39;s tales&lt;/a&gt;：Joyee Cheung 是 Node.js 的核心贡献者之一，长期以来一直致力于 Node.js 对 &lt;code&gt;require(esm)&lt;/code&gt; 的支持（即使用 require 加载 ES 模块）。在这篇系列文章中，她分两部分详细阐述了 &lt;code&gt;require(esm)&lt;/code&gt; 实现历程及其具体细节。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendmasters.com/blog/beyond-the-mouse-animating-with-mobile-accelerometers/&#34; title=&#34;超越鼠标：使用移动加速计制作动画&#34; rel=&#34;noopener ugc nofollow&#34;&gt;超越鼠标：使用移动加速计制作动画&lt;/a&gt;：探讨了如何利用移动设备的加速计和运动传感器为网页动画注入动态交互，从而在移动设备上实现与桌面端鼠标交互相媲美的沉浸式用户体验。&lt;br /&gt;
（这个我两年前有做过类似的需求，也叫陀螺仪，iOS 必须请求陀螺仪权限才能用，除了这个缺点，整体上其实用起来挺舒服的）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendmasters.com/blog/a-first-look-at-the-web-install-api/&#34; title=&#34;A first look at the Web Install API&#34; rel=&#34;noopener ugc nofollow&#34;&gt;A first look at the Web Install API&lt;/a&gt;：探讨了新兴的 Web Install API，该 API 已在 Chromium 浏览器中进入 Origin Trial 阶段，并在 Microsoft Edge beta 版中展现出最完整的功能。此 API 的目标是允许网站通过简单的按钮点击直接安装 PWA (Progressive Web Apps)。相关链接: &lt;a href=&#34;https://blogs.windows.com/msedgedev/2025/11/24/the-web-install-api-is-ready-for-testing/&#34; title=&#34;The Web Install API is ready for testing&#34; rel=&#34;noopener ugc nofollow&#34;&gt;The Web Install API is ready for testing&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendmasters.com/blog/important-and-css-custom-properties/&#34; title=&#34;Important and CSS Custom Properties&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Important and CSS Custom Properties&lt;/a&gt;：澄清了 CSS 自定义属性 (&lt;code&gt;CSS Custom Properties&lt;/code&gt;) 中 &lt;code&gt;!important&lt;/code&gt; 的作用机制，指出 &lt;code&gt;!important&lt;/code&gt; 修饰的是声明本身而非其值，从而避免常见误解。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://tympanus.net/codrops/2026/01/04/efecto-building-real-time-ascii-and-dithering-effects-with-webgl-shaders/&#34; title=&#34;用 WebGL 着色器构建实时 ASCII 和抖动效果&#34; rel=&#34;noopener ugc nofollow&#34;&gt;用 WebGL 着色器构建实时 ASCII 和抖动效果&lt;/a&gt;：很厉害的 ASCII 艺术生成网站 &lt;a href=&#34;https://efecto.app/&#34; title=&#34;A Link of https://efecto.app/&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://efecto.app/&lt;/a&gt; 之前发过，这篇是作者的详细技术解析。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://tympanus.net/codrops/2026/01/07/infinite-canvas-building-a-seamless-pan-anywhere-image-space/&#34; title=&#34;无限画布：建立一个无缝的，平铺任何地方的图像空间&#34; rel=&#34;noopener ugc nofollow&#34;&gt;无限画布：建立一个无缝的，平铺任何地方的图像空间&lt;/a&gt;：很详细的教程，详细介绍了如何使用 React Three Fiber 构建一个无限可平移的图像画布，通过区块 (chunk) 渲染和性能优先的技术，创建一个流畅且可无尽探索的图像空间。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/01/b42a0836b926029e589b98995214216f.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.logrocket.com/beyond-rxjs-guide-tanstack-pacer/&#34; title=&#34;超越 RxJS: TanStack Pacer 指南&#34; rel=&#34;noopener ugc nofollow&#34;&gt;超越 RxJS: TanStack Pacer 指南&lt;/a&gt;：讲了怎么使用 TanStack Pacer 来管理前端应用中的异步事件时序，以优化性能并避免 RxJS 的复杂性。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.logrocket.com/native-alternatives-vscode/&#34; title=&#34;VSCode 的 6 种快速的（原生）替代方案&#34; rel=&#34;noopener ugc nofollow&#34;&gt;VSCode 的 6 种快速的（原生）替代方案&lt;/a&gt;：本文探讨了广受欢迎的 VSCode 因其基于 Electron 的架构所带来的性能局限性，并介绍了六款用 C++、Rust 等原生语言开发的快速、高效的替代编辑器。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.geedea.pro/essays/clean-home/&#34; title=&#34;程序员和整洁的 Home&#34; rel=&#34;noopener ugc nofollow&#34;&gt;程序员和整洁的 Home&lt;/a&gt;：如何通过遵循 XDG Base Directory Specification (XDG BDS) 来整理混乱的 Home 目录，从而更好地管理配置文件、数据和缓存文件。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://howtotestfrontend.com/resources/vitest-browser-mode-guide-and-setup-info&#34; title=&#34;Vitest Browser Mode - The Future of Frontend Testing&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Vitest Browser Mode - The Future of Frontend Testing&lt;/a&gt;： 介绍了 Vitest Browser Mode，可以在真实浏览器环境中进行前端组件测试。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-2&#34;&gt;新特性&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://css-tricks.com/whats-important-2/&#34; title=&#34;重要信息 #2：条件视图转换、CSS/SVG 文本特效、最佳 CSS Bluesky 等&#34; rel=&#34;noopener ugc nofollow&#34;&gt;重要信息 #2：条件视图转换、CSS/SVG 文本特效、最佳 CSS Bluesky 等&lt;/a&gt;：回顾了 2025 年末 CSS 领域的一些重要进展、新特性、社区讨论以及行业动态，并展望了 2026 年的趋势。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://piccalil.li/blog/date-is-out-and-temporal-is-in/?ref=articles-rss-feed&#34; title=&#34;Date is out, Temporal is in&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Date is out, Temporal is in&lt;/a&gt;：一篇 Temporal 的介绍。JavaScript &lt;code&gt;Temporal&lt;/code&gt; 是 &lt;code&gt;Date&lt;/code&gt; 的完美替代方案，已进入 TC39 标准化过程的第三阶段 (Stage 3)，在 Chrome 和 Firefox 等主流浏览器的最新版本中落地实现。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://nerdy.dev/4-css-features-every-front-end-developer-should-know-in-2026?utm_source=rss&#34; title=&#34;2026 年每个前端开发者都应该知道的 4 个 CSS 特性&#34; rel=&#34;noopener ugc nofollow&#34;&gt;2026 年每个前端开发者都应该知道的 4 个 CSS 特性&lt;/a&gt;：介绍了前端开发者在 2026 年应该掌握的四个重要 CSS 新特性，包括 &lt;code&gt;sibling-index()&lt;/code&gt;、&lt;code&gt;@container scroll-state()&lt;/code&gt;、&lt;code&gt;text-box&lt;/code&gt; 和 &lt;code&gt;typed attr()&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-3&#34;&gt;工具&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;做友链功能的时候发现的，还挺好用的：&lt;a href=&#34;https://github.com/dicebear/dicebear&#34; title=&#34;DiceBear&#34; rel=&#34;noopener&#34;&gt;DiceBear&lt;/a&gt; 是一个功能强大的头像库，旨在帮助设计师和开发者快速为项目创建多样化的头像。它提供了从抽象形状到精心设计的人物角色等多种头像风格。用户不仅可以生成随机头像，还可以通过设定 seed 实现确定性头像生成，或利用丰富的定制选项创建个性化头像。DiceBear 通过 JavaScript 库、HTTPS API、命令行工具 (CLI)、Figma 插件和在线 Playground 等多种方式提供。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://ditherimage.online/&#34; title=&#34;Dither Image Online&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Dither Image Online&lt;/a&gt;：一个免费、快速、实时的在线抖动（dithered）图像生成器，或者说像素艺术风格，效果太酷了！&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/01/5bff5c48402d8f31baff6664b658431f.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你知道吗？可以通过在 GitHub 个人资料页面 URL 后添加 &lt;code&gt;.png&lt;/code&gt; 来获取你的 GitHub 个人资料图片，例如 &lt;code&gt;github․com/USERNAMEHERE.png&lt;/code&gt; - 还可以附加 &lt;code&gt;.keys&lt;/code&gt; 来获取公钥，附加 &lt;code&gt;.atom&lt;/code&gt; 来获取公开时间线活动的动态。&lt;a href=&#34;https://bsky.app/profile/cassidoo.co/post/3mbs2sqipuc25&#34; title=&#34;Refernce&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Refernce&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;-codepen-&#34;&gt;趣站与 Codepen 精选&lt;/h2&gt;
&lt;h3 id=&#34;gachago-marblerace&#34;&gt;GACHAGO! MarbleRace&lt;/h3&gt;
&lt;p&gt;非常可爱的网站！看了看首页还有很多有趣的东西&lt;/p&gt;
&lt;p&gt;是一个基于物理模拟的弹珠台式抽奖工具，灵感来源于游戏内的抽奖玩法，通过模拟物理碰撞（例如红色柱子增加弹力）来决定结果，使得抽奖过程更具趣味性和不可预测性。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/01/ea73017f59b01b1c427a860da51c21eb.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.gachago.net/MarbleRace&#34; title=&#34;A Link of https://www.gachago.net/MarbleRace&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://www.gachago.net/MarbleRace&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://x.com/Mant0uStudio/status/2009279695276089512&#34; title=&#34;A Link of https://x.com/Mant0uStudio/status/2009279695276089512&#34; rel=&#34;noopener&#34;&gt;https://x.com/Mant0uStudio/status/2009279695276089512&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;作者是 &lt;a href=&#34;https://x.com/Mant0uStudio&#34; title=&#34;@Mant0uStudio&#34; rel=&#34;noopener&#34;&gt;@Mant0uStudio&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;mr-pandas-psychologically-safe-portfolio&#34;&gt;Mr. Panda&#39;s Psychologically Safe Portfolio&lt;/h3&gt;
&lt;p&gt;很有创意的一个滚动驱动的 portfolio 页面：&lt;a href=&#34;https://www.mr-pandas-psychologically-safe-portfolio.com/&#34; title=&#34;Mr. Panda&amp;#39;s Psychologically Safe Portfolio&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Mr. Panda&#39;s Psychologically Safe Portfolio&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;开源在：&lt;a href=&#34;https://github.com/andrewwoan/mr-pandas-psychologically-safe-portfolio&#34; title=&#34;GitHub - andrewwoan/mr-pandas-psychologically-safe-portfolio&#34; rel=&#34;noopener&#34;&gt;GitHub - andrewwoan/mr-pandas-psychologically-safe-portfolio&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;技术解析文章：&lt;a href=&#34;https://tympanus.net/codrops/2025/12/30/the-increasing-importance-of-psychological-safety-and-self-awareness-for-creative-work/?_thumbnail_id=107253&#34; title=&#34;The Increasing Importance of Psychological Safety and Self-Awareness for Creative Work&#34; rel=&#34;noopener ugc nofollow&#34;&gt;The Increasing Importance of Psychological Safety and Self-Awareness for Creative Work&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/01/2f73902c267d3f94972cbf124ed7af7b.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;heading-4&#34;&gt;像素化图片掉落特效&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://tympanus.net/codrops/2026/01/05/how-to-create-a-pixel-to-voxel-video-drop-effect-with-three-js-and-rapier/&#34; title=&#34;How to Create a Pixel-to-Voxel Video Drop Effect with Three.js and Rapier&#34; rel=&#34;noopener ugc nofollow&#34;&gt;How to Create a Pixel-to-Voxel Video Drop Effect with Three.js and Rapier&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这个教程详细介绍了如何利用 Three.js、着色器和 Rapier 物理引擎，将 2D 视频流转化为动态的 3D 体素 (voxel) 下落效果。文章从核心概念——像素和重力——出发，逐步讲解了如何构建一个由 &lt;code&gt;InstancedMesh&lt;/code&gt; 和刚体 (rigid bodies) 组成的平面，通过着色器实现平铺像素到 3D 体素的涟漪 (ripple) 变形效果，并最终通过 JavaScript 模拟涟漪进程来激活物理引擎，使体素在逼真的物理作用下散射和恢复。作者还分享了实现过程中的技术细节、优化考量以及未来扩展的可能性。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/01/9945061fadee6845fa2eaf24796b5756.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;bongo-cat-codes-2---jamming&#34;&gt;Bongo Cat Codes #2 - Jamming&lt;/h3&gt;
&lt;p&gt;好萌，被萌到了&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/carolineartz/pen/qBOEzQa&#34; title=&#34;A Link of https://codepen.io/carolineartz/pen/qBOEzQa&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/carolineartz/pen/qBOEzQa&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/01/e0f7bfdff20d71ab1a258f9346972134.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;heading-5&#34;&gt;果冻压扁按钮&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;你需要预留一点时间来压扁这个东西。无论是垂直拖动光标，还是单击 &amp;quot;跟随鼠标 &amp;quot;复选框，都可以将这个由 Voicu Apostol 制作的内含果冻的按钮的压扁效果与鼠标移动联系起来。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/cerpow/pen/LEZYxqM&#34; title=&#34;A Link of https://codepen.io/cerpow/pen/LEZYxqM&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/cerpow/pen/LEZYxqM&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;好可爱的按钮！看了一下原理。&lt;/p&gt;
&lt;p&gt;这不是真正的 3D 果冻，而是通过快速切换预渲染的图片序列来模拟果冻挤压效果，类似电影胶片的原理。预加载了 215 张连续的果冻形变图片，这些图片记录了果冻从静止到被挤压到回弹的完整动画过程，通过切换不同帧号的图片来做的。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/01/2e8bfc8d0c7b929a26ba63df6ddfacec.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;-css--svg-v2&#34;&gt;文本框边框动画旋转 [CSS &amp;amp; SVG] V2&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;在 Fernando Cohen 制作的这个流畅的 CSS 和 SVG 动画中，文字栅栏围绕着一张照片的边缘。看看悬停照片时会发生什么，还可以看看他的 &lt;a href=&#34;https://codepen.io/designfenix/pen/gOGVXWw&#34; title=&#34;2022 年的早期迭代作品&#34; rel=&#34;noopener ugc nofollow&#34;&gt;2022 年的早期迭代作品&lt;/a&gt;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/designfenix/pen/OPyapww&#34; title=&#34;A Link of https://codepen.io/designfenix/pen/OPyapww&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/designfenix/pen/OPyapww&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/01/626dbe1ad688022823daf884f69eeb36.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;看了一下原理，这是一个使用 SVG 和 CSS 创建的&lt;strong&gt;文字沿着有机形状边框旋转动画&lt;/strong&gt;效果。&lt;/p&gt;
&lt;p&gt;首先使用 &lt;strong&gt;SVG Blob 形状生成&lt;/strong&gt;，创造有机的 blob 形状&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-svg&#34;&gt;&amp;lt;path d=&amp;quot;M43.1,-68.5C56.2,-58.6,67.5,-47.3...&amp;quot; /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个路径数据可能来自 &lt;a href=&#34;https://www.blobmaker.app/&#34; title=&#34;Blob Generator&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Blob Generator&lt;/a&gt; 等工具&lt;/p&gt;
&lt;p&gt;然后是使用 clip-path 进行&lt;strong&gt;图片裁剪&lt;/strong&gt;，将矩形图片裁剪成 blob 形状，同时通过 &lt;code&gt;preserveAspectRatio=&amp;quot;xMidYMid slice&amp;quot;&lt;/code&gt; 确保图片填充满整个区域。&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-svg&#34;&gt;&amp;lt;clipPath id=&amp;quot;blobClip&amp;quot;&amp;gt;
  &amp;lt;path d=&amp;quot;...&amp;quot; transform=&amp;quot;translate(100 100)&amp;quot;/&amp;gt;
&amp;lt;/clipPath&amp;gt;
&amp;lt;image clip-path=&amp;quot;url(#blobClip)&amp;quot; /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后使用 &lt;code&gt;pathLength&lt;/code&gt; 进行&lt;strong&gt;文字路径动画&lt;/strong&gt;，定义文字路径&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-svg&#34;&gt;&amp;lt;path id=&amp;quot;text&amp;quot; d=&amp;quot;...&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;none&amp;quot; pathLength=&amp;quot;100&amp;quot; /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pathLength=&amp;quot;100&amp;quot;&lt;/code&gt; 标准化路径长度，便于动画计算&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fill=&amp;quot;none&amp;quot; stroke=&amp;quot;none&amp;quot;&lt;/code&gt; 路径本身不可见，仅作为文字轨迹&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;将文字沿路径排列：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-svg&#34;&gt;&amp;lt;text class=&amp;quot;text-content&amp;quot;&amp;gt;
  &amp;lt;textPath href=&amp;quot;#text&amp;quot; startOffset=&amp;quot;0%&amp;quot;&amp;gt;
    ❤ MADE WITH LOVE ❤ MADE WITH LOVE...
    &amp;lt;animate attributeName=&amp;quot;startOffset&amp;quot;
             from=&amp;quot;0%&amp;quot; to=&amp;quot;100%&amp;quot;
             dur=&amp;quot;15s&amp;quot;
             repeatCount=&amp;quot;indefinite&amp;quot; /&amp;gt;
  &amp;lt;/textPath&amp;gt;
&amp;lt;/text&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;textPath&amp;gt;&lt;/code&gt; 让文字沿着指定路径排列&lt;/li&gt;
&lt;li&gt;&lt;code&gt;startOffset&lt;/code&gt; 控制文字在路径上的起始位置&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;animate&amp;gt;&lt;/code&gt; 元素实现 SMIL 动画（SVG 原生动画）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那无缝循环是怎么做的呢？他用了两段文字，当第一段文字从 0% 移动到 100% 时，尾部会消失，第二段文字从 -100% 移动到 0%，正好填补空白。两段文字首尾相连，形成无缝循环。&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-svg&#34;&gt;&amp;lt;!-- 第一段文字：0% → 100% --&amp;gt;
&amp;lt;textPath href=&amp;quot;#text&amp;quot; startOffset=&amp;quot;0%&amp;quot;&amp;gt;
  &amp;lt;animate from=&amp;quot;0%&amp;quot; to=&amp;quot;100%&amp;quot; /&amp;gt;
&amp;lt;/textPath&amp;gt;

&amp;lt;!-- 第二段文字：-100% → 0% --&amp;gt;
&amp;lt;textPath href=&amp;quot;#text&amp;quot; startOffset=&amp;quot;100%&amp;quot;&amp;gt;
  &amp;lt;animate from=&amp;quot;-100%&amp;quot; to=&amp;quot;0%&amp;quot; /&amp;gt;
&amp;lt;/textPath&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最后是这个 &lt;strong&gt;交互式缩放效果&lt;/strong&gt;，是通过悬停时放大裁剪区域（而非整个 SVG）来做的。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2026/01/605f335c304c6e98761fc87d3199ef86.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading-6&#34;&gt;文摘&lt;/h2&gt;
&lt;h3 id=&#34;-14--21-&#34;&gt;在谷歌工作 14 年的 21 条经验&lt;/h3&gt;
&lt;p&gt;最近读的有一篇文章感觉很棒，所以单独列出来。&lt;/p&gt;
&lt;p&gt;每一条都是我赞同的！写得真好啊。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://addyosmani.com/blog/21-lessons/&#34; title=&#34;A Link of https://addyosmani.com/blog/21-lessons/&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://addyosmani.com/blog/21-lessons/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Addy Osmani 在 Google 14 年的职业生涯中，总结出 21 条经验教训。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;以用户为中心&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;真正的价值来自于深入理解并解决用户问题，而非仅仅热衷于技术本身。&lt;/li&gt;
&lt;li&gt;通过参与客服、与用户交谈、观察用户痛点来深入理解问题。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;协作与对齐&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“对”固然重要，但“一起达成对”才是真正的挑战和价值所在。&lt;/li&gt;
&lt;li&gt;避免成为“房间里最聪明的人”，应创造空间让他人参与，并对自己的观点保持适度怀疑。&lt;/li&gt;
&lt;li&gt;绝大多数“慢”的团队实际上是“错位”的团队，即方向、接口或优先级不明确。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;行动与交付&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;完美的追求会阻碍进步，先行动、再完善、再优化。&lt;/li&gt;
&lt;li&gt;“行动导向”比“分析瘫痪”更能带来清晰度，可编辑错误页面，但无法编辑空白页面。&lt;/li&gt;
&lt;li&gt;AI 可以辅助快速迭代和反馈。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;清晰度而非技巧性&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;代码需要清晰易懂，以便他人（尤其是在紧急情况下）能够理解和维护。&lt;/li&gt;
&lt;li&gt;为维护者（包括 2 AM 时的你）而非自己写代码。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;谨慎创新&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;创新是有成本的，应谨慎使用“创新代币”。&lt;/li&gt;
&lt;li&gt;只在有独特价值的地方创新，其他地方应倾向于使用成熟、可靠的技术。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;价值的可视化与倡导&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;优秀的成果需要被看见，代码不会替你说话，人会。&lt;/li&gt;
&lt;li&gt;要让你的影响对他人可见，尤其是在你不在场时。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;代码的最小化&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;最“好”的代码是你根本不需要写的代码。&lt;/li&gt;
&lt;li&gt;在构建之前，思考“如果我们不这样做，会发生什么？”。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;兼容性即产品&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在大规模系统下，即使是 bug 也会成为用户的依赖。&lt;/li&gt;
&lt;li&gt;API 设计实际上是 API 退休设计，需要考虑兼容性、时间和用户体验。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;聚焦可控因素&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在大型组织中，很多变量不可控，应专注于自己的影响范围。&lt;/li&gt;
&lt;li&gt;保持理智和高效的关键在于聚焦可控之事。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;抽象的代价&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;抽象会转移复杂性，而非消除它，当问题发生时，你仍需要理解底层。&lt;/li&gt;
&lt;li&gt;持续学习“更低级”的知识，以应对抽象失效的情况。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;教学即学习&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;写作和教学是促进理解的有效方式，能暴露自己知识的不足。&lt;/li&gt;
&lt;li&gt;尝试用简单的方式解释事物，是检验和深化理解的捷径。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“粘合剂”工作的价值与可见性&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文档、入职、跨团队协调等“粘合剂”工作至关重要，但容易被忽视。&lt;/li&gt;
&lt;li&gt;要将这些工作视为可见的影响，而非仅仅是“乐于助人”。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;避免轻易获胜&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果总是轻易获胜，可能意味着积累了“沉默的阻力”。&lt;/li&gt;
&lt;li&gt;真正的对齐需要时间、理解和妥协，而非赢得争论。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;度量与目标&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;任何被量化的指标都会被“博弈”。&lt;/li&gt;
&lt;li&gt;在衡量时，应同时关注速度和质量/风险，并注重趋势分析。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;承认未知&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;领导者承认“我不知道”能创造一个更安全的环境，鼓励团队成员也敢于提问。&lt;/li&gt;
&lt;li&gt;好奇心和承认未知才能促进团队学习。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人脉网络&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;人脉是你最重要的长期资产，远比任何一份工作都持久。&lt;/li&gt;
&lt;li&gt;以好奇和慷慨的态度建立和维护人脉。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;性能提升源于移除&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;许多性能提升来自于移除不必要的工作，而非增加技术复杂度。&lt;/li&gt;
&lt;li&gt;最快的代码是那些从不运行的代码。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;流程的本质&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;良好的流程应简化协调、降低失败成本，而非制造官僚主义。&lt;/li&gt;
&lt;li&gt;如果流程的价值无法解释，它可能只是负担。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;时间价值&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;职业生涯后期，时间成为比金钱更宝贵的资源。&lt;/li&gt;
&lt;li&gt;有意识地权衡时间和回报，避免过度追求金钱而牺牲宝贵的时间。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;复利效应&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;专业技能的提升需要刻意练习和时间积累，没有捷径。&lt;/li&gt;
&lt;li&gt;将职业生涯视为复利增长，而非购买彩票，持之以恒会带来长远回报。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;核心思想&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;保持好奇心、谦逊，并始终记住工作关乎人（用户和团队成员）。&lt;/li&gt;
&lt;li&gt;工程师的职业生涯足够长，可以从错误中学习，并分享经验。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;refs&#34;&gt;Refs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://codepen.io/spark/490&#34; title=&#34;Codepen Spark #490&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Codepen Spark #490&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ruanyifeng.com/blog/2026/01/weekly-issue-380.html&#34; title=&#34;科技爱好者周刊（第 380 期）：为什么人们拥抱&amp;#34;不对称收益&amp;#34; - 阮一峰的网络日志&#34; rel=&#34;noopener ugc nofollow&#34;&gt;科技爱好者周刊（第 380 期）：为什么人们拥抱&amp;quot;不对称收益&amp;quot; - 阮一峰的网络日志&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://webweekly.email/archive/web-weekly-179&#34; title=&#34;Web Weekly #179&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Web Weekly #179&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://nodeweekly.com/issues/606&#34; title=&#34;Node Weekly #606&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Node Weekly #606&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      
    </content>
    
  </entry>
  
  <entry>
    <title><![CDATA[FE Bits Vol.21 | 博客圣诞特效与 Moe Copy 更新，AntV 推出 Infographic]]></title>
    <link rel="alternate" type="text/html" href="https://news.cosine.ren/p/vol-21" />
    <id>https://news.cosine.ren/p/vol-21#15050</id>
    <author>
      <name>cosine</name>
    </author>
    <published>2025-12-31T13:48:47Z</published>
    <updated>2025-12-31T13:48:47Z</updated>
    
    <content type="html">
      &lt;blockquote&gt;
&lt;p&gt;本期网址 &lt;a href=&#34;https://blog.cosine.ren/post/weekly-21&#34; title=&#34;A Link of https://blog.cosine.ren/post/weekly-21&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://blog.cosine.ren/post/weekly-21&lt;/a&gt;&lt;br /&gt;
本周刊更新时间期望是在每周天。&lt;br /&gt;
推荐订阅本周刊的 &lt;a href=&#34;https://blog.cosine.ren/rss.xml&#34; title=&#34;RSS&#34; rel=&#34;noopener ugc nofollow&#34;&gt;RSS&lt;/a&gt;。&lt;br /&gt;
公众号 前端周周谈 FE Bits，点击阅读原文链接可查看原文。&lt;br /&gt;
QQ 讨论小群 598022684，讨论前端技术 &amp;amp; 生活。&lt;br /&gt;
Discord 群 &lt;a href=&#34;https://discord.gg/XzvrvNMcSe&#34; title=&#34;A Link of https://discord.gg/XzvrvNMcSe&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://discord.gg/XzvrvNMcSe&lt;/a&gt;&lt;br /&gt;
本周刊文章内容同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;，欢迎关注。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;今天是 2025 年 12 月 31 日，星期三。&lt;/p&gt;
&lt;p&gt;元旦放假，周刊停更一期，所以今天更新上周天的。&lt;/p&gt;
&lt;p&gt;年终总结在写了在写了，但是今天就不一定写的出来了。&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;个人项目&lt;/h2&gt;
&lt;p&gt;这周圣诞节，前端圈都没什么动静，不过正好我做了一堆自己项目的更新。&lt;/p&gt;
&lt;p&gt;今天一总结，发现真不少啊。&lt;/p&gt;
&lt;p&gt;发了一篇博客「&lt;a href=&#34;https://blog.cosine.ren/post/git-worktrunk-guide&#34; title=&#34;Worktrunk 完全指南：让 Git Worktree 和 Claude Code 和平共处&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Worktrunk 完全指南：让 Git Worktree 和 Claude Code 和平共处&lt;/a&gt;」因为我非常喜欢这个工具于是写了一篇博文卖安利～&lt;/p&gt;
&lt;h3 id=&#34;heading-1&#34;&gt;博客项目&lt;/h3&gt;
&lt;p&gt;首先是博客的一些更新&lt;/p&gt;
&lt;h4 id=&#34;lqip&#34;&gt;LQIP&lt;/h4&gt;
&lt;p&gt;一开始想在博客中，实现类似 &lt;a href=&#34;https://leanrada.com/notes/css-only-lqip&#34; title=&#34;Minimal CSS-only blurry image placeholders&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Minimal CSS-only blurry image placeholders&lt;/a&gt; 的 CSS-only LQIP（低质量图片占位符），使用单个 CSS 自定义属性 --lqip 编码图片的模糊预览。&lt;/p&gt;
&lt;p&gt;这篇文章的技术原理是使用 20 位整数编码图片信息（8 位 Oklab 基础色 + 12 位亮度分量），在 CSS 中通过位运算解码（&lt;code&gt;mod()&lt;/code&gt;, &lt;code&gt;round(down)&lt;/code&gt;, &lt;code&gt;pow()&lt;/code&gt; 等），使用径向渐变叠加渲染模糊效果，配合二次缓动实现平滑过渡。&lt;/p&gt;
&lt;p&gt;我选择简化一些的实现，不追求 CSS Only 了，因为打算先做博客内部的图片，文章内部的外部图片等后续优化的时候再一起做，放上最终效果在这里：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/40e44c8ac166183d5f823d7aa81fa792.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/2e91463883247a340dc99ddc1c97ae74.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;需要运行一下 &lt;code&gt;nr generate:lqips&lt;/code&gt; 就会生成一个 &lt;code&gt;lqips.json&lt;/code&gt; 的 json 文件在 assets 下，若没有这个文件则不提供占位符～&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.cosine.ren/post/astro-lqip-implementation&#34; title=&#34;A Link of https://blog.cosine.ren/post/astro-lqip-implementation&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://blog.cosine.ren/post/astro-lqip-implementation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;后续看到有人提出更好的实现，已加入 &lt;a href=&#34;https://cos.featurebase.app/p/feature-geng-hao-de-lqip&#34; title=&#34;TODO&#34; rel=&#34;noopener ugc nofollow&#34;&gt;TODO&lt;/a&gt;！&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://x.com/radishzz_/status/2002647033086464476&#34; title=&#34;A Link of https://x.com/radishzz_/status/2002647033086464476&#34; rel=&#34;noopener&#34;&gt;https://x.com/radishzz_/status/2002647033086464476&lt;/a&gt;&lt;/p&gt;
&lt;h4 id=&#34;heading-2&#34;&gt;圣诞特效&lt;/h4&gt;
&lt;p&gt;究～极～花里胡哨！！&lt;br /&gt;
圣诞节到了，想给博客加点节日氛围。最终实现了一套可开关的圣诞特效模块，包括雪花和彩灯以及圣诞配色方案～&lt;/p&gt;
&lt;p&gt;雪花效果是从 Shadertoy 上的 &lt;a href=&#34;https://www.shadertoy.com/view/ldsGDn&#34; title=&#34;Just snow&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Just snow&lt;/a&gt; 学来的！&lt;br /&gt;
彩灯是参考 &lt;a href=&#34;https://codepen.io/tobyj/pen/QjvEex&#34; title=&#34;Toby J 的 CodePen&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Toby J 的 CodePen&lt;/a&gt; 实现，优化调整了性能，调整为圣诞配色（红、绿、金）&lt;/p&gt;
&lt;p&gt;我知道肯定会有人说花里胡哨所以我加了开关，欢迎品鉴～&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.cosine.ren/post/astro-christmas-effects&#34; title=&#34;A Link of https://blog.cosine.ren/post/astro-christmas-effects&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://blog.cosine.ren/post/astro-christmas-effects&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/7a36339bd35536b9ea9621db6cd238a2.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;如果嫌弃干扰阅读了，可以点击开关关掉～&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/e3cd9efe4bf5f40215566de09d537b58.gif&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;注意看这个雪是双层的，内容容器夹在雪花中间，远景雪花在文章后面飘过，近景雪花在前面飘过，配合视差效果，感觉还挺满意的。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/cabfd68dc8313ff59d0c744ca224a6ed.gif&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;上面的雪花特效是最初的版本，现在的版本是后来又做了一些优化。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://x.com/_cosine_x/status/2004244071393714301&#34; title=&#34;A Link of https://x.com/_cosine_x/status/2004244071393714301&#34; rel=&#34;noopener&#34;&gt;https://x.com/_cosine_x/status/2004244071393714301&lt;/a&gt;&lt;/p&gt;
&lt;h4 id=&#34;heading-3&#34;&gt;使用指南和反馈&lt;/h4&gt;
&lt;p&gt;把&lt;a href=&#34;https://blog.cosine.ren/post/astro-koharu-guide&#34; title=&#34;博客的使用指南&#34; rel=&#34;noopener ugc nofollow&#34;&gt;博客的使用指南&lt;/a&gt;先简单搓出来了，然后换了一下切换昼夜模式的过渡动画，从左往右扫过去的感觉。&lt;br /&gt;
虽然说现阶段还不建议使用，但如果想 fork 出去改改还是都可以的，预计元旦假期我会重点进行重构和性能优化、然后开放一个清理后的仓库方便部署，到那个时候就可以玩耍了！&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://x.com/_cosine_x/status/2005653281541103707&#34; title=&#34;A Link of https://x.com/_cosine_x/status/2005653281541103707&#34; rel=&#34;noopener&#34;&gt;https://x.com/_cosine_x/status/2005653281541103707&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;然后发现 alma 的&lt;a href=&#34;https://feedback.alma.now/&#34; title=&#34;反馈页面&#34; rel=&#34;noopener ugc nofollow&#34;&gt;反馈页面&lt;/a&gt;看起来很棒，看了下是用的 featurebase.app&lt;br /&gt;
于是我也想试试这个，给博客主题做了一个反馈页面（有没有人用再说吧）：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://cos.featurebase.app/&#34; title=&#34;A Link of https://cos.featurebase.app/&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://cos.featurebase.app/&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;moe-copy-ai-&#34;&gt;Moe Copy AI 插件更新&lt;/h3&gt;
&lt;p&gt;Moe Copy AI 插件也大改版了，然后收到了好朋友的 PR！发布了 v0.2.0，变得越来越好用了&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/yusixian/moe-copy-ai/releases/tag/0.2.0&#34; title=&#34;A Link of https://github.com/yusixian/moe-copy-ai/releases/tag/0.2.0&#34; rel=&#34;noopener&#34;&gt;https://github.com/yusixian/moe-copy-ai/releases/tag/0.2.0&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://x.com/_cosine_x/status/2005191726290608638&#34; title=&#34;A Link of https://x.com/_cosine_x/status/2005191726290608638&#34; rel=&#34;noopener&#34;&gt;https://x.com/_cosine_x/status/2005191726290608638&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;PR 在原本的直接 fetch 的基础上，提供了「后台打开新 tab」和在「当前页面跳转」来获取&lt;br /&gt;
下一页按钮选择器改用 XPath，还新增了自动翻页功能，支持跨页批量抓取，感谢 &lt;a href=&#34;https://github.com/hyoban&#34; title=&#34;@hyoban&#34; rel=&#34;noopener&#34;&gt;@hyoban&lt;/a&gt; 贡献的这个&lt;a href=&#34;https://github.com/yusixian/moe-copy-ai/pull/15&#34; title=&#34;PR #15&#34; rel=&#34;noopener&#34;&gt;PR #15&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/22489cee45cbea49bba41cb8acf413d4.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;欢迎使用！欢迎反馈！文档在&lt;a href=&#34;https://moe.cosine.ren/docs&#34; title=&#34;这里&#34; rel=&#34;noopener ugc nofollow&#34;&gt;这里&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://chromewebstore.google.com/detail/moe-copy-ai/dfmlcfckmfgabpgbaobgapdfmjiihnck&#34; title=&#34;A Link of https://chromewebstore.google.com/detail/moe-copy-ai/dfmlcfckmfgabpgbaobgapdfmjiihnck&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://chromewebstore.google.com/detail/moe-copy-ai/dfmlcfckmfgabpgbaobgapdfmjiihnck&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/yusixian/moe-copy-ai&#34; title=&#34;A Link of https://github.com/yusixian/moe-copy-ai&#34; rel=&#34;noopener&#34;&gt;https://github.com/yusixian/moe-copy-ai&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading-4&#34;&gt;文章与社区动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/antvis/Infographic&#34; title=&#34;antvis/Infographic&#34; rel=&#34;noopener&#34;&gt;antvis/Infographic&lt;/a&gt;：蚂蚁集团 AntV 团队推出新一代声明式信息图表（Infographic）生成与渲染框架，旨在通过 AI 驱动让数据叙事更简单。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://nolanlawson.com/2025/12/22/how-i-use-ai-agents-to-write-code/&#34; title=&#34;How I use AI agents to write code&#34; rel=&#34;noopener ugc nofollow&#34;&gt;How I use AI agents to write code&lt;/a&gt;：好文，我也是这样转变的（？）或者说没有转变。有趣的是 AI 出来之后我觉得编码热情或者说想构建产品的欲望越来越强烈了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.logrocket.com/frontend-wrapped-2025/&#34; title=&#34;Frontend Wrapped 2025: The 10 storylines that defined the year - LogRocket Blog&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Frontend Wrapped 2025: The 10 storylines that defined the year - LogRocket Blog&lt;/a&gt;：2025 年前端世界发生了不少大事，这篇文章盘点了那些塑造了这一年的十大热点。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.patreon.com/posts/ever-wanted-to-147025063&#34; title=&#34;Ever wanted to have a rotating rainbow segments border&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Ever wanted to have a rotating rainbow segments border&lt;/a&gt;：介绍并对比了使用 CSS &lt;code&gt;conic-gradient()&lt;/code&gt; 与 SVG &lt;code&gt;&amp;lt;rect&amp;gt;&lt;/code&gt; 两种技术实现旋转彩虹分段边框的方法。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://joyeecheung.github.io/blog/2025/12/30/require-esm-in-node-js-implementers-tales/&#34; title=&#34;require(esm) in Node.js: implementer&amp;#39;s tales&#34; rel=&#34;noopener ugc nofollow&#34;&gt;require(esm) in Node.js: implementer&#39;s tales&lt;/a&gt;：Node.js 核心贡献者 Joyee Cheung 深入解析 &lt;code&gt;require(esm)&lt;/code&gt; 功能实现过程中遇到的关键挑战与解决方案。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;css-&#34;&gt;CSS 新特性&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.zhangxinxu.com/wordpress/2025/12/css-anchor-container-query/&#34; title=&#34;补全不足，CSS 锚点定位支持锚定容器回退检测了&#34; rel=&#34;noopener ugc nofollow&#34;&gt;补全不足，CSS 锚点定位支持锚定容器回退检测了&lt;/a&gt;：Chrome 143+ 引入 CSS 锚点定位回退检测机制，可自动检测容器布局变化并动态切换定位方向，解决传统锚点定位在空间受限时的显示异常问题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.zhangxinxu.com/wordpress/2025/12/css-style-container-range-syntax/&#34; title=&#34;今日学习 CSS style()样式查询及其 range 范围语法&#34; rel=&#34;noopener ugc nofollow&#34;&gt;今日学习 CSS style()样式查询及其 range 范围语法&lt;/a&gt;：介绍了 CSS @container 的样式查询 (Style Query) 新能力，展示从变量匹配到范围语法 (Range Syntax)、再到针对自身元素匹配的进阶使用技巧。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;text-decoration-inset&#34;&gt;text-decoration-inset&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;MDN：&lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/text-decoration-inset&#34; title=&#34;text-decoration-inset&#34; rel=&#34;noopener ugc nofollow&#34;&gt;text-decoration-inset&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;兼容性：实验性，文中仅提到 Firefox 146+ 下有效。&lt;/li&gt;
&lt;li&gt;介绍文章：&lt;a href=&#34;https://css-tricks.com/text-decoration-inset-is-like-padding-for-text-decorations/&#34; title=&#34;text-decoration-inset is Like Padding for Text Decorations&#34; rel=&#34;noopener ugc nofollow&#34;&gt;text-decoration-inset is Like Padding for Text Decorations&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/mrdanielschwarz/pen/VYaPVgr&#34; title=&#34;A Link of https://codepen.io/mrdanielschwarz/pen/VYaPVgr&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/mrdanielschwarz/pen/VYaPVgr&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;CSS 中的 &lt;code&gt;text-decoration-inset&lt;/code&gt; 允许开发者像设置内边距一样裁剪文字装饰（如下划线）的左右边缘，从而实现文字装饰与文字内容的精确对齐。该属性支持 em 等相对单位，使装饰能随字体大小缩放，并且可以配合动画和过渡效果，创造出更多原生的、引人注目的文字装饰动态效果。&lt;/p&gt;
&lt;h2 id=&#34;heading-5&#34;&gt;工具&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/alam00000/bentopdf&#34; title=&#34;BentoPDF&#34; rel=&#34;noopener&#34;&gt;BentoPDF&lt;/a&gt;: 功能强大、注重隐私的开源 PDF 工具集，可自部署，提供超过 50 种 PDF 操作工具，覆盖编辑、转换、安全、优化等多个维度。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;codepen-&#34;&gt;Codepen 精选&lt;/h2&gt;
&lt;h3 id=&#34;css-only-stacking-cards&#34;&gt;CSS-Only Stacking Cards&lt;/h3&gt;
&lt;p&gt;使用 CSS Scroll-Timeline 实现的卡片堆叠，无需 JavaScript：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/karabharat/pen/YPWXqmx&#34; title=&#34;A Link of https://codepen.io/karabharat/pen/YPWXqmx&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/karabharat/pen/YPWXqmx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://x.com/i/status/2005503369222512856&#34; title=&#34;A Link of https://x.com/i/status/2005503369222512856&#34; rel=&#34;noopener&#34;&gt;https://x.com/i/status/2005503369222512856&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/ca34d5f3371ded092938b025f2d235f4.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;easy-rainbow-segments-card-border-cases&#34;&gt;easy rainbow segments card border cases&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/thebabydino/pen/RNRPEqb&#34; title=&#34;A Link of https://codepen.io/thebabydino/pen/RNRPEqb&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/thebabydino/pen/RNRPEqb&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;文章：&lt;a href=&#34;https://www.patreon.com/posts/ever-wanted-to-147025063&#34; title=&#34;Ever wanted to have a rotating rainbow segments border&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Ever wanted to have a rotating rainbow segments border&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;实现一个由等分彩虹色段组成的旋转边框效果。作者指出当容器的宽高比远离正方形时，单纯使用 CSS 的 conic-gradient() 方法无法保持色段等分，且分隔线难以垂直于边框。因此，文章提出了更优的解决方案：使用 SVG 的 &amp;lt;rect&amp;gt; 元素来精确控制每个色段的形状和动画，从而获得更稳定、更完美的视觉效果。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/58b95038b527cd20177db153d47f73fc.gif&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;

      
    </content>
    
  </entry>
  
  <entry>
    <title><![CDATA[FE Bits Vol.20 | 博客更新与 FEDAY 见闻，Shadcn Create 发布]]></title>
    <link rel="alternate" type="text/html" href="https://news.cosine.ren/p/vol-20" />
    <id>https://news.cosine.ren/p/vol-20#14885</id>
    <author>
      <name>cosine</name>
    </author>
    <published>2025-12-21T14:40:00Z</published>
    <updated>2025-12-21T14:40:00Z</updated>
    
    <content type="html">
      &lt;blockquote&gt;
&lt;p&gt;本期网址 &lt;a href=&#34;https://blog.cosine.ren/post/weekly-20&#34; title=&#34;A Link of https://blog.cosine.ren/post/weekly-20&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://blog.cosine.ren/post/weekly-20&lt;/a&gt;&lt;br /&gt;
本周刊更新时间期望是在每周天。&lt;br /&gt;
推荐订阅本周刊的 &lt;a href=&#34;https://blog.cosine.ren/rss.xml&#34; title=&#34;RSS&#34; rel=&#34;noopener ugc nofollow&#34;&gt;RSS&lt;/a&gt;。&lt;br /&gt;
公众号 前端周周谈 FE Bits，点击阅读原文链接可查看原文。&lt;br /&gt;
QQ 讨论小群 598022684，讨论前端技术 &amp;amp; 生活，也可在群里投稿自己的文章，随意加入，比较偏向粉丝群的性质～&lt;br /&gt;
本周刊文章内容同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;，欢迎关注。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;今天是 2025 年 12 月 21 日，星期天。&lt;/p&gt;
&lt;p&gt;这周相当的充实，去参加了 FEDAY 2025，之前没参加过这种活动，很好奇，加上反正今年去了好多活动，感觉这种活动偶尔参加一下还很有意思的，而且顺便也能去长沙旅游一趟，就去了。&lt;/p&gt;
&lt;p&gt;参加完的感受是今年的主题特别特别多与 AI 相关的，可以看出 AI 对前端的助益是真的很大，我是比较 AI 乐观主义的，觉得 AI 能帮我省下来很多时间干我想干的事，并且也取代不了前端，但真的需要多进行学习，不断学习。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://cos.afilmory.art/photos/MVIMG_20251220_090431&#34; title=&#34;A Link of https://cos.afilmory.art/photos/MVIMG_20251220_090431&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://cos.afilmory.art/photos/MVIMG_20251220_090431&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://cos.afilmory.art/photos/IMG_20251219_183401&#34; title=&#34;A Link of https://cos.afilmory.art/photos/IMG_20251219_183401&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://cos.afilmory.art/photos/IMG_20251219_183401&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://cos.afilmory.art/photos/IMG_20251219_182549&#34; title=&#34;A Link of https://cos.afilmory.art/photos/IMG_20251219_182549&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://cos.afilmory.art/photos/IMG_20251219_182549&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;然后呢，这周将 &lt;a href=&#34;https://www.fumadocs.dev/docs/ui&#34; title=&#34;Fumadocs&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Fumadocs&lt;/a&gt; 里我很喜欢的移动端 header 目录搬到我的博客 &lt;a href=&#34;https://github.com/cosZone/astro-koharu&#34; title=&#34;astro-koharu&#34; rel=&#34;noopener&#34;&gt;astro-koharu&lt;/a&gt; 了，我很喜欢～&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/de3ae273e856a0b5105166b1e7d97fdf.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;然后为图片加上了 LQIP，写了 &lt;a href=&#34;https://blog.cosine.ren/post/astro-lqip-implementation&#34; title=&#34;在 Astro 博客中实现 LQIP（低质量图片占位符）&#34; rel=&#34;noopener ugc nofollow&#34;&gt;在 Astro 博客中实现 LQIP（低质量图片占位符）&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/40e44c8ac166183d5f823d7aa81fa792.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/2e91463883247a340dc99ddc1c97ae74.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;然后将性能等，也优化了一下：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;优化前&lt;/th&gt;
&lt;th&gt;优化后&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/6260b997f694ec82699bb55ba5a12c9b.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/e93f40c340a626c4ab72212a84cf6d5d.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;heading&#34;&gt;生态与社区动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://ui.shadcn.com/docs/changelog&#34; title=&#34;shadcn 发布 3.6&#34; rel=&#34;noopener ugc nofollow&#34;&gt;shadcn 发布 3.6&lt;/a&gt;：借助新的 &lt;code&gt;npx shadcn create&lt;/code&gt; CLI 或者 &lt;a href=&#34;https://ui.shadcn.com/create&#34; title=&#34;New Project&#34; rel=&#34;noopener ugc nofollow&#34;&gt;New Project&lt;/a&gt;，现在可以使用 Radix UI 或 Base UI 来创建你自己的定制 shadcn 组件库了。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/6f81247bb1f1ccd42df35c4ae94557bc.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://storybook.js.org/blog/security-advisory/&#34; title=&#34;Storybook 安全公告&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Storybook 安全公告&lt;/a&gt;：&lt;br /&gt;
又一个 &lt;a href=&#34;https://github.com/storybookjs/storybook/security/advisories/GHSA-8452-54wp-rmv6?ref=storybookblog.ghost.io&#34; title=&#34;CVE-2025-68429 7.3/10&#34; rel=&#34;noopener&#34;&gt;CVE-2025-68429 7.3/10&lt;/a&gt;， Storybook v7+ 版本构建时可能会不小心把 .env 打包进去。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/TanStack/router/pull/6055&#34; title=&#34;Vue start by birkskyum · Pull Request #6055&#34; rel=&#34;noopener&#34;&gt;Vue start by birkskyum · Pull Request #6055&lt;/a&gt;：继 React 和 Solid 之后，TanStack Start 又新增了对 Vue 的支持。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://developer.chrome.com/blog/throttle-individual-network-requests?hl=en&#34; title=&#34;Throttle individual network requests&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Throttle individual network requests&lt;/a&gt;：Chrome DevTools 144 版本可以让你单独对每个网络请求限速进行调试。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;小贴士&lt;/h2&gt;
&lt;p&gt;写了这么一段代码，想要一段可随高度变化可控制间距的虚线。&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-tsx&#34;&gt;&amp;lt;svg
  className=&amp;quot;pointer-events-none absolute bottom-0 left-px h-[calc(100%+1rem)] w-[1.5px]&amp;quot;
  viewBox=&amp;quot;0 0 2 366&amp;quot;
  preserveAspectRatio=&amp;quot;none meet&amp;quot;
  aria-hidden=&amp;quot;true&amp;quot;
&amp;gt;
  &amp;lt;path d=&amp;quot;M0.749978 365.5L0.750106 0&amp;quot; stroke=&amp;quot;white&amp;quot; strokeOpacity=&amp;quot;0.2&amp;quot; strokeWidth=&amp;quot;1.5&amp;quot; strokeDasharray=&amp;quot;5.25 5.25&amp;quot; /&amp;gt;
&amp;lt;/svg&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;发现不对！高度特别小的时候挤在一块了。&lt;/p&gt;
&lt;p&gt;咋办？使用 &lt;code&gt;vectorEffect=&amp;quot;non-scaling-stroke&amp;quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://developer.mozilla.org/zh-CN/docs/Web/SVG/Reference/Attribute/vector-effect&#34; title=&#34;A Link of https://developer.mozilla.org/zh-CN/docs/Web/SVG/Reference/Attribute/vector-effect&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://developer.mozilla.org/zh-CN/docs/Web/SVG/Reference/Attribute/vector-effect&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;non-scaling-stroke 的使用可以看这篇文章：&lt;a href=&#34;https://www.zhangxinxu.com/wordpress/2018/12/vector-effect-non-scaling-stroke/&#34; title=&#34;CSS vector-effect 与 SVG stroke 描边缩放&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS vector-effect 与 SVG stroke 描边缩放&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;MDN 的官方解释是：该值修改了笔触的方式。通常，笔触涉及在当前用户坐标系中计算形状路径的笔触轮廓，并用笔触颜料（颜色或渐变）填充轮廓。该值的最终视觉效果是笔触宽度不依赖于元素的变换（包括非均匀缩放和剪切变换）和缩放级别。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;为什么不用 &lt;a href=&#34;https://developer.mozilla.org/zh-CN/docs/Web/CSS/Reference/Properties/border-style&#34; title=&#34;A Link to developer.mozilla.org&#34; rel=&#34;noopener ugc nofollow&#34;&gt;&lt;code&gt;border-style: dashed;&lt;/code&gt;&lt;/a&gt; ？因为他没有办法定义线段的长度和大小，视不同实现而定。&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-diff&#34;&gt;             strokeOpacity=&amp;quot;0.2&amp;quot;
             strokeWidth=&amp;quot;1.5&amp;quot;
             strokeDasharray=&amp;quot;5.25 5.25&amp;quot;
+            vectorEffect=&amp;quot;non-scaling-stroke&amp;quot;
           /&amp;gt;
         &amp;lt;/svg&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;完美实现！&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;使用 &lt;code&gt;vectorEffect=&amp;quot;non-scaling-stroke&amp;quot;&lt;/code&gt; 前&lt;/th&gt;
&lt;th&gt;使用 &lt;code&gt;vectorEffect=&amp;quot;non-scaling-stroke&amp;quot;&lt;/code&gt; 后&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/9c3a0cfd4fe806d978f0d7cdea031869.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/d2caa5c99c35e45de7f4b8fed1f5944e.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;heading-2&#34;&gt;文章与视频&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://acusti.ca/blog/2025/12/16/react-compiler-silent-failures-and-how-to-fix-them/&#34; title=&#34;React Compiler 的静默失败 (以及如何修复它们)&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React Compiler 的静默失败 (以及如何修复它们)&lt;/a&gt;：作者分享了在使用 React Compiler 过程中遇到的“静默失败”问题，即编译器在无法优化组件时不会报错，而是回退到标准 React 行为，这可能导致性能下降。为了解决这个问题，作者发现并利用了一个未文档化的 ESLint 规则 &lt;code&gt;react-hooks/todo&lt;/code&gt;，通过将其设置为错误级别，可以在编译失败时中断构建过程。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tympanus.net/codrops/2025/12/17/building-responsive-scroll-triggered-curved-path-animations-with-gsap/&#34; title=&#34;使用 GSAP 构建响应式、滚动触发的曲线路径动画&#34; rel=&#34;noopener ugc nofollow&#34;&gt;使用 GSAP 构建响应式、滚动触发的曲线路径动画&lt;/a&gt;：这篇文章提供了一个好工具 &lt;a href=&#34;https://codepen.io/betawaxx/pen/JoGZQLZ&#34; title=&#34;Paths &amp;amp; Control Points&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Paths &amp;amp; Control Points&lt;/a&gt;，让开发者能够拖拽控制点实时调整曲线。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://cyandev.app/post/make-a-snowfall-with-webgpu&#34; title=&#34;用 WebGPU 来造一场雪 | Cyandev&#34; rel=&#34;noopener ugc nofollow&#34;&gt;用 WebGPU 来造一场雪 | Cyandev&lt;/a&gt;：手把手教你如何用 WebGPU 在网页上下雪，兼顾性能与效果，让你的博客在圣诞带上节日色彩～&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.logrocket.com/react-children-prop-typescript/&#34; title=&#34;How to type React children correctly in TypeScript&#34; rel=&#34;noopener ugc nofollow&#34;&gt;How to type React children correctly in TypeScript&lt;/a&gt;：还在为 React 中 &lt;code&gt;children&lt;/code&gt; prop 的 TypeScript 类型定义挠头？这篇博文介绍了如何在 React 应用中如何正确使用 TypeScript 定义 &lt;code&gt;children&lt;/code&gt; prop 的类型。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://frontendmasters.com/blog/different-page-transitions-for-different-circumstances/&#34; title=&#34;Different Page Transitions For Different Circumstances&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Different Page Transitions For Different Circumstances&lt;/a&gt;：这篇博文教你如何使用 &lt;code&gt;View Transitions&lt;/code&gt;（视图转换）为多页应用程序（MPA）创建差异化的页面切换动画。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://acusti.ca/blog/2025/12/09/how-ai-coding-agents-hid-a-timebomb-in-our-app/&#34; title=&#34;How AI Coding Agents Hid a Timebomb in Our App&#34; rel=&#34;noopener ugc nofollow&#34;&gt;How AI Coding Agents Hid a Timebomb in Our App&lt;/a&gt;：一篇关于 AI 编程助手“无意间”在应用里埋下了一颗定时炸弹的故事：
&lt;blockquote&gt;
&lt;p&gt;一个由 AI 编程助手（AI Coding Agent）删除的代码注释，导致一个关键的 &lt;code&gt;readOnly&lt;/code&gt; 属性被移除，进而引发了 React 组件的无限递归渲染。更糟的是，React 19 的 &lt;code&gt;&amp;lt;Activity&amp;gt;&lt;/code&gt; 组件将这个 Bug 隐藏了起来，使其在数分钟内都不会崩溃，极大增加了调试难度。作者通过痛苦的调试过程，最终发现罪魁祸首是 AI 删除了注释，以及自己没有为关键的结构性约束编写测试。文章强调了在 AI 辅助开发背景下，测试而非注释，才是确保代码质量和安全的关键。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;css-&#34;&gt;CSS 新特性&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.smashingmagazine.com/2025/12/state-logic-native-power-css-wrapped-2025/&#34; title=&#34;State, Logic, And Native Power: CSS Wrapped 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;State, Logic, And Native Power: CSS Wrapped 2025&lt;/a&gt;：深入解读了 Chrome 团队发布的“&lt;a href=&#34;https://chrome.dev/css-wrapped-2025/&#34; title=&#34;CSS Wrapped 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS Wrapped 2025&lt;/a&gt;”年度总结报告，强调 CSS 正从单纯的样式语言向构建动态、强大应用的原生工具集转变，开启了一个激动人心的前端新时代。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://css-tricks.com/creating-scroll-based-animations-in-full-view/&#34; title=&#34;Creating Scroll-Based Animations in Full view()&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Creating Scroll-Based Animations in Full view()&lt;/a&gt;：介绍了 CSS &lt;code&gt;animation-timeline&lt;/code&gt; 属性中的 &lt;code&gt;view()&lt;/code&gt; 函数，它允许开发者创建基于元素在滚动容器（scrollport）中可见性（visibility）的动画。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://css-tricks.com/what-else-could-container-queries-query/&#34; title=&#34;What Else Could Container Queries... Query?&#34; rel=&#34;noopener ugc nofollow&#34;&gt;What Else Could Container Queries... Query?&lt;/a&gt;：容器查询（container queries）可不止查询尺寸那么简单，未来还有更多可能性等待探索！&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=55uUK-iJeNM&#34; title=&#34;🎥 2025 年所有浏览器支持的 11 个 CSS 新特性&#34; rel=&#34;noopener ugc nofollow&#34;&gt;🎥 2025 年所有浏览器支持的 11 个 CSS 新特性&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://css-tricks.com/responsive-list-of-avatars-using-modern-css-part-2/&#34; title=&#34;Responsive List of Avatars Using Modern CSS (Part 2)&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Responsive List of Avatars Using Modern CSS (Part 2)&lt;/a&gt;：是 “使用现代 CSS 创建响应式头像列表”系列的第二部分，主要探讨如何利用 &lt;code&gt;offset&lt;/code&gt; 或 &lt;code&gt;transform&lt;/code&gt; 属性，结合 &lt;code&gt;sibling-index()&lt;/code&gt; 和 &lt;code&gt;sibling-count()&lt;/code&gt; 等 CSS 函数，实现一个响应式圆形头像列表的布局。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-3&#34;&gt;工具&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://stuffandnonsense.co.uk/toon-text/tool.html&#34; title=&#34;Andy Clarke’s Toon Text&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Andy Clarke’s Toon Text&lt;/a&gt;：Andy Clarke 开发的一款卡通标题文本生成器，它可以生成具有卡通风格的文本，并提供 CSS 代码。&lt;br /&gt;
&lt;a href=&#34;https://css-tricks.com/toon-title-text-generator/&#34; title=&#34;介绍文章&#34; rel=&#34;noopener ugc nofollow&#34;&gt;介绍文章&lt;/a&gt;还重点介绍了其核心功能 Splinter.js，它通过包裹每个字符的 &amp;lt;span&amp;gt; 标签，并加入 ARIA 属性，在实现逐字样式控制的同时，增强了可访问性，解决了传统工具可能导致辅助技术识别障碍的问题。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/ab482b28222826e47f5618422ab4f5fe.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Raycast 插件：https://www.raycast.com/j3lte/css-tricks&lt;br /&gt;
介绍文章：&lt;a href=&#34;https://css-tricks.com/search-css-tricks-raycast-extension/&#34; title=&#34;Search CSS-Tricks Raycast Extension&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Search CSS-Tricks Raycast Extension&lt;/a&gt;
&lt;blockquote&gt;
&lt;p&gt;一个 Raycast 扩展，可以直接从本地计算机搜索 CSS-Tricks 文章。该扩展使用 WordPress REST API 获取实时搜索结果，提供了一种快速查找和复制文章 URL 的方法。单击结果会显示摘要并在浏览器中打开文章。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;codepen-&#34;&gt;Codepen 精选&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://x.com/Andersonmancini/status/2000589287515959496&#34; title=&#34;A Link of https://x.com/Andersonmancini/status/2000589287515959496&#34; rel=&#34;noopener&#34;&gt;https://x.com/Andersonmancini/status/2000589287515959496&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Anderson Mancini(@Andersonmancini): 🎵 太阳出来了 ☀️&lt;br /&gt;
我终于完成了将我的“终极镜头光晕”移植到 #threejs WebGPU 的工作。性能简直令人难以置信，因为现在 threejs 已经将遮挡查询直接集成到了渲染管线中。如果你需要知道某个物体是否被遮挡，只需直接向 threejs 查询即可。文档中有示例。&lt;br /&gt;
这样一来，我就不再需要光线投射器来检测遮挡了，这就是性能大幅提升的原因。&lt;br /&gt;
如果您想查看结果：https:// planpoint-webgpu.vercel.app&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://x.com/Andersonmancini/status/2000589289868931516&#34; title=&#34;A Link of https://x.com/Andersonmancini/status/2000589289868931516&#34; rel=&#34;noopener&#34;&gt;https://x.com/Andersonmancini/status/2000589289868931516&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/2ed4fd7cb089993bee9270bdcb98a548.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;cyberpopover-2025&#34;&gt;CyberPopover 2025&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/jh3y/pen/yyNWGNG&#34; title=&#34;A Link of https://codepen.io/jh3y/pen/yyNWGNG&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/jh3y/pen/yyNWGNG&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在 Jhey Tompkins 这款 Codepen 中，点击闪烁按钮即可打开带有电子音效的 CyberPopover。作为 Jhey 的经典之作，这款 Pen 是可配置的！打开右上角的面板，即可进行设置。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/403b16f637bc713974df139ee1b554d0.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;-javascript--lightbox&#34;&gt;无需 JavaScript 的 Lightbox（灯箱）&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/daviddarnes/pen/bNbagPy&#34; title=&#34;A Link of https://codepen.io/daviddarnes/pen/bNbagPy&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/daviddarnes/pen/bNbagPy&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;David Darnes 分享了一个快速演示，展示如何使用 Popover API 构建一个简单的照片灯箱，无需 JS，只需不到 30 行 CSS 代码。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/18647a9d75aaa24ece6ba9ca36b8b458.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;refs&#34;&gt;Refs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://react.statuscode.com/issues/456&#34; title=&#34;React Status #456&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React Status #456&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://frontendfoc.us/issues/722&#34; title=&#34;Frontend Focus Issue 722: December 17, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Frontend Focus Issue 722: December 17, 2025&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://thisweekinreact.com/newsletter/263&#34; title=&#34;This Week In React #263&#34; rel=&#34;noopener ugc nofollow&#34;&gt;This Week In React #263&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      
    </content>
    
  </entry>
  
  <entry>
    <title><![CDATA[FE Bits Vol.19｜站点新功能与 React 披露两个新的 RSC 漏洞]]></title>
    <link rel="alternate" type="text/html" href="https://news.cosine.ren/p/vol-19" />
    <id>https://news.cosine.ren/p/vol-19#14446</id>
    <author>
      <name>cosine</name>
    </author>
    <published>2025-12-14T12:50:00Z</published>
    <updated>2025-12-14T12:50:00Z</updated>
    
    <content type="html">
      &lt;blockquote&gt;
&lt;p&gt;本期网址 &lt;a href=&#34;https://blog.cosine.ren/post/weekly-19&#34; title=&#34;A Link of https://blog.cosine.ren/post/weekly-19&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://blog.cosine.ren/post/weekly-19&lt;/a&gt;&lt;br /&gt;
本周刊更新时间期望是在每周天。&lt;br /&gt;
推荐订阅本周刊的 &lt;a href=&#34;https://blog.cosine.ren/rss.xml&#34; title=&#34;RSS&#34; rel=&#34;noopener ugc nofollow&#34;&gt;RSS&lt;/a&gt;。&lt;br /&gt;
公众号 前端周周谈 FE Bits，点击阅读原文链接可查看原文。&lt;br /&gt;
QQ 讨论小群 598022684，讨论前端技术 &amp;amp; 生活，也可在群里投稿自己的文章，随意加入，比较偏向粉丝群的性质～&lt;br /&gt;
本周刊文章内容同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;，欢迎关注。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;今天是 2025 年 12 月 14 日，星期天。&lt;/p&gt;
&lt;p&gt;本周给我的博客站点增加了无需后端的相关推荐和 AI 摘要功能。&lt;/p&gt;
&lt;p&gt;相关推荐是参考了这篇超赞的实现：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://alexop.dev/posts/semantic-related-posts-astro-transformersjs/&#34; title=&#34;A Link of https://alexop.dev/posts/semantic-related-posts-astro-transformersjs/&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://alexop.dev/posts/semantic-related-posts-astro-transformersjs/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;用 transformers.js 在本地算“语义相似度”，自动挑出最相关的 5 篇文章。&lt;/p&gt;
&lt;p&gt;然后自己又实现了一下，支持排除特定文章（比如周刊），还可以选择是否把“正文”也纳入计算：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只用标题+描述：速度飞快，适合文章多的情况，但不是很准。&lt;/li&gt;
&lt;li&gt;加上正文：效果明显更好，就是生成会慢亿些。&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;# 使用 Snowflake/snowflake-arctic-embed-m-v2.0 计算 168 篇文章（标题+描述）的时间
Done! Generated similarities for 168 posts in 4.1s

# 使用 Snowflake/snowflake-arctic-embed-m-v2.0 计算 168 篇文章（标题+描述+正文）的时间
Done! Generated similarities for 168 posts in 219.3s
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这速度差别有亿点大，但是我个人很喜欢带正文的结果，效果显然会更好。&lt;/p&gt;
&lt;p&gt;那有没有更折中的方案呢？于是我决定再加一个跑 AI 摘要的功能，使用 &lt;a href=&#34;https://xsai.js.org/docs/packages/generate/text&#34; title=&#34;xsai&#34; rel=&#34;noopener ugc nofollow&#34;&gt;xsai&lt;/a&gt; sdk，本地 LM Studio 使用 &lt;code&gt;qwen/qwen3-4b-2507&lt;/code&gt; 模型跑一遍，跑起来结果又快又好！新增文章通过缓存，只需要跑新增文章的摘要就行，而且效果跟使用正文差不多！&lt;/p&gt;
&lt;p&gt;文章详情里还有个可折叠的摘要卡片，点开有打字机小动画（尊重无动画偏好）&lt;/p&gt;
&lt;p&gt;都在构建时本地跑完 git 提交，线上零开销。后面会继续调模型和缓存等，优化一下，写的比较匆忙。&lt;/p&gt;
&lt;p&gt;欢迎来试试新功能！精力有限还没有写部署文档等，但是有一篇尚未发布的让 AI 写的 &lt;a href=&#34;https://github.com/cosZone/astro-koharu/blob/main/src/content/blog/tools/astro-koharu-%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97.md&#34; title=&#34;astro-koharu-使用指南&#34; rel=&#34;noopener&#34;&gt;astro-koharu-使用指南&lt;/a&gt;，可能会有错漏，但是大体配置上差不多，求 star～&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/cosZone/astro-koharu&#34; title=&#34;A Link of https://github.com/cosZone/astro-koharu&#34; rel=&#34;noopener&#34;&gt;https://github.com/cosZone/astro-koharu&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/3262e3664b7525f5d3770b8d0fde419a.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/b168de06cc98f80e26754f03e92c0f13.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/76252d37c923a25bdb5d68c8d2ef5dc7.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;很开心，忙里偷闲写这些东西，超级开心。&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;生态与社区动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.epicreact.dev/react-routers-take-on-react-server-components-4bj7q&#34; title=&#34;React Router&amp;#39;s take on React Server Components&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React Router&#39;s take on React Server Components&lt;/a&gt;：React Router 正在添加 RSC 支持。&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;你知道 React Router 正在添加对 React Server Components (RSC) 的支持吗？虽然目前还处于实验阶段，但距离正式发布已经非常接近了，而且我认为 React Router 对 RSC 的实现非常出色。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;threejs.org/changelog/?r182&#34; title=&#34;Three.js r182 released 📈&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Three.js r182 released 📈&lt;/a&gt;：进行了全面升级，核心改动包括迁移到 ESLint 9、引入 flat config、对 WebGLRenderer 与 WebGPURenderer 进行多项性能与功能优化（如更高效的阴影映射、EAC 纹理支持、VSM 代码重构），节点系统得到显著改进（支持更多类型、优化缓存、引入 float packing/unpacking），同时大量 bug 修复、文档清理与示例更新，整体提升了代码质量、可维护性与渲染效率。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://x.com/threejs/status/1998816106728010050&#34; title=&#34;A Link of https://x.com/threejs/status/1998816106728010050&#34; rel=&#34;noopener&#34;&gt;https://x.com/threejs/status/1998816106728010050&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;一些官方示例：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://x.com/threejs/status/1998816109223723084&#34; title=&#34;A Link of https://x.com/threejs/status/1998816109223723084&#34; rel=&#34;noopener&#34;&gt;https://x.com/threejs/status/1998816109223723084&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://deno.com/blog/v2.6&#34; title=&#34;Deno 2.6: dx is the new npx&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Deno 2.6: dx is the new npx&lt;/a&gt;：Deno 2.6 通过引入 &lt;code&gt;dx&lt;/code&gt;（类似 &lt;code&gt;npx&lt;/code&gt;）简化了包二进制的执行，新增细粒度权限控制与权限代理，使用 Go 编写的 &lt;code&gt;tsgo&lt;/code&gt; 加速 TypeScript 类型检查，并支持 Wasm 源码导入。安全方面加入 &lt;code&gt;deno audit&lt;/code&gt; 与 &lt;code&gt;--socket&lt;/code&gt;，改进依赖管理与脚本审批。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://code.visualstudio.com/blogs/2025/12/03/introducing-vs-code-insiders-podcast&#34; title=&#34;微软推出 VS Code Insiders 播客&#34; rel=&#34;noopener ugc nofollow&#34;&gt;微软推出 VS Code Insiders 播客&lt;/a&gt;：由 Visual Studio Code 官方团队打造，深度访谈开发者、产品经理以及社区贡献者，解密新特性、实验工具和 AI 驱动的工作流。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;想知道世界上最受欢迎的代码编辑器背后究竟发生了什么吗？ VS Code Insiders Podcast 将为你揭开神秘面纱，带你深入了解塑造 Visual Studio Code 未来的功能、决策和人员。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://developer.chrome.com/blog/chrome-devtools-mcp-debug-your-browser-session?hl=en&#34; title=&#34;使用 Chrome DevTools MCP，让您的编码代理调试浏览器会话&#34; rel=&#34;noopener ugc nofollow&#34;&gt;使用 Chrome DevTools MCP，让您的编码代理调试浏览器会话&lt;/a&gt;：Chrome DevTools MCP 终于能让你的 AI 编程助手直接介入浏览器调试了，更丝滑了！好耶！&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;如需将 chrome-devtools-mcp 服务器连接到正在运行的 Chrome 实例，请使用 --autoConnect 命令行实参来设置 MCP 服务器&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;注意： 在 Chrome M144 达到稳定版之前，您必须指定 --channel=canary&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;quot;mcpServers&amp;quot;: {
    &amp;quot;chrome-devtools&amp;quot;: {
      &amp;quot;command&amp;quot;: &amp;quot;npx&amp;quot;,
      &amp;quot;args&amp;quot;: [&amp;quot;chrome-devtools-mcp@latest&amp;quot;, &amp;quot;--autoConnect&amp;quot;, &amp;quot;--channel=canary&amp;quot;]
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://web.dev/blog/upvote-features?hl=en&#34; title=&#34;为您希望看到的网络功能投票&#34; rel=&#34;noopener ugc nofollow&#34;&gt;为您希望看到的网络功能投票&lt;/a&gt;：现在，你可以通过点赞 (upvote) 来影响你最想看到的 Web 特性啦！&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;WebDX 社区组织推出了一项新功能，允许开发者直接通过“点赞 (upvote)”来表达对特定 Web 特性的需求，以帮助浏览器厂商优先考虑开发。虽然点赞多不代表直接采纳，但开发者的需求将成为浏览器厂商决策的重要参考因素。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;你是否曾经在 Can I Use 网站上看到某个你非常想使用的功能被标记为红色，然后恨不得直接戳戳浏览器厂商，说：“嘿，我需要这个功能！”？现在你可以了。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;WebDX 社区小组推出了一种新方式，让您可以直接表达哪些 Web 功能对您来说最重要。现在，您可以为希望在主流浏览器之间实现互操作的功能投票 。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;从今天起，您可以在 web.dev、 caniuse.com 和 webstatus.dev 上找到这些已集成的点赞功能。其他平台，例如 MDN，也在研究类似的集成方案。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;react--react2shell--rsc-&#34;&gt;React 在研究 React2Shell 过程中披露了两个新的 RSC 漏洞&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://react.dev/blog/2025/12/11/denial-of-service-and-source-code-exposure-in-react-server-components&#34; title=&#34;React 在研究 React2Shell 过程中披露了两个新的 RSC 漏洞&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React 在研究 React2Shell 过程中披露了两个新的 RSC 漏洞&lt;/a&gt;：CVE‑2025‑55184 与 CVE‑2025‑67779（高危 - 拒绝服务）以及 CVE‑2025‑55183（中危 - 源代码泄露）。这些缺陷可被恶意 HTTP 请求触发，导致服务器无限循环或泄露服务器函数内部代码。React 已在 19.0.3、19.1.4、19.2.3 版本中修复，受影响的框架与打包器（如 Next、React‑Router、Vite 等）亦需同步升级。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://react.dev/blog/2025/12/11/denial-of-service-and-source-code-exposure-in-react-server-components&#34; title=&#34;A Link of https://react.dev/blog/2025/12/11/denial-of-service-and-source-code-exposure-in-react-server-components&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://react.dev/blog/2025/12/11/denial-of-service-and-source-code-exposure-in-react-server-components&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;拒绝服务（高危）： CVE-2025-55184 与 CVE-2025-67779 (CVSS 7.5) 可被恶意 HTTP 请求触发，导致服务器无限循环&lt;/li&gt;
&lt;li&gt;源代码暴露（中等）： CVE-2025-55183 (CVSS 5.3) 可能会泄露服务器函数内部代码，源代码中硬编码的 secret 可能会被暴露，运行时 secret 如 process.env.SECRET 不受影响。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;官方解释称：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;重大漏洞披露后，往往会发现后续漏洞。当一个重大漏洞被披露后，研究人员会仔细检查相邻的代码路径，寻找变种的利用技术，以测试初始缓解措施是否可以被绕过。&lt;br /&gt;
这种模式在整个行业中普遍存在。例如，在 Log4Shell 之后，随着社区对原始修复程序的审查，又报告了其他 CVE。额外的披露可能会令人沮丧，但这通常是健康应对机制的标志。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;只有源代码中的 secret 才能被泄露。&lt;br /&gt;
源代码中硬编码的 secret 可能会被暴露，但运行时 secret 如 process.env.SECRET 不受影响。&lt;br /&gt;
暴露代码的范围仅限于服务器函数内部的代码，这可能包括其他功能，具体取决于捆绑器提供的内联支持程度。&lt;br /&gt;
一定要核对生产包。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://nextjs.org/blog/security-update-2025-12-11&#34; title=&#34;A Link of https://nextjs.org/blog/security-update-2025-12-11&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://nextjs.org/blog/security-update-2025-12-11&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Next 用户可以使用 &lt;code&gt;npx fix-react2shell-next&lt;/code&gt; 进行升级。&lt;/p&gt;
&lt;p&gt;我看到这个消息的第一想法嘛，如下：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://x.com/_cosine_x/status/1999356620732793076&#34; title=&#34;A Link of https://x.com/_cosine_x/status/1999356620732793076&#34; rel=&#34;noopener&#34;&gt;https://x.com/_cosine_x/status/1999356620732793076&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://x.com/_cosine_x/status/1999359307482300511&#34; title=&#34;A Link of https://x.com/_cosine_x/status/1999359307482300511&#34; rel=&#34;noopener&#34;&gt;https://x.com/_cosine_x/status/1999359307482300511&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;shopify-editions-winter-2026&#34;&gt;Shopify Editions Winter 2026&lt;/h2&gt;
&lt;p&gt;这是每半年固定发布，用于介绍 Shopify 又做了哪些功能更新的网站！&lt;/p&gt;
&lt;p&gt;性能和兼容性可能相对一般，但做了完整的移动端适配，纯炫技网页，浓缩了超多细节和彩蛋和 CSS 新特性。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.shopify.com/editions/winter2026&#34; title=&#34;A Link of https://www.shopify.com/editions/winter2026&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://www.shopify.com/editions/winter2026&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://x.com/avstorm/status/1998853569936851292&#34; title=&#34;彩蛋 1&#34; rel=&#34;noopener&#34;&gt;彩蛋 1&lt;/a&gt;：点击钥匙，会弹出一个新的无边框窗口来进行解锁。应该用到了&lt;a href=&#34;https://www.zhangxinxu.com/wordpress/2025/01/js-broadcast-channel-api/&#34; title=&#34;跨窗口通信&#34; rel=&#34;noopener ugc nofollow&#34;&gt;跨窗口通信&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;以前有一个类似的&lt;a href=&#34;https://juejin.cn/post/7306033185934622731&#34; title=&#34;尝试用 three.js 实现了这个跨窗口的粒子动画&#34; rel=&#34;noopener ugc nofollow&#34;&gt;尝试用 three.js 实现了这个跨窗口的粒子动画&lt;/a&gt;，我猜应该是和这个一个原理，&lt;a href=&#34;https://github.com/bgstaal/multipleWindow3dScene&#34; title=&#34;GitHub 仓库&#34; rel=&#34;noopener&#34;&gt;GitHub 仓库&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/01162d230f16b2910b7710d15155a67e.gif&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;彩蛋 2：解锁后这个窗口还能跟着原来的页面滚动。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/7546226e60f8ce11962da28800eadb8c.gif&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://x.com/wentingyong/status/1999230215097082200&#34; title=&#34;彩蛋 3&#34; rel=&#34;noopener&#34;&gt;彩蛋 3&lt;/a&gt;：点击帽子&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/9c230863dbf24faf4135dc3df2744c67.gif&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;技术解析：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://x.com/jh3yy/status/1999131244345405664&#34; title=&#34;jhey ʕ•ᴥ•ʔ(@jh3yy)&#34; rel=&#34;noopener&#34;&gt;jhey ʕ•ᴥ•ʔ(@jh3yy)&lt;/a&gt;：今年的版本页面真是太棒了——有太多精彩的细节了 👨‍🍳&lt;br /&gt;
很荣幸能参与其中，团队表现出色 👏&lt;br /&gt;
除了令人惊叹的 WebGL 技术之外，还巧妙地运用了 CSS 容器查询、计数器、过渡/动画和 SVG！&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;文章与视频&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.pkh.me/p/48-a-series-of-tricks-and-techniques-i-learned-doing-tiny-glsl-demos.html&#34; title=&#34;我在制作微型 GLSL 演示时学到的一系列技巧和技巧&#34; rel=&#34;noopener ugc nofollow&#34;&gt;我在制作微型 GLSL 演示时学到的一系列技巧和技巧&lt;/a&gt;：作者分享了自己在制作 512 字符限制的微型 GLSL（OpenGL Shading Language）图形演示过程中，积累的一系列图形渲染技巧与心得。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://devblogs.microsoft.com/typescript/progress-on-typescript-7-december-2025/&#34; title=&#34;TypeScript 7 的进展 - 2025 年 12 月&#34; rel=&#34;noopener ugc nofollow&#34;&gt;TypeScript 7 的进展 - 2025 年 12 月&lt;/a&gt;：TypeScript 团队把编译器和语言服务迁移到原生代码（代号 Project Corsa），现在已提供可在 VS Code 中使用的预览版。编辑器功能完整、性能提升显著，编译器在类型检查和增量构建上几乎全兼容 5.9，并实现十倍左右的速度提升。文章还列出了与 5.9 的差异、即将废弃的选项以及后续路线图，强调 6.0 将是基于旧代码的最后一次发布，之后所有重点转向 7.0。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;今年早些时候， &lt;a href=&#34;https://devblogs.microsoft.com/typescript/typescript-native-port/&#34; title=&#34;TypeScript 团队宣布，我们一直在将编译器和语言服务移植到原生代码&#34; rel=&#34;noopener ugc nofollow&#34;&gt;TypeScript 团队宣布，我们一直在将编译器和语言服务移植到原生代码&lt;/a&gt;， 以充分利用原生代码的优势，从而获得更佳的原始性能、内存使用效率和并行处理能力。这项工作（代号“Project Corsa”，即将更名为“TypeScript 7.0”）是一项意义重大的工程，但我们在过去的几个月中取得了长足的进步。我们很高兴向大家介绍目前的进展，并展示全新的 TypeScript 工具集如今的“真实”面貌。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://slicker.me/react/useEffectEvent.html&#34; title=&#34;Do&amp;#39;s and Don&amp;#39;ts of useEffectEvent in React&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Do&#39;s and Don&#39;ts of useEffectEvent in React&lt;/a&gt;：了解 React 新增的 useEffectEvent hook，用来在 Effect 中获取最新的 props / state 而不触发 Effect 重新执行。本文列举了它的使用场景、何时可使用与何时不可使用与迁移建议。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.appsignal.com/2025/11/26/manage-a-nextjs-monorepo-with-prisma.html&#34; title=&#34;Manage a Next.js Monorepo with Prisma&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Manage a Next.js Monorepo with Prisma&lt;/a&gt;：本文展示了使用 Next.js 与 Prisma 在 Postgres 上实现完整的 CRUD Pizza 订餐系统一套流程。（是比较完整的一篇实践，小项目这么折腾全栈是可以的，但是大项目的话，写后端需要慎重～）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.debugbear.com/blog/2025-in-web-performance?utm_campaign=web-weekly&#34; title=&#34;2025 回顾：Web 性能有什么新变化？&#34; rel=&#34;noopener ugc nofollow&#34;&gt;2025 回顾：Web 性能有什么新变化？&lt;/a&gt;：轻松回顾 2025 年前端性能的变化与新工具，包括 Core Web Vitals 指标的跨浏览器推进、新的 Lighthouse 与 DevTools 检测能力、浏览器 API（如 Scheduler API、软导航观测）的演进、CrUX 和实时监测数据的细化、对图像格式（如 JPEG XL）的最新态势，结尾展望了 2026 年可能的方向（更多 AI 集成与更完整的软导航指标支持）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://nerdy.dev/adjust-perceived-typepace-weight-for-dark-mode-without-layout-shift&#34; title=&#34;Using CSS to fix the irradiation illusion&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Using CSS to fix the irradiation illusion&lt;/a&gt;：在深色背景下，白色文本会显得比同等粗细的黑色文本更粗。这种现象叫做“辐照错觉”（irradiation illusion），本文介绍了如何利用可变字体（variable fonts）的 &lt;code&gt;GRAD&lt;/code&gt; 轴（grade axis）在不改变字形大小的情况下调整文本的可感知粗细。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://cekrem.github.io/posts/tailwind-targeting-child-elements/&#34; title=&#34;Tailwind CSS: Targeting Child Elements (when you have to)&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Tailwind CSS: Targeting Child Elements (when you have to)&lt;/a&gt;：本文详细介绍了如何利用 Tailwind 的任意变体 (Arbitrary Variants) 和 &lt;code&gt;[&amp;amp;_selector]&lt;/code&gt; 语法来实现子元素样式控制。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;css-&#34;&gt;CSS 新特性&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://chrome.dev/css-wrapped-2025/&#34; title=&#34;CSS Wrapped 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS Wrapped 2025&lt;/a&gt;：一份来自 Chrome 团队的年度 CSS 功能大盘点，看看明年你的 CSS 能玩出什么新花样！&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://chrome.dev/css-wrapped-2025/&#34; title=&#34;A Link of https://chrome.dev/css-wrapped-2025/&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://chrome.dev/css-wrapped-2025/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/bbd61522ff87b2d9429540600e3fe669.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://css-tricks.com/fit-width-text-in-1-line-of-css/&#34; title=&#34;Fit width text in 1 line of CSS&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Fit width text in 1 line of CSS&lt;/a&gt;：CSS 新属性 &lt;code&gt;text-grow&lt;/code&gt; 用一行 CSS 就能让文本自动填满容器宽度，告别过去的复杂方案，不过它还在实验阶段。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://css-tricks.com/scrollytelling-on-steroids-with-scroll-state-queries/&#34; title=&#34;Scrollytelling on Steroids With Scroll-State Queries&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Scrollytelling on Steroids With Scroll-State Queries&lt;/a&gt;：使用 CSS 的新滚动状态查询，让网页故事像游戏一样交互。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.bram.us/2025/12/12/css-scroll-triggered-animations-are-coming-to-chrome/&#34; title=&#34;CSS Scroll-Triggered Animations are coming to Chrome!&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS Scroll-Triggered Animations are coming to Chrome!&lt;/a&gt;：Chrome 浏览器将在明年初推出纯 CSS 实现的滚动触发动画。这是一种基于时间，并在特定滚动偏移量（scroll offset）触发的动画，与现有的滚动驱动动画不同。这项功能有望在 Chrome 145 版本正式发布，它将替代部分 &lt;code&gt;IntersectionObserver&lt;/code&gt; 的用途。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.zhangxinxu.com/wordpress/2025/12/css-progress-function/&#34; title=&#34;CSS progress()函数简介&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS progress()函数简介&lt;/a&gt;：本文介绍了 CSS 新增的 &lt;code&gt;progress()&lt;/code&gt; 函数，它能将指定范围内的值映射为 0 到 1 之间的进度值，兼容性一般，还处于 Chrome 的实验阶段。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-2&#34;&gt;小贴士&lt;/h2&gt;
&lt;p&gt;使用 &lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/scrollbar-gutter&#34; title=&#34;scrollbar-gutter&#34; rel=&#34;noopener ugc nofollow&#34;&gt;scrollbar-gutter&lt;/a&gt; CSS 属性可以为滚动条预留空间，防止滚动条出现或消失时布局发生偏移。&lt;/p&gt;
&lt;p&gt;可以将 body （或任何其他容器元素）上的 &lt;code&gt;scrollbar-gutter&lt;/code&gt; 属性设置为 &lt;code&gt;stable&lt;/code&gt;，以确保始终为滚动条预留空间，防止布局偏移。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;scrollbar-gutter&lt;/code&gt; 属性是 CSS 中一个相对较新的属性，自 2024 年 12 月起，主流现代浏览器都支持它。因此，可以放心地使用它来渐进式的提升网页的用户体验。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.amitmerchant.com/one-css-trick-to-eliminate-scrollbar-layout-shifts/&#34; title=&#34;A Link of https://www.amitmerchant.com/one-css-trick-to-eliminate-scrollbar-layout-shifts/&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://www.amitmerchant.com/one-css-trick-to-eliminate-scrollbar-layout-shifts/&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading-3&#34;&gt;工具&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://vercel.com/changelog/new-npm-package-for-automatic-recovery-of-broken-streaming-markdown&#34; title=&#34;remend&#34; rel=&#34;noopener ugc nofollow&#34;&gt;remend&lt;/a&gt;：Vercel 推出新 npm 包 remend，自动修复流式 Markdown 的破碎语法，尤其适用于处理 LLM 等应用。提取自 Vercel 的 Streamdown 库，该库是 react-markdown 的即插即用替代方案，专为 AI 驱动的流媒体应用而设计。（PS：与 Streamdown 同类型的 &lt;a href=&#34;https://x.com/simon_he1995&#34; title=&#34;Simon He&#34; rel=&#34;noopener&#34;&gt;Simon He&lt;/a&gt; 的 &lt;a href=&#34;https://github.com/Simon-He95/markstream-vue&#34; title=&#34;markstream-vue&#34; rel=&#34;noopener&#34;&gt;markstream-vue&lt;/a&gt; 也很好！）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;react-grab&#34;&gt;React Grab&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://www.react-grab.com/blog/agent&#34; title=&#34;React Grab&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React Grab&lt;/a&gt;：React Scan 的作者 Aiden 出的新工具，它允许你从应用组件中“抓取”上下文，并将其提供给你选择的智能体，以便进行详细的修改。&lt;/p&gt;
&lt;p&gt;CLI 设置只需要在你的项目根目录下运行这个命令，将检测您的框架并自动添加必要的脚本。&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;npx grab@latest init
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Claude Code 的设置的话，服务器通过 4567 端口运行，并与 Claude Agent SDK 接口连接。将以下脚本添加到 package.json 中：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;quot;scripts&amp;quot;: {
    &amp;quot;dev&amp;quot;: &amp;quot;npx @react-grab/claude-code@latest &amp;amp;&amp;amp; next dev&amp;quot;
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;codepen-&#34;&gt;Codepen 精选&lt;/h2&gt;
&lt;h3 id=&#34;-glsl&#34;&gt;霓虹正弦波效果 GLSL&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Fabio E Zola 的这段 GLSL 动画中，闪烁的正弦波脉动着。您可以暂停动画、截屏，或从顶部的控制面板切换像素比例。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/2673b2f8e847cd11f37714e71c559315.gif&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;heading-4&#34;&gt;花瓣&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/rileyjshaw/pen/xbVQQGr&#34; title=&#34;A Link of https://codepen.io/rileyjshaw/pen/xbVQQGr&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/rileyjshaw/pen/xbVQQGr&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Riley Shaw 分享了一朵梦幻般的 CSS 和 JS 花朵，花瓣如万花筒般旋转 🪷&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/8a0df10caab02e9888e12a0a91dff989.gif&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;-3d--css&#34;&gt;伪 3D 旋转球切换（仅 CSS）&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/alvaromontoro/pen/xbVydXq&#34; title=&#34;A Link of https://codepen.io/alvaromontoro/pen/xbVydXq&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/alvaromontoro/pen/xbVydXq&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Alvaro Montoro 巧妙地通过移动点阵图案来模拟旋转动画，这个“切换组件是用 HTML 和 CSS 创建的。没有图片，也没有 JS。”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/4b69790f736320068d65f4ac076b6c2a.gif&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;refs&#34;&gt;Refs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://codepen.io/spark/486&#34; title=&#34;Codepen Spark #486&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Codepen Spark #486&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://react.statuscode.com/issues/454&#34; title=&#34;React Status Issue 454: December 3, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React Status Issue 454: December 3, 2025&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://nodeweekly.com/issues/604&#34; title=&#34;Node Weekly Issue 604: December 9, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Node Weekly Issue 604: December 9, 2025&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://react.statuscode.com/issues/455&#34; title=&#34;React Status Issue 455: December 10, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React Status Issue 455: December 10, 2025&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.stefanjudis.com/blog/web-weekly-178/&#34; title=&#34;Web Weekly #178&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Web Weekly #178&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      
    </content>
    
  </entry>
  
  <entry>
    <title><![CDATA[FE Bits Vol.18｜RSC 爆 CVE-10.0；Bun 被 Anthropic 收购]]></title>
    <link rel="alternate" type="text/html" href="https://news.cosine.ren/p/vol-18" />
    <id>https://news.cosine.ren/p/vol-18#14301</id>
    <author>
      <name>cosine</name>
    </author>
    <published>2025-12-07T11:35:58Z</published>
    <updated>2025-12-07T11:35:58Z</updated>
    
    <content type="html">
      &lt;blockquote&gt;
&lt;p&gt;本期网址 &lt;a href=&#34;https://blog.cosine.ren/post/weekly-18&#34; title=&#34;A Link of https://blog.cosine.ren/post/weekly-18&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://blog.cosine.ren/post/weekly-18&lt;/a&gt;。&lt;br /&gt;
本周刊更新时间期望是在每周天。&lt;br /&gt;
推荐订阅本周刊的 &lt;a href=&#34;https://blog.cosine.ren/rss.xml&#34; title=&#34;RSS&#34; rel=&#34;noopener ugc nofollow&#34;&gt;RSS&lt;/a&gt;。&lt;br /&gt;
公众号 前端周周谈 FE Bits，点击阅读原文链接可查看原文。&lt;br /&gt;
QQ 讨论小群 598022684，讨论前端技术 &amp;amp; 生活，也可在群里投稿自己的文章，随意加入，比较偏向粉丝群的性质～&lt;br /&gt;
本周刊文章内容同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;，欢迎关注。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;今天是 2025 年 12 月 7 日，星期天。&lt;/p&gt;
&lt;p&gt;又给&lt;a href=&#34;https://blog.cosine.ren/&#34; title=&#34;网站&#34; rel=&#34;noopener ugc nofollow&#34;&gt;网站&lt;/a&gt;优化了一下，加上了内嵌链接的预览、Codepen 链接的预览等，越来越有模有样了。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/cosZone/astro-koharu/pull/30/files&#34; title=&#34;A Link of https://github.com/cosZone/astro-koharu/pull/30/files&#34; rel=&#34;noopener&#34;&gt;https://github.com/cosZone/astro-koharu/pull/30/files&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/40674199bfaa120fdf2f8c4deee8fbc6.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/dcac6ff03068c2891d93cd7b1e075d98.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;然后给 RSS 页面的样式也美化了一下:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/cosZone/astro-koharu/commit/61c0a9c7da78ae241918eea2595aba48289734ed&#34; title=&#34;A Link of https://github.com/cosZone/astro-koharu/commit/61c0a9c7da78ae241918eea2595aba48289734ed&#34; rel=&#34;noopener&#34;&gt;https://github.com/cosZone/astro-koharu/commit/61c0a9c7da78ae241918eea2595aba48289734ed&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/ba65021c54b1dc4739f4cddcb87d9cdd.gif&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;然后，距离我 8 月份写下《我的 Claude Code 使用小记》已经过去了近 4 个月，在这段时间的高强度使用后，是时候分享一些新的体验了。&lt;br /&gt;
很短，并且比较支离破碎流水账，主要是为了记录。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.cosine.ren/post/my-claude-code-record-2&#34; title=&#34;A Link of https://blog.cosine.ren/post/my-claude-code-record-2&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://blog.cosine.ren/post/my-claude-code-record-2&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;生态与社区动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://developer.chrome.com/blog/new-in-chrome-143?hl=en&#34; title=&#34;New in Chrome 143&#34; rel=&#34;noopener ugc nofollow&#34;&gt;New in Chrome 143&lt;/a&gt;：Chrome 143 发布，带来了 CSS 锚定后备容器查询&lt;br /&gt;
（Anchored fallback container queries），改进了背景图像定位语法（可在 &lt;code&gt;background-position-x/y&lt;/code&gt; 长属性中直接使用相对边位置语法 &lt;code&gt;left 30px&lt;/code&gt;、&lt;code&gt;bottom 20px&lt;/code&gt;），并新增对 &lt;code&gt;font-language-override&lt;/code&gt; 的支持。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://bun.com/blog/bun-joins-anthropic&#34; title=&#34;Bun is joining Anthropic&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Bun is joining Anthropic&lt;/a&gt;：Bun 宣布被 Anthropic 收购，将作为 Claude Code、Claude Agent SDK 等产品的核心基础设施。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://tanstack.com/ai/latest&#34; title=&#34;TanStack AI&#34; rel=&#34;noopener ugc nofollow&#34;&gt;TanStack AI&lt;/a&gt;：TanStack 家发布了 TanStack AI Beta 版，一个完全开源的 AI SDK，提供统一接口，支持多家 AI 提供商（如 OpenAI、Anthropic、Gemini、Ollama 等）。它不是云服务，而是一个纯粹的开源生态系统，为开发者提供类型安全（type-safe）、可扩展、可观测的工具，可自由选择后端和框架集成，不受厂商限制。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.appinn.com/minio-maintenance-mode/&#34; title=&#34;MinIO 宣布进入维护模式，不再接受任何新功能、改进或拉取请求｜附替代品列表&#34; rel=&#34;noopener ugc nofollow&#34;&gt;MinIO 宣布进入维护模式，不再接受任何新功能、改进或拉取请求｜附替代品列表&lt;/a&gt;：MinIO 宣布进入维护模式，不再增加新功能、接受拉取请求或积极处理 Issues，只保留必要的安全维护。作为广受开发者喜爱的开源 S3 兼容对象存储方案，MinIO 的“停更”意味着自建 S3 生态需重新选择，文章列出多个开源与商用替代品，包括 SeaweedFS、Garage、Ceph、Swift 等，社区有部分 Fork 尝试延续这一项目。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://voidzero.dev/posts/whats-new-nov-2025&#34; title=&#34;2025 年 11 月：ViteLand 最新动态回顾&#34; rel=&#34;noopener ugc nofollow&#34;&gt;2025 年 11 月：ViteLand 最新动态回顾&lt;/a&gt;：ViteLand 2025 年 11 月回顾，重点介绍了 Vite 8 Beta 版发布及核心架构更新。Vite 现已采用 Rust 编写的 Rolldown 作为新打包器，替代原本的 esbuild + Rollup 组合，并搭配同团队开发的 Oxc 实现完整端到端 (End-to-End) 工具链。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;react-server-&#34;&gt;React Server 组件中的严重安全漏洞&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components&#34; title=&#34;A Link of https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;React 团队紧急披露一项严重的安全漏洞，提醒开发者立即升级相关包以防远程代码执行风险&lt;/p&gt;
&lt;p&gt;该漏洞允许未经身份验证的远程代码执行，其原理是利用 React 解码发送到 React 服务器函数端点的有效负载的方式中的一个缺陷。即使您的应用没有实现任何 React 服务器函数端点，但如果您的应用支持 React 服务器组件，它仍然可能存在安全漏洞。&lt;/p&gt;
&lt;p&gt;该漏洞已披露为 &lt;a href=&#34;https://www.cve.org/CVERecord?id=CVE-2025-55182&#34; title=&#34;CVE-2025-55182&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CVE-2025-55182&lt;/a&gt; ，CVSS 评级为 10.0，存在于以下版本的软件中：19.0、19.1.0、19.1.1 和 19.2.0。&lt;br /&gt;
一些 React 框架和打包工具依赖于存在漏洞的 React 包，受影响的 React 框架和打包工具包括： next 、 react-router 、 waku 、 @parcel/rsc 、 @vitejs/plugin-rsc 和 rwsdk。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://nextjs.org/blog/CVE-2025-66478&#34; title=&#34;A Link of https://nextjs.org/blog/CVE-2025-66478&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://nextjs.org/blog/CVE-2025-66478&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Next.js (App Router 用户) 由于 Next.js 深度集成了 RSC，以下用 React Server Components 的版本均受影响（CVE-2025-66478）：Next.js 15.x、Next.js 16.x、Next.js 14.3.0-canary.77 及更高版本的 canary 版本&lt;/p&gt;
&lt;p&gt;Next.js 13.x、Next.js 14.x 稳定版、Pages Router 和 Edge Runtime 不受影响。&lt;/p&gt;
&lt;p&gt;详细漏洞分析与复现：&lt;a href=&#34;https://gist.github.com/maple3142/48bc9393f45e068cf8c90ab865c0f5f3&#34; title=&#34;POC for CVE-2025-55182 that works on Next.js 16.0.6&#34; rel=&#34;noopener ugc nofollow&#34;&gt;POC for CVE-2025-55182 that works on Next.js 16.0.6&lt;/a&gt;，演示了一个可在 Next.js 16.0.6 上利用 React Server Components 反序列化实现的 RCE 漏洞的概念验证 (POC)。&lt;/p&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;文章与视频&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.humanlayer.dev/blog/writing-a-good-claude-md&#34; title=&#34;Writing a good CLAUDE.md&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Writing a good CLAUDE.md&lt;/a&gt;：教你怎么写出既聪明又高效的 &lt;code&gt;CLAUDE.md&lt;/code&gt; 文件，让 Claude 真正懂你的代码库。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://allthingssmitty.com/2025/12/01/react-has-changed-your-hooks-should-too/&#34; title=&#34;React has changed, your Hooks should too&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React has changed, your Hooks should too&lt;/a&gt;：该文章介绍了几个在 React 18 时代该用的 hook，如 &lt;code&gt;useSyncExternalStore&lt;/code&gt;、&lt;code&gt;useDeferredValue&lt;/code&gt;、&lt;code&gt;useEffectEvent&lt;/code&gt; 等，鼓励开发者更多关注派生状态（derived state）而非副作用（side effects），迎接以数据为中心的 React 架构。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://mp.weixin.qq.com/s/5P27HinkNSEYuNsr3mXLTA&#34; title=&#34;AI 编程生态：Anthropic 收购 Bun 意味着什么？&#34; rel=&#34;noopener ugc nofollow&#34;&gt;AI 编程生态：Anthropic 收购 Bun 意味着什么？&lt;/a&gt;：以 Anthropic 收购 Bun 为引子，分析了 AI 编程生态的未来趋势。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://css-tricks.com/getting-creative-with-the-measure/&#34; title=&#34;Getting Creative With “The Measure”&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Getting Creative With “The Measure”&lt;/a&gt;：一篇讲述如何用排版中的 “measure（文本行长）” 重新思考网页布局，让设计更具阅读舒适度与一致性的文章。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendmasters.com/blog/the-downsides-of-scrollbar-gutter-stable-and-one-weird-trick/&#34; title=&#34;scrollbar-gutter: stable&#34; rel=&#34;noopener ugc nofollow&#34;&gt;scrollbar-gutter: stable&lt;/a&gt;：Chris Coyier 探讨了使用 &lt;code&gt;scrollbar-gutter: stable;&lt;/code&gt; 修复内容跳动问题的利与弊，并提出一种基于 Scroll State 查询的新思路。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendmasters.com/blog/the-deep-card-conundrum/&#34; title=&#34;The Deep Card Conundrum&#34; rel=&#34;noopener ugc nofollow&#34;&gt;The Deep Card Conundrum&lt;/a&gt;：本文由 Amit Sheen 撰写，讲述他如何在纯 CSS 的限制下实现具有真实 3D 深度和裁剪效果的“Deep Card”。传统做法会因 &lt;code&gt;overflow: clip&lt;/code&gt; 扁平化 3D 空间而失败。作者在尝试数年未果后，受到 Cubiq 的启发，用 &lt;code&gt;perspective-origin&lt;/code&gt; 动态校正视角，实现了既可保持 3D 空间又可裁剪内容的完美效果。这一方案不仅重燃了纯 CSS 的创造力，也提醒开发者，不要过早排斥某些特性，真正的创新往往在规则之外。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;我喜欢这个解决方案，不仅因为它有效（而且效果非常好），还因为它教会了我一个谦卑的教训。&lt;br /&gt;
我曾一度认为 perspective-origin 是个“坏”属性。我对它抱有抵触情绪，因为我只把它看作是造成图像失真的根源。我一心只想找到制作 3D 的“正确”方法，却忽略了真正能解决问题的工具。&lt;br /&gt;
Cubiq 并没有这种偏见。他看到的是一个数学问题：“我需要当旋转方向为 Y 时，投影看起来要像 X。”然后他找到了控制投影的属性。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;css-&#34;&gt;CSS 新特性&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendmasters.com/blog/non-square-image-blur-extensions/&#34; title=&#34;Non-Square Image Blur Extensions&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Non-Square Image Blur Extensions&lt;/a&gt;：教你用最简洁的 CSS，为非正方形图片打造漂亮的模糊背景扩展效果。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.smashingmagazine.com/2025/12/masonry-things-you-wont-need-library-anymore/&#34; title=&#34;Masonry: Things You Won’t Need A Library For Anymore&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Masonry: Things You Won’t Need A Library For Anymore&lt;/a&gt;：文章介绍了很多当下已无需依赖库的 CSS 特性，并且重点介绍即将登场的内置 CSS Masonry 布局能力。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://css-tip.com/fizz-buzz/&#34; title=&#34;Fizz Buzz using Modern CSS (no HTML)&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Fizz Buzz using Modern CSS (no HTML)&lt;/a&gt;：这篇文章展示了一个用纯 CSS 实现 Fizz Buzz 的实验，利用现代 CSS 特性如（counter-reset、自定义属性与 @keyframes 动画），实现了对 3 与 5 的可整除判断、条件渲染以及自动递增显示。这是一个仅在 Chrome 中能运行的有趣实验，展示了 CSS 逻辑化表达与动画控制的潜力。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-2&#34;&gt;工具&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/Rohithgilla12/data-peek&#34; title=&#34;data-peek&#34; rel=&#34;noopener&#34;&gt;data-peek&lt;/a&gt;：一个为开发者设计的轻量级桌面数据库客户端应用，支持 PostgreSQL、MySQL 与 Microsoft SQL Server。功能包括 SQL 查询编辑、多标签页、行内编辑、ERD 关系图可视化、查询计划分析、快捷键等。采用 Electron + React + TypeScript 技术栈构建，UI 使用 shadcn/ui 与 Tailwind CSS。项目开源（MIT License），鼓励社区贡献并提供商业使用许可。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/slopus/happy?tab=readme-ov-file&#34; title=&#34;slopus/happy&#34; rel=&#34;noopener&#34;&gt;slopus/happy&lt;/a&gt;：一个能让你随时随地操控 Claude Code 和 Codex 的开源客户端，手机、网页无缝切换，安全加密又高效。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;codepen-&#34;&gt;Codepen 精选&lt;/h2&gt;
&lt;h3 id=&#34;swiper&#34;&gt;Swiper&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/stolinski/pen/MYyrLgB&#34; title=&#34;A Link of https://codepen.io/stolinski/pen/MYyrLgB&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/stolinski/pen/MYyrLgB&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这个 Codepen 例子使用了现代 CSS 的 Scroll Snap (滚动捕捉) 和 Container Queries (容器查询) 特性，来实现类似原生应用的滑动操作（如左滑删除、右滑收藏）&lt;/p&gt;
&lt;p&gt;虽然 CSS 处理了滑动交互，但浏览器默认的滚动位置通常是 0（最左边）。因为左边有一个按钮，所以默认会显示左边的红色按钮。这段 JS 代码在页面加载时，自动将滚动条位置设置到中间元素的位置，确保用户一开始看到的是正常内容，而不是操作按钮。&lt;/p&gt;
&lt;p&gt;这种方式比传统的监听 touchmove 事件来计算位移要流畅得多，因为滚动是在合成线程上处理的。&lt;/p&gt;
&lt;p&gt;视频讲解在&lt;a href=&#34;https://www.youtube.com/watch?v=WjuqAGpj6DM&#34; title=&#34;这里&#34; rel=&#34;noopener ugc nofollow&#34;&gt;这里&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;相关文章&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://css-tricks.com/practical-css-scroll-snapping/&#34; title=&#34;Practical CSS Scroll Snapping&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Practical CSS Scroll Snapping&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Scroll_snap&#34; title=&#34;CSS scroll snap&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS scroll snap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://web.dev/articles/rendering-performance#3_js_css_style_composite&#34; title=&#34;Chromium 优化了页面的滚动操作，使其尽可能仅在合成器线程上执行&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Chromium 优化了页面的滚动操作，使其尽可能仅在合成器线程上执行&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;cinematic-ocean-scroll-scene&#34;&gt;Cinematic Ocean Scroll Scene&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/filipz/pen/dPMejVp&#34; title=&#34;A Link of https://codepen.io/filipz/pen/dPMejVp&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/filipz/pen/dPMejVp&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在这个由 Filip Zrnzevic 创作的交互式 Three.js/GSAP Pen 中，您可以漫步于 JavaScript 海洋，欣赏日落美景，感受宁静祥和的氛围。别忘了尝试各种控件，打造属于您自己的独特体验。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/722669a329f6866bc2be5180d3b7028c.gif&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;animated-hover-disclosures&#34;&gt;Animated Hover Disclosures&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/jh3y/pen/XJWNMOO&#34; title=&#34;A Link of https://codepen.io/jh3y/pen/XJWNMOO&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/jh3y/pen/XJWNMOO&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://fixupx.com/jh3yy/status/1940066323658158198&#34; title=&#34;jhey ʕ•ᴥ•ʔ(@jh3yy)&#34; rel=&#34;noopener ugc nofollow&#34;&gt;jhey ʕ•ᴥ•ʔ(@jh3yy)&lt;/a&gt;: 在 &lt;code&gt;:focus&lt;/code&gt; / &lt;code&gt;:hover&lt;/code&gt; 时过渡 CSS grid-template-column 意味着父容器不会改变大小 🏅&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这是我见过最丝滑的手风琴式卡片展开效果！核心技巧是利用 CSS Grid 的 &lt;code&gt;fr&lt;/code&gt; 单位进行布局，通过 JavaScript 动态修改 &lt;code&gt;grid-template-columns&lt;/code&gt;（如 &lt;code&gt;10fr 1fr 1fr&lt;/code&gt;...），配合 CSS transition，实现卡片展开/收缩时父容器尺寸恒定不变的平滑动画。这比传统的改变 &lt;code&gt;width&lt;/code&gt; 或使用 &lt;code&gt;flex-grow&lt;/code&gt; 更优雅，因为 fr 单位天然按比例分配剩余空间。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/9c87b5c9b53263f208d9fde3981e4e74.gif&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;heading-3&#34;&gt;🎄&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/creativeocean/pen/zxqEWYd&#34; title=&#34;A Link of https://codepen.io/creativeocean/pen/zxqEWYd&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/creativeocean/pen/zxqEWYd&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Tom Miller 用这段精美的 JavaScript 圣诞树点亮视频拉开了节日季的序幕。将鼠标悬停在树上，即可让它闪耀夺目！&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/12/419cd518ce1fa091308bddde94ee0564.gif&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;refs&#34;&gt;Refs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://codepen.io/spark/485&#34; title=&#34;CodePen Spark #485&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CodePen Spark #485&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://javascriptweekly.com/issues/764&#34; title=&#34;JavaScript Weekly Issue 764: December 5, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;JavaScript Weekly Issue 764: December 5, 2025&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ruanyifeng.com/blog/2025/12/weekly-issue-376.html&#34; title=&#34;科技爱好者周刊（第 376 期）：太空数据中心的争议&#34; rel=&#34;noopener ugc nofollow&#34;&gt;科技爱好者周刊（第 376 期）：太空数据中心的争议&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      
    </content>
    
  </entry>
  
  <entry>
    <title><![CDATA[FE Bits Vol.17｜WebGPU 主流浏览器全支持，AntD 6 正式发布]]></title>
    <link rel="alternate" type="text/html" href="https://news.cosine.ren/p/vol-17" />
    <id>https://news.cosine.ren/p/vol-17#14143</id>
    <author>
      <name>cosine</name>
    </author>
    <published>2025-11-30T12:41:44Z</published>
    <updated>2025-11-30T12:41:44Z</updated>
    
    <content type="html">
      &lt;blockquote&gt;
&lt;p&gt;本期网址 &lt;a href=&#34;https://blog.cosine.ren/post/weekly-17&#34; title=&#34;A Link of https://blog.cosine.ren/post/weekly-17&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://blog.cosine.ren/post/weekly-17&lt;/a&gt;&lt;br /&gt;
本周刊更新时间期望是在每周天&lt;br /&gt;
目前推荐使用 &lt;a href=&#34;https://folo.is/&#34; title=&#34;Folo&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Folo&lt;/a&gt; 订阅本周刊的 &lt;a href=&#34;https://quaily.com/cosine/feed/atom&#34; title=&#34;Quaily RSS&#34; rel=&#34;noopener&#34;&gt;Quaily RSS&lt;/a&gt;。&lt;br /&gt;
公众号 前端周周谈 FE Bits，点击阅读原文链接可查看原文。&lt;br /&gt;
QQ 讨论小群 598022684，日常讨论前端技术 &amp;amp; 生活，也可在群里投稿自己的文章，随意加入，比较偏向粉丝群的性质～&lt;br /&gt;
本周刊文章内容同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;，欢迎关注。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;今天是 2025 年 11 月 30 日，星期天。&lt;/p&gt;
&lt;p&gt;给博客优化了一下 UI，代码块和列表、标题的样式都加上了，然后给博客主题换了个名字，正式一些。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/eeae70b254e02df105e0119f2be173d6.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/bdaf68d2324e4b4f1dcd758c5bd25276.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;现在的主题叫 &lt;a href=&#34;https://github.com/cosZone/astro-koharu&#34; title=&#34;astro-koharu&#34; rel=&#34;noopener&#34;&gt;astro-koharu&lt;/a&gt;，博客的正式地址也挪到了 &lt;a href=&#34;https://blog.cosine.ren&#34; title=&#34;blog.cosine.ren&#34; rel=&#34;noopener ugc nofollow&#34;&gt;blog.cosine.ren&lt;/a&gt;，很开心。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“小春日和” （こはるびより）指的是晚秋到初冬这段时期，持续的一段似春天般温暖的晴天。也就是中文中的“小阳春”。&lt;br /&gt;
灵感来自 Hexo 的 Shoka 主题，但不再追求一比一复刻，而是保留它的优点，用更轻量的技术栈，做一款属于自己的个人博客主题。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;下一步打算自己弄个评论系统，Remark42 感觉没动力用，想参考 &lt;a href=&#34;https://valine.js.org/&#34; title=&#34;Valine&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Valine&lt;/a&gt; 自己弄一个，然后把旧的评论迁移过去。&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;生态与社区动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://web.dev/blog/webgpu-supported-major-browsers?hl=zh-cn&#34; title=&#34;主流浏览器现已支持 WebGPU&#34; rel=&#34;noopener ugc nofollow&#34;&gt;主流浏览器现已支持 WebGPU&lt;/a&gt;：WebGPU 现已在主流浏览器全面支持了，但是 Safari 是 iOS 26 才支持，而且 Safari 移动端给的显存嘛……少少的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.appinn.com/edge-site-extension-toggle/&#34; title=&#34;Edge 终于支持网站级扩展开关：新增「允许在此网站使用扩展」功能｜可针对任意网站，一键关闭所有扩展&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Edge 终于支持网站级扩展开关：新增「允许在此网站使用扩展」功能｜可针对任意网站，一键关闭所有扩展&lt;/a&gt;：Edge 出了个实用小功能，可以对单个网站一键关掉所有扩展（这下真的是只要你不做就会有浏览器帮你做这个功能了，想给我那个破插件加一直懒得加来着，Chrome 能不能跟进啊）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://socket.dev/blog/shai-hulud-strikes-again-v2&#34; title=&#34;npm 再次爆发 “Shai Hulud” 供应链攻击&#34; rel=&#34;noopener ugc nofollow&#34;&gt;npm 再次爆发 “Shai Hulud” 供应链攻击&lt;/a&gt;，利用 post-install 脚本窃取 token。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;TanStack 最近发布了 &lt;a href=&#34;https://tanstack.com/pacer/latest&#34; title=&#34;TanStack Pacer&#34; rel=&#34;noopener ugc nofollow&#34;&gt;TanStack Pacer&lt;/a&gt;，这是一个框架无关的性能优化工具集，提供防抖、节流、限流、队列管理与批处理等核心原语，适用于任何 JavaScript 框架。&lt;br /&gt;
它提供了一个专用的 React 适配器（&lt;code&gt;@tanstack/react-pacer&lt;/code&gt;），在核心 Pacer 工具之上提供了一组易于使用的 hook，例如 &lt;code&gt;useDebouncedValue&lt;/code&gt;、 &lt;code&gt;useThrottledCallback&lt;/code&gt; 、 &lt;code&gt;useQueuedState&lt;/code&gt; 和 &lt;code&gt;useBatcher&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;ant-design--v6&#34;&gt;Ant Design 组件库发布 v6&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/ant-design/ant-design/issues/55805&#34; title=&#34;🎉 Ant Design 6.0 来了！ 🎉&#34; rel=&#34;noopener&#34;&gt;🎉 Ant Design 6.0 来了！ 🎉&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;单开一个标题以表尊重～&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;React 版本提升&lt;/strong&gt;：最低要求 React 18，推荐使用 React 19。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;启用 React Compiler&lt;/strong&gt;：在构建产物中优化性能，开发者可自行选择是否开启。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;纯 CSS Variables 样式架构&lt;/strong&gt;：不再兼容 IE，样式实现零运行时（zeroRuntime）模式，支持实时多主题切换。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;组件语义化结构&lt;/strong&gt;：所有组件 DOM 结构优化，支持函数式类名配置 (&lt;code&gt;classNames&lt;/code&gt;) 与内联样式 (&lt;code&gt;styles&lt;/code&gt;)，提升定制能力与可维护性。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;移除废弃 API&lt;/strong&gt;：彻底移除 v4 遗留逻辑，统一 API 命名，同时兼容 v5 的使用方式。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;heading-1&#34;&gt;新组件与功能增强&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Masonry 瀑布流组件&lt;/strong&gt;：优化图片展示与卡片排布体验。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tooltip 支持平移切换&lt;/strong&gt;：多内容提示实现滑动过渡。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;InputNumber spinner 模式&lt;/strong&gt;：交互式加减按钮布局更直观。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Drawer 支持拖拽&lt;/strong&gt;：用户可调整抽屉大小。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;模糊蒙版背景&lt;/strong&gt;：所有弹层默认使用模糊效果，可按需关闭。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不再支持 IE&lt;/strong&gt;，建议替换废弃 API。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;one-more-thing--ant-design-x-20&#34;&gt;One More Thing —— Ant Design X 2.0&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;面向 AI 场景的组件库同步升级，提供更智能的交互能力。&lt;/li&gt;
&lt;li&gt;新版本强化渲染性能与灵活性，是探索 AI 驱动界面的关键工具。&lt;/li&gt;
&lt;li&gt;更多详情可参考 &lt;a href=&#34;https://github.com/ant-design/x/issues/1358&#34; title=&#34;🎉 Ant Design X 2.0 正式发布了 🎉&#34; rel=&#34;noopener&#34;&gt;🎉 Ant Design X 2.0 正式发布了 🎉&lt;/a&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;better-auth-v14&#34;&gt;Better Auth v1.4&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://www.better-auth.com/blog/1-4&#34; title=&#34;Better Auth 1.4&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Better Auth 1.4&lt;/a&gt; 发布，引入了无数据库的 Stateless Auth、SCIM Provisioning、OAuth 自定义状态、数据库 joins 优化、JWT 密钥轮换、API Key 二级存储、CLI 索引支持、SSO 域名验证等众多特性。此外，还推出了支持 UUID 主键、强化的邮箱变更流程、新的错误页、更好的插件结构和多项安全改善。&lt;/p&gt;
&lt;h2 id=&#34;heading-2&#34;&gt;文章与视频&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://yousali.com/posts/20251124-how-to-coding-with-ai/&#34; title=&#34;从「写代码」到「验代码」：AI 搭档写走 3 年，我踩出来的协作路线图&#34; rel=&#34;noopener ugc nofollow&#34;&gt;从「写代码」到「验代码」：AI 搭档写走 3 年，我踩出来的协作路线图&lt;/a&gt;：在推上看到一篇&lt;a href=&#34;https://x.com/y0usali/status/1993276386963079478&#34; title=&#34;好文章&#34; rel=&#34;noopener&#34;&gt;好文章&lt;/a&gt;，写给已经在或准备在真实生产项目里用 AI Coding 的后端 / 全栈工程师和技术管理者。它不会教你「按钮在哪里」「哪个 prompt 最神」，而是想在大约 15 分钟里，帮你搞清楚三件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;哪些任务交给 AI 最「划算」；&lt;/li&gt;
&lt;li&gt;怎么让项目本身变得更「AI 友好」，提高一次命中率；&lt;/li&gt;
&lt;li&gt;当生成不再是瓶颈时，工程师应该如何设计验证流程，把时间花在真正值钱的地方。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://sspai.com/post/103819&#34; title=&#34;谈谈不自律的良好生活 - 少数派&#34; rel=&#34;noopener ugc nofollow&#34;&gt;谈谈不自律的良好生活 - 少数派&lt;/a&gt;：很温柔的文章，提出「自洽而非自律」，「好好生活」不靠逼迫，而靠理解与自洽。&lt;br /&gt;
入选年度我最喜欢的文章，值得停下来，慢慢看。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://infrequently.org/2025/11/performance-inequality-gap-2026/&#34; title=&#34;The Performance Inequality Gap, 2026&#34; rel=&#34;noopener ugc nofollow&#34;&gt;The Performance Inequality Gap, 2026&lt;/a&gt;：作者继续延续多年系列，对 2026 年移动与桌面设备的性能、网络条件及网页负载趋势进行分析。&lt;br /&gt;
核心观点是：移动端尤其低端 Android 设备的硬件与网络改善速度，赶不上网页体积膨胀的速度。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://adactio.com/journal/22265&#34; title=&#34;Why use React?&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Why use React?&lt;/a&gt;：一篇发问式思考文章，探讨为什么开发者选择 React，以及这项选择对前端用户体验意味着什么。作者倡导让框架留在服务器，充分利用浏览器本身的强大功能。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://eliocapella.com/blog/ai-library-migration-guide/&#34; title=&#34;Migrating 6000 React tests using AI Agents and ASTs&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Migrating 6000 React tests using AI Agents and ASTs&lt;/a&gt;：一次关于用 AI Agents 和 AST 自动迁移 6000 个 React 测试的实战记录，是一篇好文章。&lt;br /&gt;
作者公司使用旧版 React Testing Library 编写了 970 个测试文件，总计 6000 个多测试用例。而升级至 v14 后 API 完全异步化，行为变化大，手动迁移代价极高，于是作者决定尝试用 AI 辅助完成大规模迁移。&lt;br /&gt;
比较感慨的是其中的迁移过程，最后一周时间共执行 50 次迁移，形成 50 个独立 PR，每个 PR 半小时。作者展望未来 AI 将进一步解放开发者，从“重复劳动”转向更有创造力的工作。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.harmonyintelligence.com/taking-down-next-js-servers&#34; title=&#34;以 0.0001 美分的价格干掉 Next.js 服务器&#34; rel=&#34;noopener ugc nofollow&#34;&gt;以 0.0001 美分的价格干掉 Next.js 服务器&lt;/a&gt;：Harmony Intelligence 团队发现了一个未经身份验证的拒绝服务 (DoS) 漏洞，该漏洞仅需一个 HTTP 请求和极少的资源即可导致自托管的 Next.js 服务器崩溃。通过限制请求大小的反向代理可以防止此攻击；仅靠速率限制不足以提供充分的保护。&lt;br /&gt;
受影响范围：所有带有中间件的自托管 Next.js 服务器（Vercel 托管的不受影响）。&lt;br /&gt;
受影响版本：≤15.5.4 的旧版本。&lt;br /&gt;
缓解措施：升级/ 配置诸如 nginx 反向代理限制请求体大小&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.skk.moe/post/dns-as-code-via-dnscontrol/&#34; title=&#34;用代码和 Git 管理 DNS 记录 —— DNSControl 和 GitHub Actions CI/CD 实践&#34; rel=&#34;noopener ugc nofollow&#34;&gt;用代码和 Git 管理 DNS 记录 —— DNSControl 和 GitHub Actions CI/CD 实践&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://sspai.com/post/104040&#34; title=&#34;写在 PicGo 即将 8 周年之际&#34; rel=&#34;noopener ugc nofollow&#34;&gt;写在 PicGo 即将 8 周年之际&lt;/a&gt;：也是一篇很有「情感」的文章啊。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;css-&#34;&gt;CSS 新特性&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.zhangxinxu.com/wordpress/2025/11/css-details-target-content-open/&#34; title=&#34;巧用CSS ::details-content伪元素实现任意展开动画&#34; rel=&#34;noopener ugc nofollow&#34;&gt;巧用CSS ::details-content伪元素实现任意展开动画&lt;/a&gt;：聊聊 &lt;code&gt;&amp;lt;details&amp;gt;&lt;/code&gt; 元素这几年新增加的 &lt;code&gt;::details-content&lt;/code&gt; 伪元素，使得内容展开收起可实现平滑动画。同时讲解了内容锚点（hash）自动展开机制，以及 &lt;code&gt;scroll-margin-block-start&lt;/code&gt; 的小技巧。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.stefanjudis.com/today-i-learned/light-dark-isnt-the-same-as-prefers-color-scheme/&#34; title=&#34;light-dark() isn&amp;#39;t always the same as prefers-color-scheme&#34; rel=&#34;noopener ugc nofollow&#34;&gt;light-dark() isn&#39;t always the same as prefers-color-scheme&lt;/a&gt;：作者发现新的 CSS 函数 light-dark() 并非 prefers-color-scheme 的替代品，它们在实现逻辑上有细微却重要的差异。&lt;code&gt;prefers-color-scheme&lt;/code&gt; 更偏向全局系统偏好，而 &lt;code&gt;light-dark()&lt;/code&gt; 更适合组件级主题控制。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendmasters.com/blog/how-to-add-and-remove-items-from-a-native-css-carousel-with-css/&#34; title=&#34;How to Add and Remove Items From a Native CSS Carousel (…with CSS)&#34; rel=&#34;noopener ugc nofollow&#34;&gt;How to Add and Remove Items From a Native CSS Carousel (…with CSS)&lt;/a&gt;：本文介绍如何利用 CSS Overflow Module Level 5 的新特性（如 &lt;code&gt;::scroll-button()&lt;/code&gt; 与 &lt;code&gt;::scroll-marker&lt;/code&gt;）创建一个完全不用 JavaScript 的原生 CSS 轮播组件。通过结合 HTML 的复选框控制展示项、CSS 伪元素控制滚动行为与可视化反馈，作者实现了可动态增删轮播项、支持自动滚动、滚动锚点定位的完整组件，展示了未来 CSS 在交互与状态管理上的潜力。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-3&#34;&gt;工具&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://colorpalette.pro/&#34; title=&#34;Color Palette Pro&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Color Palette Pro&lt;/a&gt;：一款能像音乐合成器一样自由调制色彩的在线调色工具，支持多种色彩空间与样式切换，实时生成色阶、色环、阴影与高光调和效果，非常适合设计师进行系统化配色或视觉一致性探索。&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/0b4ecbdb5000d0cb584b73af3c4fb391.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/trekhleb/javascript-algorithms&#34; title=&#34;JavaScript Algorithms and Data Structures&#34; rel=&#34;noopener&#34;&gt;JavaScript Algorithms and Data Structures&lt;/a&gt;&lt;br /&gt;
一个涵盖经典算法与数据结构的 JavaScript 示例仓库，其中每个算法和数据结构都有其独立的 README 文件，包含相关的解释和进一步阅读的链接。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/williamtroup/Heat.js&#34; title=&#34;williamtroup/Heat.js&#34; rel=&#34;noopener&#34;&gt;williamtroup/Heat.js&lt;/a&gt;：Heat.js 是一个零依赖、基于 TypeScript 开发的轻量前端可视化库，可生成可定制的热力图、图表和统计数据。开发者可通过配置 DOM 属性（data-heat-js）或使用 API 快速实现自定义热力图等。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;codepen-&#34;&gt;Codepen 精选&lt;/h2&gt;
&lt;h3 id=&#34;concentric-border-radii&#34;&gt;Concentric Border Radii&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/botteu/pen/YPKBrJX&#34; title=&#34;A Link of https://codepen.io/botteu/pen/YPKBrJX&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/botteu/pen/YPKBrJX&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“快来看看！这个内容器的边框半径取决于外容器的边框半径以及内外容器之间的内边距。” 在这个来自 botteu 的交互式 Pen 中，您可以滑动滑块来尝试不同的半径、内边距和颜色。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/9de30b5a6757dcc4363636ea41c7ec66.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;refs&#34;&gt;Refs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.stefanjudis.com/blog/web-weekly-176/&#34; title=&#34;Web Weekly #176&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Web Weekly #176&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://javascriptweekly.com/issues/763&#34; title=&#34;JavaScript Weekly Issue 763: November 28, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;JavaScript Weekly Issue 763: November 28, 2025&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://codepen.io/spark/484&#34; title=&#34;Code Spark #484&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Code Spark #484&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      
    </content>
    
  </entry>
  
  <entry>
    <title><![CDATA[FE Bits Vol.16｜Cloudflare 事故报告出炉，CSSWG 确认 Masonry 布局语法 grid-lanes]]></title>
    <link rel="alternate" type="text/html" href="https://news.cosine.ren/p/vol-16" />
    <id>https://news.cosine.ren/p/vol-16#13968</id>
    <author>
      <name>cosine</name>
    </author>
    <published>2025-11-23T11:30:00Z</published>
    <updated>2025-11-23T11:30:00Z</updated>
    
    <content type="html">
      &lt;blockquote&gt;
&lt;p&gt;本期网址 &lt;a href=&#34;https://space.cosine.ren/post/weekly-16&#34; title=&#34;A Link of https://space.cosine.ren/post/weekly-16&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://space.cosine.ren/post/weekly-16&lt;/a&gt;&lt;br /&gt;
本周刊更新时间期望是在每周天&lt;br /&gt;
目前推荐使用 &lt;a href=&#34;https://folo.is/&#34; title=&#34;Folo&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Folo&lt;/a&gt; 订阅本周刊的 &lt;a href=&#34;https://quaily.com/cosine/feed/atom&#34; title=&#34;Quaily RSS&#34; rel=&#34;noopener&#34;&gt;Quaily RSS&lt;/a&gt;。&lt;br /&gt;
公众号 前端周周谈 FE Bits，点击阅读原文链接可查看原文。&lt;br /&gt;
QQ 讨论小群 598022684，日常讨论前端技术 &amp;amp; 生活，也可在群里投稿自己的文章，随意加入，比较偏向粉丝群的性质～&lt;br /&gt;
本周刊文章内容同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;，欢迎关注。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;今天是 2025 年 11 月 23 日，星期天。&lt;/p&gt;
&lt;p&gt;网站用 &lt;a href=&#34;https://github.com/shishkin/astro-pagefind&#34; title=&#34;astro-pagefind&#34; rel=&#34;noopener&#34;&gt;astro-pagefind&lt;/a&gt; 实现了无需后端的搜索，好用的。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/429d0e73b863269741029207fbed29fc.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;计划在没有后端的情况下把网站功能完善，然后再逐步加上有后端的功能，这样没后端的也好部署，就像以前用 hexo 的体验一样。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/d01f66f7df2a7dd34388608e6fdc1230.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;生态与社区动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.blog/open-source/git/highlights-from-git-2-52/&#34; title=&#34;Highlights from Git 2.52&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Highlights from Git 2.52&lt;/a&gt;：Git 2.52 带来了新命令、性能优化，此版本首次使用 Rust 代码来实现 Git 的一些内部功能，Git 3.0 将全面要求 Rust。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cloudflare 于北京时间 2025 年 11 月 18 日晚间发生全球性网络故障，事件影响遍及多个地区和服务，包括 WARP 及 Application Services，最终在连续两个多小时后逐步恢复正常。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;故障时间线与恢复进展&lt;br /&gt;
20:13 起部分地区恢复，之后多次“再爆炸”与恢复循环。&lt;br /&gt;
21:04 官方确认在伦敦禁用 WARP 访问，说明问题基本定位。&lt;br /&gt;
21:09~21:35 官方多次更新状态，逐步恢复 Access、WARP 与应用服务（Application Services）。&lt;br /&gt;
22:03 时 X（即 Twitter）网页版恢复访问&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;如果你好奇原因，那么可以查看&lt;a href=&#34;https://blog.cloudflare.com/18-november-2025-outage/&#34; title=&#34;官方事故报告&#34; rel=&#34;noopener ugc nofollow&#34;&gt;官方事故报告&lt;/a&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://survey.devographics.com/en-US/survey/state-of-react/2025&#34; title=&#34;React 2025 年现状调查&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React 2025 年现状调查&lt;/a&gt;：React 生态系统年度调查又开始了。提交截止日期为 11 月 25 日，也就是下周二。感兴趣的可以在这里查看 &lt;a href=&#34;https://2024.stateofreact.com/en-US&#34; title=&#34;2024 年的调查结果&#34; rel=&#34;noopener ugc nofollow&#34;&gt;2024 年的调查结果&lt;/a&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种调查的填写过程中其实能学到不少东西。类似之前的 JS / CSS 的年度调查。&lt;/p&gt;
&lt;p&gt;React 团队近年来以稳健的节奏迭代，引入了 Server Components、Compiler 等，还设立了 React Foundation 进行管理。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.angular.dev/announcing-angular-v21-57946c34f14b&#34; title=&#34;Announcing Angular v21&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Announcing Angular v21&lt;/a&gt;：Angular 迎来 v21，这是一次面向未来的版本更新，专注于 AI 集成、可访问性及现代开发体验。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Reddit &lt;code&gt;/r/node&lt;/code&gt; 讨论 &lt;a href=&#34;https://www.reddit.com/r/node/comments/1ov6xrd/nestjs_is_bad_change_my_mind/&#34; title=&#34; 的优缺点&#34; rel=&#34;noopener ugc nofollow&#34;&gt;&lt;strong&gt;NestJS&lt;/strong&gt; 的优缺点&lt;/a&gt;，引发社区思考框架选型取舍。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;文章与视频&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.blog/ai-and-ml/github-copilot/how-to-write-a-great-agents-md-lessons-from-over-2500-repositories/&#34; title=&#34;如何撰写出色的 agents.md 文件：来自 2500 多个代码库的经验总结&#34; rel=&#34;noopener ugc nofollow&#34;&gt;如何撰写出色的 agents.md 文件：来自 2500 多个代码库的经验总结&lt;/a&gt;：GitHub 分享了从 2500+ 仓库提炼出的经验，教你如何写出真正有用的 &lt;code&gt;agents.md&lt;/code&gt; 文件。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://catcoding.me/p/avoid-mistake/&#34; title=&#34;谈谈工作中的犯错 | CatCoding&#34; rel=&#34;noopener ugc nofollow&#34;&gt;谈谈工作中的犯错 | CatCoding&lt;/a&gt; 错误不仅是个人问题，也暴露团队在设计、权限、质量控制、代码 Review 等方面的短板。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://cyandev.app/post/from-cloudflare-outage-to-code-safety&#34; title=&#34;从 Cloudflare 故障到代码安全 | Cyandev&#34; rel=&#34;noopener ugc nofollow&#34;&gt;从 Cloudflare 故障到代码安全 | Cyandev&lt;/a&gt;：从一次 Rust 相关的服务中断聊到内存安全与代码复杂度。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendmasters.com/blog/how-to-create-3d-images-in-css-with-the-layered-pattern/&#34; title=&#34;如何使用分层模式在 CSS 中创建 3D 图像&#34; rel=&#34;noopener ugc nofollow&#34;&gt;如何使用分层模式在 CSS 中创建 3D 图像&lt;/a&gt;：使用 CSS 的 &lt;code&gt;transform-style: preserve-3d&lt;/code&gt; 让所有层在三维空间可见，利用透视与光影制造立体幻觉，并通过 &lt;code&gt;perspective&lt;/code&gt;、&lt;code&gt;translateZ()&lt;/code&gt;、&lt;code&gt;filter&lt;/code&gt; 等技巧实现动态的 3D 效果。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/2ca04a3a3ba0f48802a02210f4fc825c.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.smashingmagazine.com/2025/11/keyframes-tokens-standardizing-animation-across-projects/&#34; title=&#34;Keyframes Tokens 跨项目动画标准化&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Keyframes Tokens 跨项目动画标准化&lt;/a&gt;：如何通过将动画关键帧 (&lt;code&gt;@keyframes&lt;/code&gt;) 设计为可重用的 Keyframes Tokens，来实现动画系统的标准化与可维护化。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.readwriterachel.com/things-i-learned/2025/11/09/devtools-1.html&#34; title=&#34;我打赌你不知道可以用 Chrome 浏览器开发工具做的六件事 Part 1&#34; rel=&#34;noopener ugc nofollow&#34;&gt;我打赌你不知道可以用 Chrome 浏览器开发工具做的六件事 Part 1&lt;/a&gt;：带你发现 Chrome DevTools 中那些被忽略却超实用的隐藏技巧，提升调试效率。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本篇是 Part 1，涵盖前三个内容：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用 &lt;code&gt;console.time()&lt;/code&gt; 和 &lt;code&gt;console.timeEnd()&lt;/code&gt; 精准计时函数执行。&lt;/li&gt;
&lt;li&gt;利用 DOM Breakpoints 实时捕捉元素变化，并自动暂停脚本运行。&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;monitor()&lt;/code&gt; 在控制台监听任意函数调用。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;断点是真的很重要，严肃学习！&lt;/p&gt;
&lt;h2 id=&#34;css-&#34;&gt;CSS 新特性&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendmasters.com/blog/more-css-random-learning-through-experiments/&#34; title=&#34;通过实验学习更多 CSS random() 功能&#34; rel=&#34;noopener ugc nofollow&#34;&gt;通过实验学习更多 CSS random() 功能&lt;/a&gt;：作者通过多个实验展示了如何用 CSS 的 &lt;code&gt;random()&lt;/code&gt; 函数创造动态有趣的视觉效果，如旋转星空、滚动视差(parallax)星空及基于滚动的点阵动效，虽然目前仅 &lt;a href=&#34;https://developer.apple.com/safari/technology-preview/&#34; title=&#34;Safari 技术预览版&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Safari 技术预览版&lt;/a&gt;支持该功能，但文章提供了可视化演示和代码片段，展示了 &lt;code&gt;random()&lt;/code&gt; 带来的新创意空间和未来样式系统的潜能。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.zhangxinxu.com/wordpress/2025/11/css-state-function/&#34; title=&#34;介绍下与 CSS 自定义组件相关的 :state() 函数&#34; rel=&#34;noopener ugc nofollow&#34;&gt;介绍下与 CSS 自定义组件相关的 :state() 函数&lt;/a&gt;：介绍了 CSS :state() 伪类函数，这是 Web Components(网页组件) 的新特性，可用来根据组件内部状态修改样式。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.bram.us/2025/11/20/anchor-positioning-is-transform-aware-in-chrome-144/&#34; title=&#34;在 Chrome 浏览器 144+ 中，锚点定位具有变换感知功能&#34; rel=&#34;noopener ugc nofollow&#34;&gt;在 Chrome 浏览器 144+ 中，锚点定位具有变换感知功能&lt;/a&gt;：Chrome 144 将 Anchor Positioning 改为对 transform 变换敏感（transform-aware），更新后 tooltip、浮层等会根据元素的变换后位置进行定位。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/w3c/csswg-drafts/issues/12022#issuecomment-3525043825&#34; title=&#34;Masonry Switch 语法 #1022&#34; rel=&#34;noopener&#34;&gt;Masonry Switch 语法 #1022&lt;/a&gt;：CSS 工作组（CSSWG）确定采用新语法 &lt;code&gt;display: grid-lanes&lt;/code&gt; 来启用 CSS Grid Level 3 新增的 Masonry 布局。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-2&#34;&gt;小贴士&lt;/h2&gt;
&lt;p&gt;虽然发过那么多次 CSS 新特性的博文推荐，但是在项目中实际用上的没那么多，决定开个新栏目，记录一下平常真在项目里用上了的小 tip！&lt;/p&gt;
&lt;p&gt;CSS &lt;code&gt;scroll-state&lt;/code&gt; 用来渐进式的增强滚动容器底部的羽化遮罩时还是很好用的～&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/eb89146b7bf76508c7e2a67325d0b710.gif&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;/* https://github.com/parcel-bundler/lightningcss/issues/887 */
.scroll-feather-mask {
  container-type: scroll-state;
}
@container scroll-state(scrollable: bottom) {
  .scroll-feather-mask::before {
    content: &#39;&#39;;
    background: linear-gradient(to bottom, transparent 0%, var(--gradient-bg-start) 70%, var(--gradient-bg-start) 100%);
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 10;
    display: block;
    height: 5rem;
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;参考链接&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://frontendmasters.com/blog/adaptive-alerts-a-css-scroll-state-use-case/&#34; title=&#34;Adaptive Alerts (a CSS scroll-state Use Case)&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Adaptive Alerts (a CSS scroll-state Use Case)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.zhangxinxu.com/wordpress/2025/08/css-container-scroll-state/&#34; title=&#34;CSS @container scroll-state 容器滚动查询&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS @container scroll-state 容器滚动查询&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://css-tricks.com/chrome-133-goodies/#aa-scroll-states-in-container-queries&#34; title=&#34;Chrome 133 Goodies&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Chrome 133 Goodies&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;heading-3&#34;&gt;工具&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://imageconverter.dev/&#34; title=&#34;Free Online Image Converter&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Free Online Image Converter&lt;/a&gt; 无需登录、无需上传服务器的在线图片转换工具，完全运行于浏览器端，支持多种主流与新兴图片格式的相互转换，可调整输出格式及质量，立即下载结果，没有水印、不限数量。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://baselinejs.vercel.app/&#34; title=&#34;Baseline JS Docs&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Baseline JS Docs&lt;/a&gt;：检测 JavaScript 代码是否符合 Web 平台 Baseline 标准的 ESLint 插件，让代码对所有浏览器都更友好。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;-codepen-&#34;&gt;趣站与 Codepen 精选&lt;/h2&gt;
&lt;h3 id=&#34;classic-88-pixel-bw-mac-patterns&#34;&gt;Classic 8×8-pixel B&amp;amp;W Mac patterns&lt;/h3&gt;
&lt;p&gt;网站：https://paulsmith.github.io/classic-mac-patterns/&lt;br /&gt;
介绍文章： &lt;a href=&#34;https://pauladamsmith.com/blog/2025/09/classic-mac-patterns.html&#34; title=&#34;Classic 8×8-pixel B&amp;amp;W Mac patterns&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Classic 8×8-pixel B&amp;amp;W Mac patterns&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;由 Paul Smith 制作的 Classic Mac OS System 1 背景图案，这些极小尺寸的复古像素图案可通过 CSS &lt;code&gt;background-repeat&lt;/code&gt; 实现无限平铺效果。尽管源自经典的 Mac OS 设计风格，但它们在现代网页中依然有独特的美感和实用价值。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/c9884109fffdba36b2b9c28ba003611a.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;creepy-button&#34;&gt;Creepy Button&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/jkantner/pen/ZYWKvqW&#34; title=&#34;A Link of https://codepen.io/jkantner/pen/ZYWKvqW&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/jkantner/pen/ZYWKvqW&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;这个按钮在监视你&amp;quot;。从 Jon Kantner 这款俏皮的按钮下面探出头来，你会发现一双卡通眼睛正在跟踪你的一举一动👀。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/b2d6e6c953d6300483d906c7d699efdd.gif&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;liquid-glass-clock&#34;&gt;Liquid Glass Clock&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/alexandrevacassin/pen/YPqqqwr&#34; title=&#34;A Link of https://codepen.io/alexandrevacassin/pen/YPqqqwr&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://codepen.io/alexandrevacassin/pen/YPqqqwr&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;顾名思义，一个液态玻璃数字时钟。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/ab2be23ad6110f1d322cc6f90d9d57aa.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;refs&#34;&gt;Refs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://react.statuscode.com/issues/452&#34; title=&#34;React Status Issue 452: November 19, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React Status Issue 452: November 19, 2025&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://javascriptweekly.com/issues/762&#34; title=&#34;JavaScript Weekly Issue 762: November 21, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;JavaScript Weekly Issue 762: November 21, 2025&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://nodeweekly.com/issues/601&#34; title=&#34;Node Weekly Issue 601: November 18, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Node Weekly Issue 601: November 18, 2025&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://frontendfoc.us/issues/718&#34; title=&#34;Frontend Focus Issue 718: November 19, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Frontend Focus Issue 718: November 19, 2025&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://codepen.io/spark/483&#34; title=&#34;Codepen Spark #483&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Codepen Spark #483&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      
    </content>
    
  </entry>
  
  <entry>
    <title><![CDATA[FE Bits Vol.15｜Chrome 宽高动画重排优化，Node Type Stripping 稳定]]></title>
    <link rel="alternate" type="text/html" href="https://news.cosine.ren/p/vol-15" />
    <id>https://news.cosine.ren/p/vol-15#13830</id>
    <author>
      <name>cosine</name>
    </author>
    <published>2025-11-16T13:03:14Z</published>
    <updated>2025-11-16T13:03:14Z</updated>
    
    <content type="html">
      &lt;blockquote&gt;
&lt;p&gt;本周刊更新时间期望是在每周天，网站在建设中……&lt;br /&gt;
目前推荐使用 &lt;a href=&#34;https://folo.is/&#34; title=&#34;Folo&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Folo&lt;/a&gt; 订阅本周刊的 &lt;a href=&#34;https://quaily.com/cosine/feed/atom&#34; title=&#34;Quaily RSS&#34; rel=&#34;noopener&#34;&gt;Quaily RSS&lt;/a&gt;。&lt;br /&gt;
公众号 前端周周谈 FE Bits，点击阅读原文链接可查看原文。&lt;br /&gt;
QQ 讨论小群 598022684，日常讨论前端技术 &amp;amp; 生活，也可在群里投稿自己的文章，随意加入，比较偏向粉丝群的性质～&lt;br /&gt;
本周刊同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;，欢迎关注。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;今天是 2025 年 11 月 16 日，星期天。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://space.cosine.ren/weekly&#34; title=&#34;周刊网站&#34; rel=&#34;noopener ugc nofollow&#34;&gt;周刊网站&lt;/a&gt; 先打了个样，域名估计还会换，后续等迁移的东西都迁移过来了之后再把原来 hexo 的版本换掉。&lt;/p&gt;
&lt;p&gt;在博客的基础上加上了周刊栏目，欢迎提建议，还有很多要优化的，搜索和评论还没加上，但是欢迎来看看提建议。&lt;/p&gt;
&lt;p&gt;仓库在 &lt;a href=&#34;https://github.com/cosZone/cos-space&#34; title=&#34;A Link of https://github.com/cosZone/cos-space&#34; rel=&#34;noopener&#34;&gt;https://github.com/cosZone/cos-space&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我发现我的拖延症还是没好，不发出来就会一直拖～所以发出来鞭策鞭策自己。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/c84e26403a6cc9d19e06abe60c785ba3.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;生态与社区动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://pnpm.io/blog/releases/10.21&#34; title=&#34;pnpm 10.21&#34; rel=&#34;noopener ugc nofollow&#34;&gt;pnpm 10.21&lt;/a&gt;：可根据 &lt;code&gt;engines.runtime&lt;/code&gt; 自动安装依赖所需 Node 版本，并引入 &lt;code&gt;trustPolicy&lt;/code&gt; 防止供应链攻击。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;当依赖声明了特定 Node.js 版本（在 engines.runtime 字段中），pnpm 会自动安装该版本并绑定 CLI 应用运行时，保证依赖与运行环境一致。若存在 postinstall 脚本，也会在匹配版本的 Node.js 下执行。&lt;br /&gt;
信任策略 (trustPolicy) 设置：新增配置项，可设置为 no-downgrade，当包的信任等级比之前版本下降时，会阻止安装，防止潜在安全风险。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;TC39（JavaScript 语言标准化委员会）第 111 次会议将于 2025 年 11 月在东京举办的，&lt;a href=&#34;https://javascriptweekly.com/link/177064/web&#34; title=&#34;会议议程公布&#34; rel=&#34;noopener ugc nofollow&#34;&gt;会议议程公布&lt;/a&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Stage 4 候选提案：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/tc39/proposal-iterator-sequencing&#34; title=&#34;Iterator Sequencing&#34; rel=&#34;noopener&#34;&gt;Iterator Sequencing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/tc39/proposal-json-parse-with-source&#34; title=&#34;JSON.parse source text access&#34; rel=&#34;noopener&#34;&gt;JSON.parse source text access&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/tc39/proposal-temporal&#34; title=&#34;Temporal&#34; rel=&#34;noopener&#34;&gt;Temporal&lt;/a&gt; 状态更新&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.google.com/presentation/d/17FKrRkWCfNdYui9uRQDRYzv2c3cOCp6ZM7Rly9MwGHM/edit&#34; title=&#34;Locale Info API&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Locale Info API&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Stage 0 新议题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;迭代支持改进（Iterator Join、TypedArray Concatenation、FindWithin）&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/LeaVerou/proposal-class-spread&#34; title=&#34;Class spread syntax&#34; rel=&#34;noopener&#34;&gt;Class spread syntax&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/LeaVerou/proposal-class-field-introspection&#34; title=&#34;Class field introspection&#34; rel=&#34;noopener&#34;&gt;Class field introspection&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;若干新 Intl 提案（Energy Units、Unit Protocol 等）。&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://nodejs.org/en/blog/release/v25.2.0&#34; title=&#34;Node.js v25.2.0&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Node.js v25.2.0&lt;/a&gt;：Type Stripping 功能标记为稳定。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/evanw/esbuild/releases/tag/v0.27.0&#34; title=&#34;esbuild 0.27&#34; rel=&#34;noopener&#34;&gt;esbuild 0.27&lt;/a&gt;：带破坏性更新，提示锁定版本。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;文章与视频&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.bram.us/2025/11/13/animating-css-width-or-height-no-longer-force-a-main-thread-animation-in-chrome-under-the-right-conditions/&#34; title=&#34;在 Chrome 浏览器中，在特定条件下，  对 CSS width  或  height  进行动画处理不再强制执行主线程动画&#34; rel=&#34;noopener ugc nofollow&#34;&gt;在 Chrome 浏览器中，在特定条件下，  对 CSS width  或  height  进行动画处理不再强制执行主线程动画&lt;/a&gt;：从性能角度来看，对 CSS &lt;code&gt;width&lt;/code&gt;  和  &lt;code&gt;height&lt;/code&gt;  进行动画处理是不好的，因为它会导致&lt;a href=&#34;https://web.dev/articles/rendering-performance#the_pixel_pipeline&#34; title=&#34;渲染管线&#34; rel=&#34;noopener ugc nofollow&#34;&gt;渲染管线&lt;/a&gt;中发生布局操作（也称重排）。 &lt;strong&gt;这一点至今仍然正确。&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但最近的 Chrome Canary 版本中最近有一个令人兴奋的动画/性能改进：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在 Chrome 144.0.7512.0（当前 Canary 版本）中，我们扩展了  &lt;code&gt;width&lt;/code&gt; / &lt;code&gt;height&lt;/code&gt;  检查，以检查  &lt;code&gt;width&lt;/code&gt;  或  &lt;code&gt;height&lt;/code&gt;  是否真的发生了变化。&lt;br /&gt;
💡 如果  &lt;code&gt;width&lt;/code&gt; / &lt;code&gt;height&lt;/code&gt;  不变，则无需计算布局，因此也无需强制动画在主线程上运行。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://tympanus.net/codrops/2025/11/10/crafting-generative-css-worlds/&#34; title=&#34;Crafting Generative CSS Worlds | Codrops&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Crafting Generative CSS Worlds | Codrops&lt;/a&gt;：用纯 CSS 打造 3D 等距地形世界，通过层叠网格与 3D 变换构建出一个像素风的生成式世界。作者介绍了从镜头视角设置，到多层网格架构、地形单元的几何定义，再到噪声生成高度图和性能优化等完整技术路径。网站为 &lt;a href=&#34;https://terra.layoutit.com&#34; title=&#34;CSS Terrain Generator&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS Terrain Generator&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/4fbd67686dc24a1340d6518801e8b67d.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://piccalil.li/blog/perfecting-baseline/?ref=articles-rss-feed&#34; title=&#34;Perfecting Baseline&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Perfecting Baseline&lt;/a&gt;：一篇讲述 Web 平台特性 “Baseline” 概念如何诞生、发展和优化的技术随笔，让开发者理解它的价值与局限。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://ivankra.github.io/javascript-zoo/&#34; title=&#34;JavaScript Engines Zoo&#34; rel=&#34;noopener ugc nofollow&#34;&gt;JavaScript Engines Zoo&lt;/a&gt;：汇总 100 多个 JS 引擎的数据、性能与发展史，附带 Dockerfiles 可直接实验。（好名字）&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/dbb190c5ed37a627dbc9e8da12fe3670.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://types.kitlangton.com/&#34; title=&#34;Visual Types&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Visual Types&lt;/a&gt;：一份以直观方式解释 TypeScript 类型系统核心概念的交互式视觉笔记，将抽象的类型关系转为集合论直观类比。作者通过对基础类型、联合类型、交叉类型、泛型(Type Alias/Generic)、条件类型(Conditional Types)等模块的分解说明，让开发者从“类型是值的集合”这一基本理念出发，逐步理解 TypeScript 在编译期的推导与约束机制。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/8437c312ca3bfd09016a618d35fb323e.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.smashingmagazine.com/2025/11/effectively-monitoring-web-performance/&#34; title=&#34;Effectively Monitoring Web Performance&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Effectively Monitoring Web Performance&lt;/a&gt;：如何系统化地监测网站性能，打造持续高效的前端体验。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;css-&#34;&gt;CSS 新特性&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://css-tricks.com/the-range-syntax-has-come-to-container-style-queries-and-if/&#34; title=&#34;The Range Syntax Has Come to Container Style Queries and if()&#34; rel=&#34;noopener ugc nofollow&#34;&gt;The Range Syntax Has Come to Container Style Queries and if()&lt;/a&gt;：CSS 条件逻辑又升级啦，现在范围语法（range syntax）也能用在容器样式查询和 &lt;code&gt;if()&lt;/code&gt; 函数里了。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，可以做到以下行为：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;/* Range query for rain percent (new) */
@container style(--rain-percent &amp;gt; 45%) {
  .weather-card {
    background: linear-gradient(140deg, skyblue, lightblue);
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://css-tip.com/responsive-stacked-img/&#34; title=&#34;Responsive List of Stacked/Overlapping Images&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Responsive List of Stacked/Overlapping Images&lt;/a&gt;：用现代 CSS （如 &lt;code&gt;container-type&lt;/code&gt; 与 &lt;code&gt;cqw&lt;/code&gt; 单位）写出自适应重叠头像列表。图片间的间距可根据容器宽度与元素数量自动调整，无需固定值或“魔法数字”，布局既灵活，又保持了视觉平衡。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/ca29da482557619505200d6b78dcc017.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;-codepen-&#34;&gt;趣站与 Codepen 精选&lt;/h2&gt;
&lt;h3 id=&#34;messenger&#34;&gt;Messenger&lt;/h3&gt;
&lt;p&gt;“Messenger” 是一个以小行星递送员为主题的互动网页，于 2025 年 11 月 10 日获得 Awwwards 的 Site of the Day (SOTD)。作品通过精巧的角色系统与动态 NPC 设置，打造沉浸式探索体验。色彩仅用两种主色，极简又具叙事性；技术实现上兼顾动画流畅度、响应式设计和可访问性。整体评分 7.92/10，在美术、交互与动画实现方面表现突出，是网页叙事和视觉创作的优秀范例。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;这是一个小星球，但总得有人送货。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://messenger.abeto.co/&#34; title=&#34;A Link of https://messenger.abeto.co/&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://messenger.abeto.co/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/db8f2a0babea60b03f1446709ee561c0.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;red-alp-448&#34;&gt;Red Alp [448]&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.pkh.me/p/45-code-golfing-a-tiny-demo-using-maths-and-a-pinch-of-insanity&#34; title=&#34;Code golfing a tiny demo using maths and a pinch of insanity&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Code golfing a tiny demo using maths and a pinch of insanity&lt;/a&gt;：作者用极端的代码压缩和数学技巧，把一段 GLSL 着色器压缩到仅 448 字符，创造出奇妙的 3D 山景与云雾效果。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/a0f3be3bdc91f26f480edb9b1f7f0de2.gif&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;可在此处查看 &lt;a href=&#34;https://b.pkh.me/2025-09-08-red-alp.htm&#34; title=&#34;demo&#34; rel=&#34;noopener ugc nofollow&#34;&gt;demo&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;hopping-marbles-&#34;&gt;Hopping Marbles 跳跃的弹珠&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/jkantner/pen/LEGvzLO&#34; title=&#34;Hopping Marbles&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Hopping Marbles&lt;/a&gt;：循环的纯 CSS + SVG 的跳跃弹珠动画，很有创意！&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“一段以弹珠为主角的伪 3D 循环动画，设计成类似预加载器的效果。此外，孔洞底部还使用了特殊的 SVG clip paths 以及一些秘密交替的路径。”——Jon Kantner&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/33425e261335170807ebd4c99ac25dbb.gif&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;refs&#34;&gt;Refs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://codepen.io/spark/481&#34; title=&#34;Codepen Spark #481&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Codepen Spark #481&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://nodeweekly.com/issues/600&#34; title=&#34;Node Weekly Issue 600: November 11, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Node Weekly Issue 600: November 11, 2025&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://javascriptweekly.com/issues/761&#34; title=&#34;JavaScript Weekly Issue 761: November 14, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;JavaScript Weekly Issue 761: November 14, 2025&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      
    </content>
    
  </entry>
  
  <entry>
    <title><![CDATA[FE Bits Vol.14｜Chrome 支持左右分屏、npm 强制 2FA、Rspack 1.6]]></title>
    <link rel="alternate" type="text/html" href="https://news.cosine.ren/p/vol-14" />
    <id>https://news.cosine.ren/p/vol-14#13680</id>
    <author>
      <name>cosine</name>
    </author>
    <published>2025-11-09T12:40:00Z</published>
    <updated>2025-11-09T12:40:00Z</updated>
    
    <content type="html">
      &lt;blockquote&gt;
&lt;p&gt;本周刊更新时间期望是在每周天，网站在建设中……&lt;br /&gt;
目前推荐使用 &lt;a href=&#34;https://folo.is/&#34; title=&#34;Folo&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Folo&lt;/a&gt; 订阅本周刊的 &lt;a href=&#34;https://quaily.com/cosine/feed/atom&#34; title=&#34;Quaily RSS&#34; rel=&#34;noopener&#34;&gt;Quaily RSS&lt;/a&gt;。&lt;br /&gt;
公众号 前端周周谈 FE Bits，点击阅读原文链接可查看原文。&lt;br /&gt;
QQ 讨论小群 598022684，日常讨论前端技术 &amp;amp; 生活，也可在群里投稿自己的文章，随意加入，比较偏向粉丝群的性质～&lt;br /&gt;
本周刊同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;，欢迎关注。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;今天是 2025 年 11 月 9 日，星期天。&lt;/p&gt;
&lt;p&gt;本周没有什么大新闻，今天去华南植物园看了看，大意了，没带驱蚊水被蚊子咬死了。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/a50eb805cd18b39c53c0fdb0f7e041c1.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/5cb8eb023e770eeffa6ee05bf06f86ff.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/3ef571f8fe46fcf69df7ea3867fda38b.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;生态与社区动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.stefanjudis.com/blog/chrome-split-views/&#34; title=&#34;Chrome supports split views (behind a flag)&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Chrome supports split views (behind a flag)&lt;/a&gt;：Chrome 也终于能左右分屏啦，打开实验性功能 &lt;code&gt;chrome://flags#side-by-side&lt;/code&gt; 就能体验新功能。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://rspack.rs/blog/announcing-1-6&#34; title=&#34;Announcing Rspack 1.6&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Announcing Rspack 1.6&lt;/a&gt;：Rspack 1.6 在 tree-shaking、ESM 输出优化、懒加载、JSX 保留、Source Map 处理等方面都有重大改进。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.blog/changelog/2025-11-05-npm-security-update-classic-token-creation-disabled-and-granular-token-changes/&#34; title=&#34;npm 安全更新：classic token 创建将被禁用与 granular token 的更改&#34; rel=&#34;noopener ugc nofollow&#34;&gt;npm 安全更新：classic token 创建将被禁用与 granular token 的更改&lt;/a&gt;：自 2025 年 11 月 5 日起，npm 将正式禁用新建经典 (classic) token，并强化细化 (granular) token 的安全策略，包括强制启用双重验证 (2FA) 及限定有效期为 90 天。现存的经典 token 将在 11 月 19 日彻底失效，原定于 2026 年 2 月 3 日之后到期的现有 token 已调整为在该日期到期。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;文章与视频&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://4ark.me/posts/2025-11-04-openspec/&#34; title=&#34;OpenSpec 使用心得&#34; rel=&#34;noopener ugc nofollow&#34;&gt;OpenSpec 使用心得&lt;/a&gt;：一篇很好的 AI 辅助开发实践总结，安利了&lt;a href=&#34;https://github.com/Fission-AI/OpenSpec&#34; title=&#34;OpenSpec&#34; rel=&#34;noopener&#34;&gt;OpenSpec&lt;/a&gt; 感觉挺不错的～「规范驱动的团队协作」&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.stacking.dev/&#34; title=&#34;Sstacking 工作流&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Sstacking 工作流&lt;/a&gt;：本文介绍了一种名为 “Stacking” 的开发工作流，通过将大型改动拆分为多个相互依赖的、小而独立的 PR，实现并行开发与评审。这篇其实是之前的看到的文章里看到的，觉得有用，Mark 一下。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://motion.dev/blog/web-animation-performance-tier-list&#34; title=&#34;Web 动画性能层列表 - Motion Blog&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Web 动画性能层列表 - Motion Blog&lt;/a&gt;：作者用一份分级榜单，讲明哪些网页动画方式最流畅、哪些最耗性能，从浏览器渲染管线的底层原理出发，给出实践经验。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://cekrem.github.io/posts/why-typescript-wont-save-you/&#34; title=&#34;为什么 TypeScript 救不了你&#34; rel=&#34;noopener ugc nofollow&#34;&gt;为什么 TypeScript 救不了你&lt;/a&gt;：这篇文章提醒我们，TypeScript 让你感觉安全，但那并不意味着你的代码真的安全。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://cekrem.github.io/posts/clipboard-api-how-hard-can-it-be/&#34; title=&#34;剪贴板 API：我们是如何走到这一步的？&#34; rel=&#34;noopener ugc nofollow&#34;&gt;剪贴板 API：我们是如何走到这一步的？&lt;/a&gt;：作者本想简单实现“复制到剪贴板”，结果掉进了浏览器兼容性的大坑，一路吐槽、反思到 Web 平台复杂性的根源。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;对开发者而言，重要的不只是解决问题，而是理解复杂系统背后的现实与妥协。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://css-tricks.com/the-most-hated-css-feature-tan/&#34; title=&#34;“最讨厌”的 CSS 特性：tan()&#34; rel=&#34;noopener ugc nofollow&#34;&gt;“最讨厌”的 CSS 特性：tan()&lt;/a&gt;：作者用轻松的方式聊了聊 CSS 里被误解的三角函数 &lt;code&gt;tan()&lt;/code&gt;，展示它其实超有用。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendmasters.com/blog/the-weird-parts-of-position-sticky&#34; title=&#34;The Weird Parts of position: sticky&#34; rel=&#34;noopener ugc nofollow&#34;&gt;The Weird Parts of position: sticky&lt;/a&gt;：一篇深入剖析 &lt;code&gt;position: sticky&lt;/code&gt; 在实际开发中为何“失灵”的技术文章，帮你搞懂它那些令人抓狂的常见失效原因。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.stefanjudis.com/today-i-learned/pathlength-makes-makes-svg-path-animations-easier-to-manage/&#34; title=&#34;pathLength 使 SVG 路径动画更容易管理&#34; rel=&#34;noopener ugc nofollow&#34;&gt;pathLength 使 SVG 路径动画更容易管理&lt;/a&gt;：用 pathLength 属性轻松搞定 SVG 路径动画，不再为计算路径长度烦恼。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.polarsignals.com/blog/posts/2025/11/04/javascript-source-maps-internals&#34; title=&#34;JavaScript Source Map 的内部工作原理&#34; rel=&#34;noopener ugc nofollow&#34;&gt;JavaScript Source Map 的内部工作原理&lt;/a&gt;：硬核好文，还是很棒的交互式，带你深入了解 Source Map 背后的结构与编码秘密，让调试压缩后的 JS 不再黑盒。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://css-tricks.com/getting-creative-with-small-screens/&#34; title=&#34;利用小屏幕发挥创意&#34; rel=&#34;noopener ugc nofollow&#34;&gt;利用小屏幕发挥创意&lt;/a&gt;：展示了如何运用 CSS 工具如 &lt;code&gt;@container queries&lt;/code&gt;、&lt;code&gt;CSS Grid&lt;/code&gt;、&lt;code&gt;Scroll Snap&lt;/code&gt; 与 &lt;code&gt;shape-outside&lt;/code&gt;，创造富有节奏和层次的小屏幕布局。核心思想是不要让响应式设计变成“折叠”，而要让设计随设备与姿态（orientation）而“适应”，让视觉叙事在任何尺寸下保持鲜活。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;css-&#34;&gt;CSS 新特性&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.logrocket.com/css-text-wrap-balance-vs-text-wrap-pretty/&#34; title=&#34;什么时候使用 CSS text-wrap: balance 和 text-wrap: pretty&#34; rel=&#34;noopener ugc nofollow&#34;&gt;什么时候使用 CSS text-wrap: balance 和 text-wrap: pretty&lt;/a&gt;：介绍了 text-wrap 在浏览器支持成熟后的两种热门用法 balance 和 pretty ，以及他们应该在什么时候使用。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;balance 通过调整行长平衡视觉比例，提升排版对称性，小段文本（标题、卡片内容）适合 balance。&lt;br /&gt;
pretty 避免“孤字行”(orphans)，平衡段落末行排版。段落性文字可尝试 pretty 以优化阅读体验。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendmasters.com/blog/staggered-animation-with-css-sibling-functions/&#34; title=&#34;Staggered Animation with CSS sibling Functions&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Staggered Animation with CSS sibling Functions&lt;/a&gt;：介绍了 CSS 中新的 &lt;code&gt;sibling-index()&lt;/code&gt; 和 &lt;code&gt;sibling-count()&lt;/code&gt; 两个函数，它们让我们可以直接通过纯 CSS 计算元素在兄弟节点中的相对位置，实现无需 JavaScript 的 “交错动画（Staggered Animation）”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://piccalil.li/blog/some-practical-examples-of-view-transitions-to-elevate-your-ui/?ref=articles-rss-feed&#34; title=&#34;一些实用的视图转换的例子来增强你的 UI&#34; rel=&#34;noopener ugc nofollow&#34;&gt;一些实用的视图转换的例子来增强你的 UI&lt;/a&gt;：用几个实用范例展示如何利用 View Transition API 让网页交互动画更顺滑。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-2&#34;&gt;工具推荐与库更新&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/sindresorhus/image-dimensions&#34; title=&#34;sindresorhus/image-dimensions&#34; rel=&#34;noopener&#34;&gt;sindresorhus/image-dimensions&lt;/a&gt;：一个轻量工具，可在任何现代 JavaScript 环境快速获取 JPEG、PNG/APNG、GIF、WebP、AVIF 和 HEIF 图像格式的像素宽度和高度。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://storybook.js.org/blog/storybook-10/&#34; title=&#34;Storybook 10&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Storybook 10&lt;/a&gt;：全面转向仅 ESM 模块，支持 Vitest 4。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://htmx.org/essays/the-fetchening/&#34; title=&#34;htmx 4.0 Alpha&#34; rel=&#34;noopener ugc nofollow&#34;&gt;htmx 4.0 Alpha&lt;/a&gt;：由 v2 直接跃升 v4 的架构演进。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://resend.com/blog/react-email-5&#34; title=&#34;React Email 5.0&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React Email 5.0&lt;/a&gt;：新版本带来深色模式切换与 Tailwind 4 支持。&lt;/li&gt;
&lt;li&gt;其他更新：包括 Turborepo 2.6、Video.js 10、ESLint Config Inspector v1.4。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;codepen-&#34;&gt;Codepen 精选&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/jh3y/pen/wBMXOVz&#34; title=&#34;CSS 作用域自定义属性轨迹网格&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS 作用域自定义属性轨迹网格&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在 Jhey Tompkins 设计的这款可配置 Pen 中，将鼠标悬停在加号网格上，即可观看它们变换颜色和旋转。您还可以通过顶部的控制面板调整网格大小和主题颜色。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/3e06142e131775bee2a5af0652950f7e.gif&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/DenDionigi/pen/bNEvoMN&#34; title=&#34;Cards path marquee CSS only&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Cards path marquee CSS only&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在 DenDionigi 制作的这款现代字幕动画中，卡片淡入，过山车式循环，然后淡出。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/4d705a56f02230769c49df303be0b2fe.gif&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/pimskie/pen/jEWKQdB&#34; title=&#34;Chrome：使用 @function 的 CSS 滚动&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Chrome：使用 @function 的 CSS 滚动&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;pimskie 用这个滚动文字特效向我们展示了“超赞”的效果。向下滚动，你会看到文字从左右两侧逐渐融合，然后查看 CSS 面板，了解实现这一效果的自定义 @function 函数。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/e89fe0f7891a319eea62562567f7cb77.gif&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;refs&#34;&gt;Refs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://codepen.io/spark/480&#34; title=&#34;Codepen Spark #480&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Codepen Spark #480&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://javascriptweekly.com/issues/760&#34; title=&#34;JavaScript Weekly #760&#34; rel=&#34;noopener ugc nofollow&#34;&gt;JavaScript Weekly #760&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://nodeweekly.com/issues/599&#34; title=&#34;Node Weekly Issue 599: November 4, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Node Weekly Issue 599: November 4, 2025&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      
    </content>
    
  </entry>
  
  <entry>
    <title><![CDATA[FE Bits Vol.13｜TypeScript 首次成为 GitHub 最常用语言、VoidZero A 轮融资 1250 万美元]]></title>
    <link rel="alternate" type="text/html" href="https://news.cosine.ren/p/vol-13" />
    <id>https://news.cosine.ren/p/vol-13#13541</id>
    <author>
      <name>cosine</name>
    </author>
    <published>2025-11-02T13:50:00Z</published>
    <updated>2025-11-02T13:50:00Z</updated>
    
    <content type="html">
      &lt;blockquote&gt;
&lt;p&gt;本周刊更新时间期望是在每周天，网站在建设中……&lt;br /&gt;
目前推荐使用 &lt;a href=&#34;https://folo.is/&#34; title=&#34;Folo&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Folo&lt;/a&gt; 订阅本周刊的 &lt;a href=&#34;https://quaily.com/cosine/feed/atom&#34; title=&#34;Quaily RSS&#34; rel=&#34;noopener&#34;&gt;Quaily RSS&lt;/a&gt;。&lt;br /&gt;
公众号 前端周周谈 FE Bits，点击阅读原文链接可查看原文。&lt;br /&gt;
QQ 讨论小群 598022684，日常讨论前端技术 &amp;amp; 生活，也可在群里投稿自己的文章，随意加入，比较偏向粉丝群的性质～&lt;br /&gt;
本周刊同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;，欢迎关注。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;今天是 2025 年 11 月 2 日，星期天。&lt;/p&gt;
&lt;p&gt;周五去九寨沟游玩了一天，超级棒，即使是阴天也不影响它的美，难怪说「九寨归来不看水」，真的是很美。&lt;/p&gt;
&lt;p&gt;九寨沟的交通是最折腾的，成都到九寨沟高铁 1 个半小时，高铁站到景区还要 2 个小时，一来一回快 7 个小时，一天特种兵行程的话真的巨累（建议俩天）但就算是现在这样据说也比以前交通方便多了，高铁站近几年才通的。&lt;/p&gt;
&lt;p&gt;景区的车辆调度确实快，除了换左右线的时候排队时间比较长（半小时）其他都挺快的，几分钟就能上车，这可是 4w 人的旺季。&lt;/p&gt;
&lt;p&gt;山里天气不像天气预报一样一直有雨，偶尔下一点点而已，带的伞都没用上。&lt;/p&gt;
&lt;p&gt;懒得暴走，所以先逛中线，然后坐车逛完了右线，去左线看长海-五彩池，这个行程感觉挺省力的。&lt;/p&gt;
&lt;p&gt;九寨沟秋景&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/5217e574a5a2ad3641ec703cb3facb26.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/e849096d3628b142dbcf25fc1770b0e8.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;中线的几个海子：&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/a5282ad4e324d736b97879a023464595.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/b7a0312a0f473160ad6a877c479ea4db.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/ecfcece196e14a7958635997412bbb55.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;五彩池&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/2fd075712d793a8167dbcf5fda9d4942.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;长海&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/73a1c1e4ba80b7c33bf72151563855ef.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/11/7c20dc480f4a1e4eb4ab7378a4751d54.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;生态与社区动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://developer.chrome.com/blog/new-in-chrome-142&#34; title=&#34;New in Chrome 142&#34; rel=&#34;noopener ugc nofollow&#34;&gt;New in Chrome 142&lt;/a&gt;：Chrome 142 引入了多项前端开发相关的新特性，包括用于滚动标记的 &lt;code&gt;:target-before&lt;/code&gt; 与 &lt;code&gt;:target-after&lt;/code&gt; 伪类、支持比较运算符的 CSS 样式容器查询 (style container queries) 与 &lt;code&gt;if()&lt;/code&gt; 函数的范围语法 (range syntax)，以及可用于交互触发的 &lt;code&gt;interestfor&lt;/code&gt; 属性。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.blog/news-insights/octoverse/octoverse-a-new-developer-joins-github-every-second-as-ai-leads-typescript-to-1/&#34; title=&#34;Octoverse：每秒钟都有一个新的开发者加入 GitHub， AI 将 TypeScript 带到了 #1&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Octoverse：每秒钟都有一个新的开发者加入 GitHub， AI 将 TypeScript 带到了 #1&lt;/a&gt;：2025 年 GitHub 的年度报告，比较有意思，摘了其中几个点看看：&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;GitHub 总用户达 1.8 亿，年增 3600 万，创下历史最高增长率。每秒新增 1 名开发者，印度贡献 500 万以上新用户，占全球新增 14%。&lt;/li&gt;
&lt;li&gt;生成式人工智能如今已成为开发中的标准配置。超过 110 万个公共代码库正在使用 LLM SDK，其中仅过去 12 个月就新增了 693,867 个项目（同比增长 178%）。开发者们还合并了创纪录的 5.187 亿个拉取请求（同比增长 29%），80% 的新开发者在第一周就开始使用 Copilot。&lt;/li&gt;
&lt;li&gt;TypeScript 首次成为 GitHub 最常用语言，超越 Python 和 JavaScript。即便如此，Python 在人工智能和数据科学工作负载方面仍然占据主导地位，而 JavaScript/TypeScript 生态系统的整体活跃度仍然高于 Python 本身。&lt;/li&gt;
&lt;li&gt;总计 3.95 亿个公共存储库托管了 11.2 亿次贡献和 5.187 亿次合并拉取请求——每一次都是一项记录。&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;还有很多很多数据，感兴趣的建议阅读原文。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://voidzero.dev/posts/announcing-series-a&#34; title=&#34;VoidZero Raises $12.5M Series A&#34; rel=&#34;noopener ugc nofollow&#34;&gt;VoidZero Raises $12.5M Series A&lt;/a&gt;：VoidZero 宣布获得 1250 万美元 A 轮融资，本轮融资旨在加速推进其统一 JavaScript 工具链「Vite+」的稳定发布，以及推动旗下开源项目的持续发展。团队引入多位优秀工程师，包括 &lt;code&gt;napi-rs&lt;/code&gt; 作者和多个 OSS 核心贡献者。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://bun.com/blog/vercel-adds-native-bun-support&#34; title=&#34;Vercel 现在支持 Bun 运行时&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Vercel 现在支持 Bun 运行时&lt;/a&gt;：Vercel 宣布正式支持 Bun Runtime（运行时），开发者现在可以直接在 Vercel 上运行基于 Bun 的应用。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://voidzero.dev/posts/whats-new-viteconf-2025&#34; title=&#34;ViteConf 2025 Recap&#34; rel=&#34;noopener ugc nofollow&#34;&gt;ViteConf 2025 Recap&lt;/a&gt;：ViteConf 2025 回顾，包括 Vite+、Oxlint JS 插件、Vite DevTools、Nitro v3、Vitest 4 及性能工具链新进展。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://react.dev/blog/2025/10/16/react-conf-2025-recap&#34; title=&#34;React Conf 2025 Recap&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React Conf 2025 Recap&lt;/a&gt;：React Conf 2025 回顾，展示了 React 生态最新成果，包括 React Compiler v1.0 正式版、React Foundation 成立、React 19.2 与 React Native 新架构的重大更新等。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.electronjs.org/blog/electron-39-0&#34; title=&#34;Electron 39&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Electron 39&lt;/a&gt;：Electron 39 发布，升级到 Chromium 142.0.7444.52、V8 14.2 和 Node 22.20.0 的升级。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;文章与视频&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.joshwcomeau.com/animation/linear-timing-function/&#34; title=&#34;原生 CSS 中的 Springs 和 Bounces&#34; rel=&#34;noopener ugc nofollow&#34;&gt;原生 CSS 中的 Springs 和 Bounces&lt;/a&gt;：介绍如何利用原生 CSS 的 linear() 函数实现类似物理弹簧(spring)和反弹(bounce)的动画效果，并探讨其优劣与应用方式。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://css-tricks.com/pure-css-tabs-with-details-grid-and-subgrid/&#34; title=&#34;使用 details 元素、网格和子网格实现纯 CSS Tabs&#34; rel=&#34;noopener ugc nofollow&#34;&gt;使用 details 元素、网格和子网格实现纯 CSS Tabs&lt;/a&gt;：介绍如何仅使用 HTML &lt;code&gt;&amp;lt;details&amp;gt;&lt;/code&gt; 元素与 CSS Grid / Subgrid 构建可访问的选项卡 (Tabs)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://piccalil.li/blog/start-implementing-view-transitions-on-your-websites-today/?ref=articles-rss-feed&#34; title=&#34;今天就开始在你的网站上使用视图转换吧&#34; rel=&#34;noopener ugc nofollow&#34;&gt;今天就开始在你的网站上使用视图转换吧&lt;/a&gt;：深入介绍如何在网站中应用 View Transition API 实现页面间的平滑转场动画。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://hyf.me/blog/claude-code-in-rolldown&#34; title=&#34;我使用 Claude Code 开发 Rolldown 的体验&#34; rel=&#34;noopener ugc nofollow&#34;&gt;我使用 Claude Code 开发 Rolldown 的体验&lt;/a&gt;：在 Rolldown 开发中高强度使用 Claude Code 进行真实开发的思考与经验分享。&lt;br /&gt;
从 &lt;a href=&#34;https://www.pseudoyu.com/posts/weekly_review_102&#34; title=&#34;周报 #102 - 我是如何使用 AI 的&#34; rel=&#34;noopener ugc nofollow&#34;&gt;周报 #102 - 我是如何使用 AI 的&lt;/a&gt; 里看到的文章，我觉得说的都挺对的，现在 AI 确实是很好的副驾驶了，我也是同时用着 codex / claude code / cursor 感觉爽翻天了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://alex.party/posts/2025-10-08-junior-dev-tip-scroll-up/&#34; title=&#34;Junior Dev Tip: &amp;#34;Scroll Up&amp;#34;&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Junior Dev Tip: &amp;quot;Scroll Up&amp;quot;&lt;/a&gt;：一次初级开发者调试错误的故事，提醒大家“多滚动一点，认真读错误信息”。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;大多数情况下，工具都会提供相关信息。真的只需要多花几秒钟，仔细阅读一下提示信息就行。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://tanstack.com/blog/directives-and-the-platform-boundary&#34; title=&#34;Directives and the Platform Boundary | TanStack Blog&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Directives and the Platform Boundary | TanStack Blog&lt;/a&gt;：探讨框架自创 “use server”、“use client” 等自定义指令 (Directive) 趋势。这些指令表面上像平台特性，却缺乏标准规范，模糊了语言与框架的界线，引发生态混乱、工具负担与可移植性风险。作者主张指令应保持极少且标准化，用于语言层；而具参数化、策略性或扩展需求的功能应采用显式 API（好文，No Directive！）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.lorenstew.art/blog/10-kanban-boards&#34; title=&#34;我创建了 10 次相同的应用：评估移动性能框架&#34; rel=&#34;noopener ugc nofollow&#34;&gt;我创建了 10 次相同的应用：评估移动性能框架&lt;/a&gt;：作者以构建同一款 Kanban App 十次的方法，系统测试十个现代前端框架在移动端性能上的差异。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://tedium.co/2025/10/25/web-dead-predictions-george-colony/&#34; title=&#34;一个不断预测 Web 死亡的人&#34; rel=&#34;noopener ugc nofollow&#34;&gt;一个不断预测 Web 死亡的人&lt;/a&gt;：回顾 Forrester 创始人 George Colony 30 年来多次预测 “Web 已死” 的荒谬历史，从最初批评 Web 静态、缺乏交互性，到 2000 年代鼓吹 “XInternet”，再到 2010 年代推崇 “App Internet”，以及 2020 年代声称生成式 AI 会取代 Web，揭示技术悲观主义的循环与 Web 的持久生命力。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;css-&#34;&gt;CSS 新特性&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://css-tip.com/screen-dimension/&#34; title=&#34;不使用 JavaScript 获取屏幕宽度和高度&#34; rel=&#34;noopener ugc nofollow&#34;&gt;不使用 JavaScript 获取屏幕宽度和高度&lt;/a&gt;：介绍如何使用纯 CSS 获取屏幕宽高（像素值），无需使用 JavaScript。需注意的是，Safari 上应使用 dvh 才准确，其中包括了 &lt;a href=&#34;https://css-tricks.com/css-typed-arithmetic/#aa-wrapping-up-the-dawn-of-computational-css&#34; title=&#34;CSS 类型化算术 (Typed Arithmetic)&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS 类型化算术 (Typed Arithmetic)&lt;/a&gt; 这个技巧，100vw/1px 得到纯数字的 px 值，&lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/CSS/calc#browser_compatibility&#34; title=&#34;CSS Typed Arithmetic 支持度&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS Typed Arithmetic 支持度&lt;/a&gt;为 Safari 26 / Chrome 140，Firefox 暂不支持。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendmasters.com/blog/perfectly-pointed-tooltips-a-foundation/&#34; title=&#34;精准定位的 Tooltip：基础篇&#34; rel=&#34;noopener ugc nofollow&#34;&gt;精准定位的 Tooltip：基础篇&lt;/a&gt;：本文详细介绍了如何利用现代 CSS 的锚点定位 (Anchor Positioning) API 来创建能够智能定位、避免溢出的工具提示 (Tooltip)，全程无需 JavaScript。（是之前 CSS Tips 锚点定位一系列教程的总结，都是 Temani Afif 写的，不同的是这篇讲解的比较多）&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-2&#34;&gt;趣味项目与工具&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://spoilerjs.sh4jid.me/&#34; title=&#34;spoilerjs | Beautiful Spoiler Effects&#34; rel=&#34;noopener ugc nofollow&#34;&gt;spoilerjs | Beautiful Spoiler Effects&lt;/a&gt;：一个框架无关的 Web Components，用粒子动画实现优雅的“剧透（Spoiler）”效果。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://ndabap.github.io/vue-command/&#34; title=&#34;vue-command&#34; rel=&#34;noopener ugc nofollow&#34;&gt;vue-command&lt;/a&gt;：一个基于 Vue.js 的功能齐全、特性丰富的终端模拟器组件。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;codepen-&#34;&gt;Codepen 精选&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/jh3y/pen/JoGpOGV&#34; title=&#34;Details &amp;amp; Summary 🍏 ::details-content/content-visibility&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Details &amp;amp; Summary 🍏 ::details-content/content-visibility&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Jhey Tompkins 为 details &amp;amp; summary 构建了一个出色的交互式展示，使用 &lt;code&gt;::details-content&lt;/code&gt; / &lt;code&gt;content-visibility&lt;/code&gt; 纯 CSS 实现，无需 JavaScript。&amp;quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/10/6911b49209e50dad930e0a131867cdf4.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/cbolson/pen/vELrOPz&#34; title=&#34;自定义曲线滚动条&#34; rel=&#34;noopener ugc nofollow&#34;&gt;自定义曲线滚动条&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Chris Bolson 分享了曲线滚动条主题的两种变体：一种是超级曲线，另一种是更微妙的曲线。&amp;quot;滚动条遵循容器的边框半径，长度根据内容数量计算&amp;quot;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;核心原理是隐藏原生滚动条，在容器上方叠加一层 SVG，画一条沿容器圆角轮廓的轨迹，并将滚动条当作这条路径上的一段子路径来渲染，用视口高度与内容高度的比例计算滚动条长度。&lt;/p&gt;
&lt;p&gt;拖动时根据指针的垂直位置换算滚动比例写回 scrollTop，滚动与窗口尺寸变化时同步重算路径，颜色与粗细则由 CSS 变量和交互状态控制。&lt;/p&gt;
&lt;p&gt;酷是挺酷的，但是感觉 UX 不太符合用户直觉？&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/10/efc5ef51443edf61a97d3c00a9bb1ab7.gif&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/stoumann/pen/JoGrEBJ&#34; title=&#34;Circular Ranges&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Circular Ranges&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Mads Stoumann 演示了他的 &amp;quot;带有可选索引和标签的圆形范围滑块自定义元素&amp;quot;，并展示了从部分曲线到完整圆形的圆形范围滑块。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/10/b7abd1016f44e8e5810d758b6ddd4735.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/TheMOZZARELLA/pen/MYKErbJ&#34; title=&#34;Frutiger Aero Card&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Frutiger Aero Card&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;MOZZARELLA 以 CSS 重现 &lt;a href=&#34;https://en.wikipedia.org/wiki/Frutiger_Aero&#34; title=&#34;Frutiger Aero&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Frutiger Aero&lt;/a&gt; 风格的亮面卡片，呈现柔和渐变光效。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;好亮的风格。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/10/7d01cbca68972a724621792f9c5f86ce.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/finnhvman/pen/pvgaBQo&#34; title=&#34;Wood Board&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Wood Board&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Bence Szabo 发布仅 353 字节的 SVG 木纹纹理，是其 &lt;a href=&#34;https://codepen.io/collection/DRMKdB&#34; title=&#34;#PetitePatterns (极简纹理系列)&#34; rel=&#34;noopener ugc nofollow&#34;&gt;#PetitePatterns (极简纹理系列)&lt;/a&gt;之一。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/10/01508ab31545af8399ef41866a488cf5.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;refs&#34;&gt;Refs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://codepen.io/spark/478&#34; title=&#34;Codepen Spark #478&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Codepen Spark #478&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://javascriptweekly.com/issues/759&#34; title=&#34;JavaScript Weekly Issue 759: October 31, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;JavaScript Weekly Issue 759: October 31, 2025&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://nodeweekly.com/issues/598&#34; title=&#34;Node Weekly Issue 598: October 28, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Node Weekly Issue 598: October 28, 2025&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://react.statuscode.com/issues/449&#34; title=&#34;React Status Issue 449: October 29, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React Status Issue 449: October 29, 2025&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://frontendfoc.us/issues/715&#34; title=&#34;Frontend Focus Issue 715: October 29, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Frontend Focus Issue 715: October 29, 2025&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      
    </content>
    
  </entry>
  
  <entry>
    <title><![CDATA[FE Bits Vol.12｜Next.js 16 发布、Docusaurus 3.9 AI 搜索、ChatGPT Atlas 发布]]></title>
    <link rel="alternate" type="text/html" href="https://news.cosine.ren/p/vol-12" />
    <id>https://news.cosine.ren/p/vol-12#13393</id>
    <author>
      <name>cosine</name>
    </author>
    <published>2025-10-26T10:50:00Z</published>
    <updated>2025-10-26T10:50:00Z</updated>
    
    <content type="html">
      &lt;blockquote&gt;
&lt;p&gt;本周刊更新时间期望是在每周天，网站在建设中……&lt;br /&gt;
目前推荐使用 &lt;a href=&#34;https://folo.is/&#34; title=&#34;Folo&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Folo&lt;/a&gt; 订阅本周刊的 &lt;a href=&#34;https://quaily.com/cosine/feed/atom&#34; title=&#34;Quaily RSS&#34; rel=&#34;noopener&#34;&gt;Quaily RSS&lt;/a&gt;。&lt;br /&gt;
公众号 前端周周谈 FE Bits，点击阅读原文链接可查看原文。&lt;br /&gt;
QQ 讨论小群 598022684，日常讨论前端技术 &amp;amp; 生活，也可在群里投稿自己的文章，随意加入，比较偏向粉丝群的性质～&lt;br /&gt;
本周刊同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;，欢迎关注。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;今天是 2025 年 10 月 26 日，星期天。&lt;/p&gt;
&lt;p&gt;这周终于闲一些了，沉迷了一阵子土豆兄弟（类吸血鬼幸存者游戏），这类游戏之前玩过通神榜，但是土豆兄弟一直没玩过。&lt;/p&gt;
&lt;p&gt;下周就要去成都呆一周了，周五请假去九寨沟玩耍，浅浅期待一下。&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;生态与社区动态&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://nextjs.org/blog/next-16&#34; title=&#34;Next.js 16 发布&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Next.js 16 发布&lt;/a&gt;：Next.js 16 正式版，此次更新让 Turbopack 成为默认打包器，React Compiler 支持正式稳定，并且引入了全新的 Cache Components、Next.js Devtools MCP，统一代理文件 &lt;code&gt;proxy.ts&lt;/code&gt; 取代 &lt;code&gt;middleware.ts&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://openai.com/index/introducing-chatgpt-atlas/&#34; title=&#34;介绍 ChatGPT Atlas&#34; rel=&#34;noopener ugc nofollow&#34;&gt;介绍 ChatGPT Atlas&lt;/a&gt;：OpenAI 推出嵌入 ChatGPT 的新一代浏览器 ChatGPT Atlas，将 ChatGPT 深度整合进网页使用场景，使 AI 能理解网页内容、保留浏览记忆、自动执行任务。用户在浏览时可直接与 ChatGPT 对话、分析网页或完成操作，无需切换应用。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://sandbox.cloudflare.com/&#34; title=&#34;Cloudflare Sandbox SDK&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Cloudflare Sandbox SDK&lt;/a&gt;：Cloudflare 推出的安全、可扩展的云端沙盒环境，可在隔离容器中执行命令、运行服务、操作文件并生成可公开访问的 URL。（适用于 Workers 付费计划，&lt;a href=&#34;https://developers.cloudflare.com/sandbox/&#34; title=&#34;介绍文章&#34; rel=&#34;noopener ugc nofollow&#34;&gt;介绍文章&lt;/a&gt;）&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.infoq.com/news/2025/10/docusaurus-3-9-ai-search&#34; title=&#34;Meta 发布 Docusaurus 3.9，带有新的 AI 搜索功能&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Meta 发布 Docusaurus 3.9，带有新的 AI 搜索功能&lt;/a&gt;：Docusaurus 3.9 发布，新版本引入 Algolia DocSearch v4 的 AI 搜索与改进的国际化配置。&lt;/p&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;文章与视频&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://allthingssmitty.com/2025/10/20/rethinking-async-loops-in-javascript/&#34; title=&#34;重新思考 JavaScript 中的异步循环&#34; rel=&#34;noopener ugc nofollow&#34;&gt;重新思考 JavaScript 中的异步循环&lt;/a&gt;：分析了在 JavaScript 中使用 &lt;code&gt;await&lt;/code&gt; 在循环语句时常见的性能与语义陷阱，说明了 &lt;code&gt;for...of&lt;/code&gt;、&lt;code&gt;map()&lt;/code&gt;、&lt;code&gt;Promise.all()&lt;/code&gt;、&lt;code&gt;Promise.allSettled()&lt;/code&gt; 及第三方工具（如 &lt;code&gt;p-limit&lt;/code&gt;）在不同异步并发需求下的使用场景与利弊。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.developerway.com/posts/react-server-components-performance&#34; title=&#34;React 服务器组件：它们真的能提高性能吗？&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React 服务器组件：它们真的能提高性能吗？&lt;/a&gt;：一篇以数据为主的实证研究，比较 CSR、SSR 与 RSC 的性能优劣及实现差异。&lt;/p&gt;
&lt;p&gt;结果显示，CSR 初次加载最慢但交互最快；SSR 可改善 LCP 但是有“无交互”的空窗期；RSC 若结合 Streaming 和 Suspense 可获得最佳平衡，但实际迁移复杂且对架构要求高。单纯引入 RSC 并不会自动带来性能提升，收益主要来自异步数据流与渲染策略的改写。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;如果应用是客户端和服务器组件的混合体，单独的服务端组件并不能提高性能。它们无法减少足够的大小以产生可测量的性能影响。流式传输和 Suspense 才是关键。主要性能优势来自于完全重写数据获取，使其成为服务端组件优先。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://github.blog/open-source/inside-the-breach-that-broke-the-internet-the-untold-story-of-log4shell/&#34; title=&#34;互联网被攻破的内幕：Log4Shell 不为人知的故事&#34; rel=&#34;noopener ugc nofollow&#34;&gt;互联网被攻破的内幕：Log4Shell 不为人知的故事&lt;/a&gt;：讲述 Log4j 维护者及开源社区如何应对震撼全球互联网的 Log4Shell 漏洞事件，以及这一事件如何推动开源安全体系的重塑。（还挺有趣的）&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://overreacted.io/how-to-fix-any-bug/&#34; title=&#34;How to Fix Any Bug&#34; rel=&#34;noopener ugc nofollow&#34;&gt;How to Fix Any Bug&lt;/a&gt;：Dan Abramov 以一个真实调试案例，阐述系统化调试思维。从找到可复现 (repro) 开始，逐步缩小问题范围直到发现根因。这是一篇少有的教你如何进行调试，解决问题的文章。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendfoc.us/link/175928/web&#34; title=&#34;25 分钟了解 25 个 CSS 特性&#34; rel=&#34;noopener ugc nofollow&#34;&gt;25 分钟了解 25 个 CSS 特性&lt;/a&gt;：Adam Argyle 介绍包括滚动驱动动画、数值函数、自定义滚动条样式等在内的 25 个新特性，并提供演示文稿。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://web.dev/blog/baseline-urlpattern&#34; title=&#34;URLPattern 现在是 Baselin 可用的&#34; rel=&#34;noopener ugc nofollow&#34;&gt;URLPattern 现在是 Baselin 可用的&lt;/a&gt;：介绍了已进入 Baseline 的新浏览器功能 &lt;strong&gt;URLPattern API&lt;/strong&gt;，它为 URL 匹配和路由提供了标准、简洁且高性能的原生解决方案。可以查阅 &lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/API/URLPattern&#34; title=&#34;MDN Web Docs&#34; rel=&#34;noopener ugc nofollow&#34;&gt;MDN Web Docs&lt;/a&gt; 了解完整信息。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://2ality.com/2025/10/css-layout.html&#34; title=&#34;面向初学者的 Web 开发：CSS 布局——flexbox、网格、媒体查询和容器查询&#34; rel=&#34;noopener ugc nofollow&#34;&gt;面向初学者的 Web 开发：CSS 布局——flexbox、网格、媒体查询和容器查询&lt;/a&gt;：面向新手的 CSS 布局指南，系统讲解 flexbox、grid、media query 与 container query 的核心概念与实践。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://dropletdrift.com/smarter-fluid-typography-with-css-if-and-clamp/&#34; title=&#34;使用 CSS if() 和 clamp() 实现更智能的流体排版&#34; rel=&#34;noopener ugc nofollow&#34;&gt;使用 CSS if() 和 clamp() 实现更智能的流体排版&lt;/a&gt;：介绍如何结合 CSS &lt;code&gt;if()&lt;/code&gt; 与 &lt;code&gt;clamp()&lt;/code&gt; 函数，实现更智能的响应式文字排版体系。&lt;br /&gt;
&lt;code&gt;clamp()&lt;/code&gt; 简化了最小值、理想值与最大值的控制，而 &lt;code&gt;if()&lt;/code&gt; 的引入则让样式具备条件判断能力，可根据文本类型（如标题或正文）动态调整缩放比例，从而实现更灵活、可复用且可渐进增强的字体响应方案。&lt;/p&gt;
&lt;h2 id=&#34;css-&#34;&gt;CSS 新特性&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://www.zhangxinxu.com/wordpress/2025/10/css-reading-flow-order/&#34; title=&#34;CSS reading-flow 和 reading-order 属性简介&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS reading-flow 和 reading-order 属性简介&lt;/a&gt;：对 CSS 新特性 &lt;code&gt;reading-flow&lt;/code&gt; 与 &lt;code&gt;reading-order&lt;/code&gt; 的深入解读，它们解决了传统 &lt;code&gt;tabindex&lt;/code&gt; 在复杂布局下控制焦点顺序困难的问题。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://css-tip.com/tooltip-anchor-3/&#34; title=&#34;Dynamic Tooltip Position with Anchor Positioning III&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Dynamic Tooltip Position with Anchor Positioning III&lt;/a&gt;：使用纯 CSS 的锚点定位新特性实现 tooltip 的自适应位置调整，是系列文章中的第三篇文章，这次考虑了角落位置。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://nerdy.dev/closedby-any&#34; title=&#34;closedBy=any&#34; rel=&#34;noopener ugc nofollow&#34;&gt;closedBy=any&lt;/a&gt;：介绍 HTML &lt;code&gt;&amp;lt;dialog&amp;gt;&lt;/code&gt; 元素中 &lt;code&gt;closedBy=&amp;quot;any&amp;quot;&lt;/code&gt; 属性的用法，让对话框可通过点击外部轻松关闭。此功能已在 Chrome 和 Firefox 中实现，计 Safari 也会支持。&lt;/p&gt;
&lt;h2 id=&#34;heading-2&#34;&gt;趣味项目与工具&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://colormate.site/palette-generator&#34; title=&#34;ColorMate&#34; rel=&#34;noopener ugc nofollow&#34;&gt;ColorMate&lt;/a&gt;：又一款面向设计师与开发者的免费在线配色工具，可快速生成符合无障碍标准的调色板。用户可提取图片配色、即时预览 UI 效果、进行对比度测试，并将结果以 HEX、CSS 或 PNG 格式导出。它还提供由 AI 命名、锁定颜色及实时生成新方案的功能，并收录多种热门配色示例。&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/10/f472571f062deef6aa58bc182902e90c.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;codepen-&#34;&gt;Codepen 精选&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/thebabydino/pen/ogbGXoj&#34; title=&#34;纯 CSS 进度环 + 地图曲率（凹面圆角）&#34; rel=&#34;noopener ugc nofollow&#34;&gt;纯 CSS 进度环 + 地图曲率（凹面圆角）&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Ana Tudor 用这种精湛的凹面圆角效果回应了 &lt;a href=&#34;https://codepen.io/thebabydino/pen/ogbGXoj&#34; title=&#34;Reddit 的请求&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Reddit 的请求&lt;/a&gt;，使用了 shape() 和 mask 后备方案。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/10/b7c191efc5a48eeb90228f3bc3510c64.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/filipz/pen/JoGNQzm&#34; title=&#34;threejs/gsap 液体形态幻灯片&#34; rel=&#34;noopener ugc nofollow&#34;&gt;threejs/gsap 液体形态幻灯片&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Filip Zrnzevic 将 GSAP 和 WebGL 结合起来，实现了华丽的液体幻灯片过渡效果。点击预览并按下 &amp;quot;H&amp;quot; 键打开控制面板，尝试所有不同的效果。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/10/664752ee57e87cad6faa450a3c303107.gif&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;refs&#34;&gt;Refs&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://nodeweekly.com/issues/597&#34; title=&#34;Node Weekly Issue 597: October 21, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Node Weekly Issue 597: October 21, 2025&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;https://frontendfoc.us/issues/714&#34; title=&#34;Frontend Focus Issue 714: October 22, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Frontend Focus Issue 714: October 22, 2025&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;https://javascriptweekly.com/issues/758&#34; title=&#34;JavaScript Weekly Issue 758: October 24, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;JavaScript Weekly Issue 758: October 24, 2025&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;https://codepen.io/spark/477&#34; title=&#34;CodePen Spark #477&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CodePen Spark #477&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;https://codepen.io/spark/476&#34; title=&#34;CodePen Spark #476&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CodePen Spark #476&lt;/a&gt;&lt;/p&gt;

      
    </content>
    
  </entry>
  
  <entry>
    <title><![CDATA[FE Bits Vol.11｜React Native 0.82 新架构落地、Bun 1.3 全栈运行时]]></title>
    <link rel="alternate" type="text/html" href="https://news.cosine.ren/p/vol-11" />
    <id>https://news.cosine.ren/p/vol-11#13220</id>
    <author>
      <name>cosine</name>
    </author>
    <published>2025-10-19T11:00:00Z</published>
    <updated>2025-10-19T11:00:00Z</updated>
    
    <content type="html">
      &lt;blockquote&gt;
&lt;p&gt;本周刊更新时间期望是在每周天，网站在建设中……&lt;br /&gt;
目前推荐使用 &lt;a href=&#34;https://folo.is/&#34; title=&#34;Folo&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Folo&lt;/a&gt; 订阅本周刊的 &lt;a href=&#34;https://quaily.com/cosine/feed/atom&#34; title=&#34;Quaily RSS&#34; rel=&#34;noopener&#34;&gt;Quaily RSS&lt;/a&gt;。&lt;br /&gt;
公众号 前端周周谈 FE Bits，点击阅读原文链接可查看原文。&lt;br /&gt;
QQ 讨论小群 598022684，日常讨论前端技术 &amp;amp; 生活，也可在群里投稿自己的文章，随意加入，比较偏向粉丝群的性质～&lt;br /&gt;
本周刊同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;，欢迎关注。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;今天是 2025 年 10 月 19 日，星期天。&lt;/p&gt;
&lt;p&gt;这周也在忙项目，天天在家远程办公，搬完家总算安定下来一些了，想了想感觉好久没有出去旅游了，所以买了 10 月 29 号到成都的机票，准备去成都呆一周，周末去九寨沟玩耍，希望一切顺利吧～去九寨沟是我小时候的梦想之一，想要去看看秋天的九寨沟，在最佳观赏时期看看彩林和五花海。&lt;/p&gt;
&lt;p&gt;很有意思，以前上大学的时候，没钱没空，所以也不喜欢旅游，现在的话反而觉得能到处跑跑看看风景也挺好的，又喜欢上了旅游，今年 5 月份去云南大理旅居了一个月的感觉非常爽，所以还想多尝试尝试不同城市。&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;生态与社区动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.cloudflare.com/unpacking-cloudflare-workers-cpu-performance-benchmarks/&#34; title=&#34;拆解 Cloudflare Workers CPU 性能基准测试&#34; rel=&#34;noopener ugc nofollow&#34;&gt;拆解 Cloudflare Workers CPU 性能基准测试&lt;/a&gt;：Cloudflare 不愧是赛博活菩萨捏，大气的，10 月 5 日 Vercel CEO 发推说 &lt;a href=&#34;https://x.com/rauchg/status/1974508248687632740&#34; title=&#34;Worker 的性能差&#34; rel=&#34;noopener&#34;&gt;Worker 的性能差&lt;/a&gt;，仅仅一周，Cloudflare 就承认错误并修复，发了这篇分析文章，甚至还在某些情况下帮助 Vercel 加速了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.firefox.com/en-US/firefox/144.0/releasenotes/&#34; title=&#34;Firefox 144 发布&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Firefox 144 发布&lt;/a&gt;，支持了 View Transitions API Level 1，现在所有主流浏览器现在都支持视图过渡。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;MDN 发布了一个适合初学者的 &lt;a href=&#34;https://developer.mozilla.org/en-US/blog/view-transitions-beginner-guide/&#34; title=&#34;CSS View Transitions 入门指南&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS View Transitions 入门指南&lt;/a&gt;，帮助开发者理解视图过渡动画的基础概念。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://bun.com/blog/bun-v1.3&#34; title=&#34;Bun 1.3&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Bun 1.3&lt;/a&gt;：以「全栈运行时」为核心定位的最大版本更新，Bun 1.3 意图将 Bun 打造成一个包含所有功能的全栈 JavaScript 运行时。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://reactnative.dev/blog/2025/10/08/react-native-0.82&#34; title=&#34;React Native 0.82&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React Native 0.82&lt;/a&gt;：正式成为首个完全基于“新架构 (New Architecture)”运行的版本，标志着旧架构时代的结束。该版本引入实验性的 Hermes V1 引擎，默认集成 React 19.1.1，并增加 DOM Node APIs 支持，使原生组件可用 DOM 风格方法访问。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://nextjs.org/blog/next-16-beta&#34; title=&#34;Next.js 16 (beta)&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Next.js 16 (beta)&lt;/a&gt;：Next.js 16 测试版发布，全面引入稳定版 Turbopack、改进缓存系统与路由架构，并支持 React Compiler 与 React 19.2 特性、改进默认配置、移除旧实验功能。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://nodejs.org/en/blog/release/v25.0.0&#34; title=&#34;Node.js v25.0.0 发布&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Node.js v25.0.0 发布&lt;/a&gt;：将 V8 升级到 14.1，带来了主要的性能提升，内置了 base64/hex 转换，以及持续进行的 WebAssembly 和 JIT 管道优化。默认启用 Web Storage、新增 &lt;code&gt;--allow-net&lt;/code&gt; 权限参数、改进 &lt;code&gt;JSON.stringify&lt;/code&gt; 性能。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;文章与视频&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.debugbear.com/blog/optimize-viewport-for-mobile&#34; title=&#34;如何优化移动设备的视口以实现更快的交互&#34; rel=&#34;noopener ugc nofollow&#34;&gt;如何优化移动设备的视口以实现更快的交互&lt;/a&gt;：讲解如何优化移动端视口 (viewport) 以减少点击延迟、提升交互速度与性能，并以 Qatar Airways 官网为反例分析常见误区。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendmasters.com/blog/50-reasons-to-build-a-website/&#34; title=&#34;50 Reasons to Build a Website&#34; rel=&#34;noopener ugc nofollow&#34;&gt;50 Reasons to Build a Website&lt;/a&gt;：以 50 个生活化的理由，回答 “为什么在 2025 年仍然要建网站” 这个问题，我喜欢这些理由。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;「你的乐队需要有一个网站，这是肯定的」&lt;br /&gt;
「你刚开始接触观鸟，你想要一个网站来发布你看到的酷鸟」&lt;br /&gt;
「你认为网络技术可以像油画和画布一样，成为艺术家的工具。你制作网站就像画家作画一样」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://pzarycki.com/en/posts/js-null/&#34; title=&#34;Why typeof null === object&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Why typeof null === object&lt;/a&gt;：特别深入的解析，解释为什么在 JavaScript 中 &lt;code&gt;typeof null&lt;/code&gt; 会返回 &lt;code&gt;object&lt;/code&gt;，作者复原了早期 C 语言实现及源码宏定义，揭示 &lt;code&gt;null&lt;/code&gt; 被识别为对象的根本原因是早期 32 位系统的对齐与标记约定。尽管这一问题可轻易修复，但考虑到巨大的兼容性影响，标准委员会选择保留这一行为，使它成为语言历史上的经典遗产。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://denodell.com/blog/html-best-kept-secret-output-tag&#34; title=&#34;HTML 最鲜为人知的秘密：output 标签&#34; rel=&#34;noopener ugc nofollow&#34;&gt;HTML 最鲜为人知的秘密：output 标签&lt;/a&gt;：介绍了 HTML 中一个鲜为人知但功能强大的 &amp;lt;output&amp;gt; 标签，它能在网页上自然地显示计算或用户操作结果，并具备天然的无障碍（Accessibility）支持，但却一直被忽略。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://alfy.blog/2025/10/16/hidden-cost-of-url-design.html&#34; title=&#34;URL 设计中隐藏的成本&#34; rel=&#34;noopener ugc nofollow&#34;&gt;URL 设计中隐藏的成本&lt;/a&gt;：作者回顾在为客户构建电商平台时，以“简洁扁平 (flat)”的 URL 结构取代分层路径的决策，虽然提升了用户体验，却带来了后端性能下降与运维成本上升。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;当我们为客户设计一个电子商务平台时，我们做出了一个看似简单、用户友好的决定：使用简洁的扁平 URL。产品位于 /nike-air-zoom ，类别位于 /shoes ，页面位于 /about-us 。没有前缀，没有 /product/ 或 /category/ 的杂乱。路径简单，感觉简约。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;这个草率做出的决定，没有经过适当的讨论，后来让我们花费了数小时进行优化。&lt;br /&gt;
问题不在于 URL 本身。问题在于我们将 URL 设计视为一个用户体验决策，而实际上它是一个具有连锁技术影响的根本性架构决策。每次对应用程序的请求都会触发两次后端 API 调用。每个爬取格式不正确的 URL 的机器人都会击中数据库两次。每个 404 错误都很昂贵。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;本文并非探讨你已读过无数次的 URL 最佳实践（保持 URL 简短、避免特殊字符、使用连字符而非下划线）。它要讨论的是鲜少被提及的议题：URL 结构如何塑造整个应用程序的架构、性能特征及运营成本。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://daverupert.com/2025/10/custom-elements-manifest-killer-feature/&#34; title=&#34;Web Components 的杀手级特性&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Web Components 的杀手级特性&lt;/a&gt;：深入介绍了 Custom Elements Manifest (CEM) —— Web Components 生态中一个由社区推动的 JSON 标准，用于自动化提取与共享组件 API 信息，作者认为 CEM 是“Web Components 的杀手级特性”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.jessestuart.ca/posts/2025-10-12-implementing-dark-mode-toggle-without-javascript/&#34; title=&#34;无需 JavaScript 即可实现深色模式切换&#34; rel=&#34;noopener ugc nofollow&#34;&gt;无需 JavaScript 即可实现深色模式切换&lt;/a&gt;：介绍如何仅用 CSS 与 HTML 实现一个支持系统与用户手动切换的暗色模式按钮，并可选用少量 JavaScript 增强体验。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;css-&#34;&gt;CSS 新特性&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendmasters.com/blog/modern-css-round-out-tabs/&#34; title=&#34;Modern CSS Round-Out Tabs&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Modern CSS Round-Out Tabs&lt;/a&gt;：用现代 CSS 的 shape() 函数重新实现“圆边标签页”设计，无需多余元素即可绘制复杂弧形界面。&lt;a href=&#34;https://codepen.io/editor/chriscoyier/pen/0199caa8-5073-7e79-8002-e30d5532a6c4&#34; title=&#34;Codepen 示例&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Codepen 示例&lt;/a&gt;&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/10/d4680c782aa542ae5bc31b7ecf0c9e45.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://css-tip.com/tooltip-anchor-2/&#34; title=&#34;动态位置的 tooltip 与锚点定位 II&#34; rel=&#34;noopener ugc nofollow&#34;&gt;动态位置的 tooltip 与锚点定位 II&lt;/a&gt;：介绍如何利用 CSS 的 anchor 定位体系使 tooltip 智能地在四个方向上自动调整位置并保持箭头指向锚点。在&lt;a href=&#34;https://css-tip.com/tooltip-anchor/&#34; title=&#34;上一篇文章&#34; rel=&#34;noopener ugc nofollow&#34;&gt;上一篇文章&lt;/a&gt;中，创建了一个在顶部和底部之间切换位置的 tooltip。现在可以调整代码，使其在四个位置（顶部、底部、左侧和右侧）之间切换。无论工具提示位于哪个位置，都会指向锚点。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://ryanmulligan.dev/blog/transition-to-the-other-side/&#34; title=&#34;使用容器查询单位实现向另一侧的过渡&#34; rel=&#34;noopener ugc nofollow&#34;&gt;使用容器查询单位实现向另一侧的过渡&lt;/a&gt;：通过 CSS 的容器级尺寸单位（如 &lt;code&gt;cqi&lt;/code&gt; 和 &lt;code&gt;cqb&lt;/code&gt;），可以让元素基于父容器动态计算移动距离，实现灵活、性能佳且语义清晰的动画效果。&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/10/8f09ef6b9b8e5f5afc399b4219b96325.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-2&#34;&gt;趣味项目与工具&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/olegshulyakov/llama.ui&#34; title=&#34;olegshulyakov/llama.ui: A minimal interface for AI Companion that runs entirely in your browser.&#34; rel=&#34;noopener&#34;&gt;olegshulyakov/llama.ui: A minimal interface for AI Companion that runs entirely in your browser.&lt;/a&gt;：一款完全在浏览器中运行的基于 &lt;code&gt;llama.cpp&lt;/code&gt; 的开源本地 AI 对话界面项，专注隐私、简洁与易用。它支持多模型服务（如 LM Studio、Ollama、vLLM、OpenAI 等），界面现代，支持 Markdown 渲染、LaTeX 数学公式、主题切换和会话管理。&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/10/e5c47262c549892da5e3d63d97c894f3.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/rictic/jsonriver&#34; title=&#34;rictic/jsonriver&#34; rel=&#34;noopener&#34;&gt;rictic/jsonriver&lt;/a&gt;：一个基于 JavaScript 标准特性的轻量高速流式 JSON 解析器，可实时按数据流逐步生成完整值。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/weijunext/ogimage-click&#34; title=&#34;weijunext/ogimage-click&#34; rel=&#34;noopener&#34;&gt;weijunext/ogimage-click&lt;/a&gt;：又一个快速生成精美的 Open Graph 图片的开源在线工具，支持实时预览与多种导出格式。&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/10/3b3d2c395570636c80c5e60eae4f8540.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;codepen-&#34;&gt;Codepen 精选&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/thebabydino/pen/WbrjrZM&#34; title=&#34;Pure CSS angled columns layout options&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Pure CSS angled columns layout options&lt;/a&gt;：Ana Tudor 展示三种 CSS 斜列布局技术，两种基于 &lt;code&gt;clip-path&lt;/code&gt;，第三种使用 &lt;code&gt;transform: skew&lt;/code&gt;，并以清晰注释说明，第三种方法倾斜容器，然后反向倾斜图片。&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/10/4e79fab6d8764fc3c5e518b073ad2b0b.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/atzedent/pen/jEWmNOd&#34; title=&#34;Juicy&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Juicy&lt;/a&gt;：Matthias Hurrle 的又一次关于次表面散射（subsurface scattering）的实验，模拟水果糖果风格的魔方。&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/10/41fbb8b791bfcc4471a4583ce6808260.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/jkantner/pen/YPwZWoy&#34; title=&#34;404 Error Face&#34; rel=&#34;noopener ugc nofollow&#34;&gt;404 Error Face&lt;/a&gt;：Jon Kantner 基于 &lt;a href=&#34;https://dribbble.com/shots/25810110-ERROR-404&#34; title=&#34;Camo Creative 的设计&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Camo Creative 的设计&lt;/a&gt;，将 404 错误页转为循环动画，用趣味视觉缓解用户体验挫败感。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/10/939a6d463f3f189136131779d1f44a81.gif&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;refs&#34;&gt;Refs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://codepen.io/spark/473&#34; title=&#34;CodePen Spark #473 Sad 404s, Juicy WebGL, and a Halftone Reveal&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CodePen Spark #473 Sad 404s, Juicy WebGL, and a Halftone Reveal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://javascriptweekly.com/issues/757&#34; title=&#34;JavaScript Weekly Issue 757: October 17, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;JavaScript Weekly Issue 757: October 17, 2025&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://react.statuscode.com/issues/448&#34; title=&#34;React Status Issue 448: October 15, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React Status Issue 448: October 15, 2025&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://frontendfoc.us/issues/713&#34; title=&#34;Frontend Focus Issue 713: October 15, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Frontend Focus Issue 713: October 15, 2025&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      
    </content>
    
  </entry>
  
  <entry>
    <title><![CDATA[FE Bits Vol.10｜React Compiler v1.0 发布、React 成立基金会，Vite 纪录片与 Vite+ 上线]]></title>
    <link rel="alternate" type="text/html" href="https://news.cosine.ren/p/vol-10" />
    <id>https://news.cosine.ren/p/vol-10#13189</id>
    <author>
      <name>cosine</name>
    </author>
    <published>2025-10-12T04:14:49Z</published>
    <updated>2025-10-12T04:14:49Z</updated>
    
    <content type="html">
      &lt;blockquote&gt;
&lt;p&gt;本周刊更新时间期望是在每周天，网站在建设中……&lt;br /&gt;
目前推荐使用 &lt;a href=&#34;https://folo.is/&#34; title=&#34;Folo&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Folo&lt;/a&gt; 订阅本周刊的 &lt;a href=&#34;https://quaily.com/cosine/feed/atom&#34; title=&#34;Quaily RSS&#34; rel=&#34;noopener&#34;&gt;Quaily RSS&lt;/a&gt;。&lt;br /&gt;
公众号 前端周周谈 FE Bits，点击阅读原文链接可查看原文。&lt;br /&gt;
QQ 讨论小群 598022684，日常讨论前端技术 &amp;amp; 生活，也可在群里投稿自己的文章，随意加入，比较偏向粉丝群的性质～&lt;br /&gt;
本周刊同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;，欢迎关注。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;今天是 2025 年 10 月 12 日，星期天。&lt;/p&gt;
&lt;p&gt;搬家加上去医院各种情况，导致这个国庆假期其实也没咋歇，所以网站得再咕咕咕一阵子了，还没做到满意的程度～&lt;/p&gt;
&lt;p&gt;等到 10 月底，大概才能安顿下来了。&lt;/p&gt;
&lt;p&gt;这周将国庆假期里的消息也合并进来了，所以内容相对比较多。&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;生态与社区动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://react.dev/blog/2025/10/07/react-compiler-1&#34; title=&#34;React Compiler v1.0&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React Compiler v1.0&lt;/a&gt;：React 官方发布首个稳定版 React Compiler，通过自动记忆化（memoization）在构建时优化组件性能。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://react.dev/blog/2025/10/07/introducing-the-react-foundation&#34; title=&#34;介绍 React 基金会&#34; rel=&#34;noopener ugc nofollow&#34;&gt;介绍 React 基金会&lt;/a&gt;：React 官方宣布将成立独立的 React 基金会（React Foundation），并将 React 与 React Native 从 Meta 转移至该基金会名下，以推动社区自治和生态中立化。基金会将管理基础设施、举办 React Conf、支持生态项目并发放资助。同时，React 将建立独立的技术治理结构，由社区贡献者共同制定方向，确保没有单一机构主导。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.chromium.org/2025/10/automatic-notification-permission.html&#34; title=&#34;减少通知超载，在 Chrome 浏览器中获得更安静的浏览体验&#34; rel=&#34;noopener ugc nofollow&#34;&gt;减少通知超载，在 Chrome 浏览器中获得更安静的浏览体验&lt;/a&gt;：Chrome 宣布推出新的自动通知权限撤销功能，会自动取消那些用户近期未互动且推送频繁的网站通知授权，以减少通知噪音&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=bmWQqAKLgT4&#34; title=&#34;Vite: The Documentary&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Vite: The Documentary&lt;/a&gt;：Vite 一部由 &lt;a href=&#34;https://x.com/CultRepo&#34; title=&#34;@CultRepo&#34; rel=&#34;noopener&#34;&gt;@CultRepo&lt;/a&gt; 制作的讲述 Vite 从 Vue 开发者的副项目成长为现代前端标准工具的纪录片。以 Evan You 从 Webpack 限制中寻找突破为起点，揭示了 Vite 如何利用原生 ES Modules 与即时开发服务器 Dev Server 技术实现极速构建体验。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;与此同时，VueConf 2025 上说的 Vite+ 也上线了，&lt;a href=&#34;https://viteplus.dev/&#34; title=&#34;Vite+&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Vite+&lt;/a&gt; 是一体化 Web 工具链，集成开发、构建、测试、格式化、缓存等功能，面向企业级性能与团队协作。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://svelte.dev/blog/whats-new-in-svelte-october-2025&#34; title=&#34;What’s new in Svelte: October 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;What’s new in Svelte: October 2025&lt;/a&gt;：9 月 Svelte 更新重点围绕 Remote Functions 增强、异步 SSR 与社区新工具生态的拓展。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://voidzero.dev/posts/whats-new-sep-2025&#34; title=&#34;What’s New in ViteLand: September 2025 Recap&#34; rel=&#34;noopener ugc nofollow&#34;&gt;What’s New in ViteLand: September 2025 Recap&lt;/a&gt;：ViteLand 2025 年 9 月的月度回顾，涵盖 Vite、Vitest、Rolldown 及 Oxc 的新进展，性能优化细节与社区生态亮点。下面是详细回顾：&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Rolldown 性能与体积优化&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows 平台重新实现文件元数据读取函数，构建性能提升 10–30%。&lt;/li&gt;
&lt;li&gt;macOS 平台优化多线程 I/O，限制线程至 4 个后性能升至 10–45%。&lt;/li&gt;
&lt;li&gt;调整 Source map 忽略机制，构建带 Source map 时提速 20–30%。&lt;/li&gt;
&lt;li&gt;通过直接嵌入 Oxc helper 减少二进制体积约 200KB。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/oxc-project/oxc-resolver/pull/691&#34; title=&#34;相关 PR 参考实现&#34; rel=&#34;noopener&#34;&gt;相关 PR 参考实现&lt;/a&gt;、&lt;a href=&#34;https://github.com/rolldown/rolldown/pull/6220&#34; title=&#34;集成方式更新&#34; rel=&#34;noopener&#34;&gt;集成方式更新&lt;/a&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;项目更新&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Vite&lt;/strong&gt;：&lt;code&gt;create-vite&lt;/code&gt; 向导现支持 Rolldown 选项，&lt;a href=&#34;https://github.com/vitejs/vite/issues/20820&#34; title=&#34;GitHub 参考&#34; rel=&#34;noopener&#34;&gt;GitHub 参考&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vitest&lt;/strong&gt;：VS Code 扩展新增浏览器模式调试，&lt;a href=&#34;https://github.com/vitest-dev/vscode/pull/662&#34; title=&#34;PR&#34; rel=&#34;noopener&#34;&gt;PR&lt;/a&gt;；未来版本将原生支持 Playwright Trace Viewer。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rolldown&lt;/strong&gt;：支持 &lt;code&gt;/* @__NO_SIDE_EFFECTS__ */&lt;/code&gt; 注解跨 Chunk 优化；改进 Tree-shaking 与 Dead Code 消除。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Oxc / Oxlint&lt;/strong&gt;：Lint 性能整体提升 5–50%，支持 &lt;code&gt;preserve-caught-error&lt;/code&gt; 规则并提供自动修复；修复内存泄漏问题；发布 Next.js 示例，&lt;a href=&#34;https://gist.github.com/Boshen/7ee09b4cd22fcb8146b75f55c5ac5321&#34; title=&#34;性能优化汇总列表&#34; rel=&#34;noopener ugc nofollow&#34;&gt;性能优化汇总列表&lt;/a&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;文章与视频&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.vjeux.com/2025/javascript/birth-of-prettier.html&#34; title=&#34;Birth of Prettier&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Birth of Prettier&lt;/a&gt;：Prettier 的诞生故事 —— 从「空格 vs Tab 圣战」到自动化格式化的行业标准，Prettier 作者 Vjeux 回顾了从学生时代对代码格式要求的启蒙，到在 Facebook 亲历代码风格冲突，并探索各种格式化方案（如 gofmt、dartfmt）失败的原因；最终，他与合作者 James Long 等人推动 Prettier 诞生。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://evilmartians.com/chronicles/how-to-add-fast-client-side-search-to-astro-static-sites&#34; title=&#34;如何为 Astro 静态网站添加快速客户端搜索功能&#34; rel=&#34;noopener ugc nofollow&#34;&gt;如何为 Astro 静态网站添加快速客户端搜索功能&lt;/a&gt;：介绍了如何在使用 Astro 构建的静态网站中集成高性能客户端全文搜索功能。作者比较了 AI 或第三方方案的局限，最终提出通过 Astro 的构建时（build-time）端点生成 JSON 索引，并结合 MiniSearch 与 Svelte 构建搜索 UI 的方式，实现无需远程 API 的、本地可定制的快速搜索体验。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendmasters.com/blog/css-counters-in-action/&#34; title=&#34;CSS Counters 的作用&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS Counters 的作用&lt;/a&gt;：介绍如何运用 CSS 的计数器（CSS Counters）在页面中动态生成编号，实现如行号、章节编号等功能。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://allthingssmitty.com/2025/10/06/grouping-arrays-in-modern-javascript-object-groupby-and-map-groupby/&#34; title=&#34;如何在不使用 reduce 的情况下对 JavaScript 中的数组进行分组&#34; rel=&#34;noopener ugc nofollow&#34;&gt;如何在不使用 reduce 的情况下对 JavaScript 中的数组进行分组&lt;/a&gt;：介绍 ES2024 新增的 &lt;code&gt;Object.groupBy()&lt;/code&gt; 和 &lt;code&gt;Map.groupBy()&lt;/code&gt;，它们让数组分组操作更简单、更具可读性。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendfoc.us/link/175288/web&#34; title=&#34;Core Web Vitals 的历史&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Core Web Vitals 的历史&lt;/a&gt;：Addy Osmani 回顾 Core Web Vitals 的发展历程，说明其在改善用户等待时间与整体性能体验上的重要作用。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://piccalil.li/blog/a-pragmatic-guide-to-modern-css-colours-part-one/&#34; title=&#34;现代 CSS 颜色实用指南 - 第 1 部分&#34; rel=&#34;noopener ugc nofollow&#34;&gt;现代 CSS 颜色实用指南 - 第 1 部分&lt;/a&gt;：带你了解现代 CSS 色彩系统的重大变革与写法更新。重点包括新版 &lt;code&gt;rgb()&lt;/code&gt; 与 &lt;code&gt;hsl()&lt;/code&gt; 的语法变化、相对颜色（relative colours）的用法、改进的亮暗主题处理方式、颜色空间（colour spaces）的应用，以及应对更广色域设备的新工具。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://shkspr.mobi/blog/2025/09/targetting-specific-characters-with-css-rules/&#34; title=&#34;针对特定字符使用 CSS 规则&#34; rel=&#34;noopener ugc nofollow&#34;&gt;针对特定字符使用 CSS 规则&lt;/a&gt;：用 CSS 精确选择并修改特定字符外观的创意实验，结论是可以使用 CSS 规则来针对特定字符更改他们的字体，遗憾的是只能改字体。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://tympanus.net/codrops/2025/10/08/how-to-animate-webgl-shaders-with-gsap-ripples-reveals-and-dynamic-blur-effects/&#34; title=&#34;如何使用 GSAP 制作 WebGL 着色器动画：涟漪、揭示和动态模糊效果&#34; rel=&#34;noopener ugc nofollow&#34;&gt;如何使用 GSAP 制作 WebGL 着色器动画：涟漪、揭示和动态模糊效果&lt;/a&gt;：一篇由浅入深讲解如何结合 GSAP 动画与 WebGL 着色器，实现实时交互动效（如涟漪、遮罩、动态模糊）的技术教程。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.telerik.com/blogs/vue-basics-state-management-vue&#34; title=&#34;Vue 基础知识：Vue 中的状态管理&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Vue 基础知识：Vue 中的状态管理&lt;/a&gt;：本文系统讲解了如何在 Vue 中进行状态管理，从 &lt;code&gt;ref/reactive&lt;/code&gt; 到 &lt;code&gt;props/emits&lt;/code&gt;、&lt;code&gt;provide/inject&lt;/code&gt;，再到官方状态管理库 Pinia，帮助开发者理解不同规模下的状态管理选择。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://simonwillison.net/2025/Oct/7/vibe-engineering/&#34; title=&#34;Vibe engineering&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Vibe engineering&lt;/a&gt;：不满 Vibe Coding，Simon Willison 提出“Vibe Engineering”概念，指代一种更严谨、更成熟的 AI 辅助软件开发方式。作者强调，与“vibe coding”的快速原型化不同，vibe engineering 是资深工程师在熟练掌控 LLM（Large Language Model）与 coding agent 的条件下，通过完善的测试、文档、版本控制与审查体系，将 AI 作为高阶编码助手来加速高质量软件的生产过程。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;css-&#34;&gt;CSS 新特性&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://css-tip.com/tooltip-anchor/&#34; title=&#34;动态位置的 tooltip 与锚点定位&#34; rel=&#34;noopener ugc nofollow&#34;&gt;动态位置的 tooltip 与锚点定位&lt;/a&gt;：介绍如何利用 CSS 锚点定位新特性（Anchor Positioning） 创建动态位置的 tooltip，使其在视窗中始终可见并自动调整箭头方向。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://css-tricks.com/getting-creative-with-shape-outside/&#34; title=&#34;利用 shape-outside 发挥创意&#34; rel=&#34;noopener ugc nofollow&#34;&gt;利用 shape-outside 发挥创意&lt;/a&gt;：探讨如何利用 CSS &lt;code&gt;shape-outside&lt;/code&gt; 打破矩形布局，使文字与图片自然融合，打造更具节奏与表现力的阅读体验。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://developer.chrome.com/blog/view-transitions-in-2025?hl=en&#34; title=&#34;视图转换的新功能（2025 年更新）&#34; rel=&#34;noopener ugc nofollow&#34;&gt;视图转换的新功能（2025 年更新）&lt;/a&gt;：2025 年 View Transitions API 在浏览器与框架支持、工具调试及新特性上迎来多项进展。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://css-tricks.com/we-completely-missed-width-height-stretch/&#34; title=&#34;我们完全错过了 width/height: stretch&#34; rel=&#34;noopener ugc nofollow&#34;&gt;我们完全错过了 width/height: stretch&lt;/a&gt;：介绍 &lt;code&gt;width: stretch&lt;/code&gt; 与 &lt;code&gt;height: stretch&lt;/code&gt; 这两个新加入 CSS 标准的属性值。作者探讨了它与 &lt;code&gt;box-sizing: border-box&lt;/code&gt; 的区别、动画特性（animatable）以及当前的浏览器支持情况。&lt;br /&gt;
虽然 &lt;code&gt;stretch&lt;/code&gt; 功能简单，但它解决了长期以来 &lt;code&gt;width: 100%&lt;/code&gt; 受内边距影响导致溢出的问题，为布局控制带来了更直观、更可靠的选择。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-2&#34;&gt;趣味项目与工具&lt;/h2&gt;
&lt;h3 id=&#34;elevenlabs-ui&#34;&gt;ElevenLabs UI&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/elevenlabs/ui&#34; title=&#34;elevenlabs/ui&#34; rel=&#34;noopener&#34;&gt;elevenlabs/ui&lt;/a&gt;：一个基于 shadcn/ui 的组件库，旨在帮助您更快地构建音频和智能体应用程序，项目以 MIT 许可证开源，音频组件特别多。&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/10/807634fd97a38b03e692d64cf4c6c2aa.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;来源于 &lt;a href=&#34;https://fixupx.com/iguangzhengli/status/1975792599484276747&#34; title=&#34;X 上的 Guangzheng Li：“elevenlabs 刚刚开源了兼容 shadcn ui 的前端组件，有大量和音频输入输出相关的组件 看了一下质量都挺高的，不只是样式，有的交互逻辑都完全生产可用，有音频组件相关需求的小伙伴不要错过”&#34; rel=&#34;noopener ugc nofollow&#34;&gt;X 上的 Guangzheng Li：“elevenlabs 刚刚开源了兼容 shadcn ui 的前端组件，有大量和音频输入输出相关的组件 看了一下质量都挺高的，不只是样式，有的交互逻辑都完全生产可用，有音频组件相关需求的小伙伴不要错过”&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;coinbase-cds&#34;&gt;Coinbase CDS&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/coinbase/cds/tree/master&#34; title=&#34;Coinbase 开源 CDS（Coinbase Design System）&#34; rel=&#34;noopener&#34;&gt;Coinbase 开源 CDS（Coinbase Design System）&lt;/a&gt;：Coinbase 团队将其针对 React 和 React Native 的跨平台组件库设计系统开源（Apache 2），其中不乏一些具有复杂效果的组件，如 &lt;a href=&#34;https://cds.coinbase.com/components/numbers/RollingNumber/&#34; title=&#34;RollingNumber&#34; rel=&#34;noopener ugc nofollow&#34;&gt;RollingNumber&lt;/a&gt;。&lt;/p&gt;
&lt;h3 id=&#34;accented-&#34;&gt;Accented 无障碍测试工具&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://accented.dev/&#34; title=&#34;Accented&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Accented&lt;/a&gt;：一个基于 axe-core 的前端库，用于持续无障碍性 (Accessibility) 测试并可视化问题高亮显示。将几行代码添加到您的 Web 应用中，您将看到交互式提示将在存在可访问性问题的元素旁边出现。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://accented.dev/blog/2025-07-16-introducing-accented&#34; title=&#34;Introducing&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Introducing&lt;/a&gt; | &lt;a href=&#34;https://stackblitz.com/edit/pomerantsev-accented-fyzsdyzs?file=src%2Fmain.tsx&amp;amp;title=Accented%20playground%20(React%20%20%20TypeScript)&#34; title=&#34;Playground&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Playground&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;harmonizer-oklch--apca-&#34;&gt;Harmonizer：基于 OKLCH 和 APCA 对比公式的色板生成工具&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/evilmartians/harmonizer&#34; title=&#34;evilmartians/harmonizer&#34; rel=&#34;noopener&#34;&gt;evilmartians/harmonizer&lt;/a&gt; 是一款基于 OKLCH 色彩模型与 APCA 对比公式的工具，用于生成一致且具可访问性的 UI 色彩调色板。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/10/227bf30632b15897932d15a4ccaefb0a.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;可在 Figma 插件或 Web 界面中使用，利用 OKLCH 与 APCA 生成具一致亮度与对比度的配色方案。该工具通过定义光度等级、色相与背景上下文，自动生成可在浅色与深色模式中保持视觉一致的色彩体系。支持导出多种开发格式（Tailwind、CSS 变量、JSON）&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/lirantal/npm-security-best-practices&#34; title=&#34;lirantal/npm-security-best-practices&#34; rel=&#34;noopener&#34;&gt;lirantal/npm-security-best-practices&lt;/a&gt;：一份针对 npm 包管理器的安全最佳实践清单，帮助开发者防范供应链攻击并强化依赖安全。&lt;/p&gt;
&lt;h3 id=&#34;codepen-&#34;&gt;Codepen 精选&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://codepen.io/filipz/pen/GgpMOEq&#34; title=&#34;Spooky Spectral Ghost&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Spooky Spectral Ghost&lt;/a&gt;：以 WebGL 与 Three.js 制作的一个诡异的鬼魂，用户可通过控制面板自定义多种参数，由 Filip Zrnzevic 制作。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/10/8d27dd9142822a1721d8497d96a108a6.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://codepen.io/collection/yyapOP&#34; title=&#34;digraph sink&#34; rel=&#34;noopener ugc nofollow&#34;&gt;digraph sink&lt;/a&gt;：Sophia Wood 基于 P5.js 的数学视觉系列 Mathtober，融合算法与艺术表现，展现图形生成美学。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/10/9eadfabbf955db3ea94cc56f7d7e9d36.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://codepen.io/jh3y/pen/NPxxawM&#34; title=&#34;resizable slide panels 🤙&#34; rel=&#34;noopener ugc nofollow&#34;&gt;resizable slide panels 🤙&lt;/a&gt;：Jhey Tompkins 创作的可调整尺寸幻灯组件，展示响应式交互设计的灵活性。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/10/35e8a8ad47da3c8f899907a4cc11044e.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://codepen.io/soju22/pen/qEbdVjK&#34; title=&#34;Tubes Cursor&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Tubes Cursor&lt;/a&gt;：Kevin Levron 使用 Three.js 制作的动态光标特效，灵感来自流动玻璃质感。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/10/7e00e34a93b9a514764d9a5cd1649f3a.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://codepen.io/davatron5000/pen/YPwzNwm&#34; title=&#34;Thinking in Squircles&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Thinking in Squircles&lt;/a&gt;：Dave Rupert 探索 CSS 新属性 &lt;code&gt;corner-shape&lt;/code&gt; 带来的“squircle”（圆角混合形）绘制逻辑，提出“CSS squircle 更像被拉伸的圆，而非被压扁的方形”，并延伸至&lt;a href=&#34;https://codepen.io/BlogFire/pen/RNrPdMO&#34; title=&#34;Chris Smith 的作品&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Chris Smith 的作品&lt;/a&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/10/946ee9c779243e8935597d2766d5cd91.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://codepen.io/jdillon/pen/zxrvwWv&#34; title=&#34;Elastic neon radio buttons with GSAP and SVG&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Elastic neon radio buttons with GSAP and SVG&lt;/a&gt;：使用 GSAP 和 SVG 的弹性霓虹灯单选按钮。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/10/517b508d3f9443819eb14cc5243114af.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://codepen.io/simeydotme/pen/vELOQEz&#34; title=&#34;Anchor Positioned Popover with Contrast Slider&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Anchor Positioned Popover with Contrast Slider&lt;/a&gt;：Simon Goellner 将新的 Popover API、锚点定位、浅色/深色配色主题以及他自己的范围滑块标记库与受 &lt;a href=&#34;https://x.com/Praha37v/status/1970410110347608489&#34; title=&#34;Praha37v&#34; rel=&#34;noopener&#34;&gt;Praha37v&lt;/a&gt; 启发的流畅设计相结合，打造了这个完全现代化的范围滑块。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/10/17a80855e06ad5969c31dac2c9aa0c55.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading-3&#34;&gt;生态更新&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://react.dev/blog/2025/10/01/react-19-2&#34; title=&#34;React 19.2 – React&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React 19.2 – React&lt;/a&gt;：React 19.2 发布，带来更强的性能、服务端渲染改进与开发体验优化。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;本次更新的重点包括全新 &lt;code&gt;&amp;lt;Activity /&amp;gt;&lt;/code&gt; 组件、&lt;code&gt;useEffectEvent&lt;/code&gt; hook、&lt;code&gt;cacheSignal&lt;/code&gt;、性能追踪 (Performance Tracks)、部分预渲染 (Partial Pre-rendering) 功能，批处理 SSR 的 Suspense 边界修复，在 Node.js 中支持 Web Streams 以进行流式 SSR 的功能。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://eslint.org/blog/2025/10/whats-coming-in-eslint-10.0.0/&#34; title=&#34;What&amp;#39;s coming in ESLint v10.0.0 - ESLint - Pluggable JavaScript Linter&#34; rel=&#34;noopener ugc nofollow&#34;&gt;What&#39;s coming in ESLint v10.0.0 - ESLint - Pluggable JavaScript Linter&lt;/a&gt;：ESLint 团队公布 v10.0.0 的最终特性计划，重点聚焦在配置系统全面切换至 Flat Config、Node.js 支持更新、AST 改进及遗留 API 清理。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://eslint.org/blog/2025/10/eslint-v9.37.0-released/&#34; title=&#34;ESLint v9.37.0 released&#34; rel=&#34;noopener ugc nofollow&#34;&gt;ESLint v9.37.0 released&lt;/a&gt;：本次 ESLint v9.37.0 作为小版本更新，重点增强了对 TypeScript 规则的支持（如 &lt;code&gt;no-restricted-imports&lt;/code&gt; 增加 &lt;code&gt;allowTypeImports&lt;/code&gt;）、优化了 &lt;code&gt;--concurrency=auto&lt;/code&gt; 在缓存和多线程场景下的启发式逻辑以提升 lint 性能，并改进了 &lt;code&gt;preserve-caught-error&lt;/code&gt; 对计算属性语法的识别。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;refs&#34;&gt;Refs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://codepen.io/spark/472&#34; title=&#34;CodePen Spark#472&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CodePen Spark#472&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://codepen.io/spark/471&#34; title=&#34;CodePen Spark#471&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CodePen Spark#471&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://react.statuscode.com/issues/447&#34; title=&#34;React Status Issue 447: October 8, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React Status Issue 447: October 8, 2025&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://frontendfoc.us/issues/712&#34; title=&#34;Frontend Focus Issue 712: October 8, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Frontend Focus Issue 712: October 8, 2025&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://nodeweekly.com/issues/595&#34; title=&#34;Node Weekly Issue 595: October 7, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Node Weekly Issue 595: October 7, 2025&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      
    </content>
    
  </entry>
  
  <entry>
    <title><![CDATA[FE Bits Vol.9｜Chrome DevTools 推出 MCP，Nuxt UI Pro 开源免费]]></title>
    <link rel="alternate" type="text/html" href="https://news.cosine.ren/p/vol-9" />
    <id>https://news.cosine.ren/p/vol-9#12974</id>
    <author>
      <name>cosine</name>
    </author>
    <published>2025-09-28T14:40:00Z</published>
    <updated>2025-09-28T14:40:00Z</updated>
    
    <content type="html">
      &lt;blockquote&gt;
&lt;p&gt;本周刊更新时间期望是在每周天，网站在建设中……&lt;br /&gt;
目前推荐使用 &lt;a href=&#34;https://folo.is/&#34; title=&#34;Folo&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Folo&lt;/a&gt; 订阅本周刊的 &lt;a href=&#34;https://quaily.com/cosine/feed/atom&#34; title=&#34;Quaily RSS&#34; rel=&#34;noopener&#34;&gt;Quaily RSS&lt;/a&gt;。&lt;br /&gt;
公众号 前端周周谈 FE Bits，点击阅读原文链接可查看原文。&lt;br /&gt;
QQ 讨论小群 598022684，日常讨论前端技术 &amp;amp; 生活，也可在群里投稿自己的文章，随意加入，比较偏向粉丝群的性质～&lt;br /&gt;
本周刊同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;，欢迎关注。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;今天是 2025 年 9 月 28 日，星期天，快到国庆假期了呢。下周假期，周刊停更一期！&lt;/p&gt;
&lt;p&gt;决定还是给周刊写个网站，争取在十一假期里把周刊网站整出来～&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;生态与社区动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://developer.chrome.com/blog/chrome-devtools-mcp?hl=en&#34; title=&#34;Chrome DevTools (MCP) for your AI agent&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Chrome DevTools (MCP) for your AI agent&lt;/a&gt;：Chrome 推出 MCP 服务，将 DevTools 能力赋能 AI 编程助手，实现实时调试和性能分析。&lt;a href=&#34;https://github.com/ChromeDevTools/chrome-devtools-mcp&#34; title=&#34;GitHub 地址&#34; rel=&#34;noopener&#34;&gt;GitHub 地址&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;NuxtUI Pro 现在也开源免费了。&lt;a href=&#34;https://nuxt.com/blog/nuxt-ui-v4&#34; title=&#34;Nuxt UI v4&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Nuxt UI v4&lt;/a&gt;：Nuxt UI v4 正式发布，统一了 Nuxt UI 与 Nuxt UI Pro，提供 110+ 组件、12 模板及完整 Figma Kit 并且开源免费了。&lt;a href=&#34;https://github.com/nuxt/ui&#34; title=&#34;开源地址&#34; rel=&#34;noopener&#34;&gt;开源地址&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.cloudflare.com/email-service/&#34; title=&#34;Announcing Cloudflare Email Service’s private beta&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Announcing Cloudflare Email Service’s private beta&lt;/a&gt;：Cloudflare 推出 Email Service 私有测试版，提供集成的邮件发送与路由功能，简化开发者应用中的邮件处理。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Cloudflare 推出了基于 worker 的邮件发送能力，这样真的一站式搞定了自定义域名邮箱的收发。任何人都可以简单快速的搞定自己的域名邮箱（尤其是独立开发者们）&lt;br /&gt;
而且还可以导入外部库，让邮件样式更加美化，这哪还需要啥 resend 啊&lt;br /&gt;
&lt;a href=&#34;https://x.com/zhangjintao9020/status/1971252154552975814&#34; title=&#34;Source&#34; rel=&#34;noopener&#34;&gt;Source&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.blog/security/supply-chain-security/our-plan-for-a-more-secure-npm-supply-chain/&#34; title=&#34;Our plan for a more secure npm supply chain&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Our plan for a more secure npm supply chain&lt;/a&gt;：GitHub 公布强化 npm 供应链安全的路线图，聚焦身份认证、发布机制与社区协作，以应对近期攻击事件。包括本地发布强制启用双因素认证（2FA）、具有七天有限生命周期的细粒度令牌和 &lt;a href=&#34;https://repos.openssf.org/trusted-publishers-for-all-package-repositories&#34; title=&#34;Trusted publishing&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Trusted publishing&lt;/a&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://astro.build/blog/webflow-official-partner/&#34; title=&#34;Webflow Donates $150,000 to Support Astro&amp;#39;s Open Source Mission&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Webflow Donates $150,000 to Support Astro&#39;s Open Source Mission&lt;/a&gt;：Webflow 成为 Astro 最新官方赞助商，捐赠 15 万美元并宣布采用 Astro 驱动其 AI 应用生成能力。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;文章与视频&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://reasonunderpressure.com/blog/posts/your-images-are-probably-oversized&#34; title=&#34;Your Images Are (Probably) Oversized&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Your Images Are (Probably) Oversized&lt;/a&gt;：一篇深入探讨网页前端中图片加载与优化的文章，重点揭示开发者常见的“图片过大”问题，并提供 &lt;code&gt;srcset&lt;/code&gt; 与 &lt;code&gt;sizes&lt;/code&gt; 的最佳实践指南。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://swizec.com/blog/you-may-be-looking-for-a-useSyncExternalStore/&#34; title=&#34;You may be looking for a useSyncExternalStore&#34; rel=&#34;noopener ugc nofollow&#34;&gt;You may be looking for a useSyncExternalStore&lt;/a&gt;：当你用 &lt;code&gt;useEffect&lt;/code&gt; + &lt;code&gt;useState&lt;/code&gt; 写订阅逻辑时，其实可能应该用 &lt;code&gt;useSyncExternalStore&lt;/code&gt; 来避免客户端渲染抖动 (jank)。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://allthingssmitty.com/2025/09/22/stop-using-reverse-find-meet-findlast/&#34; title=&#34;Stop using .reverse().find(): meet findLast()&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Stop using .reverse().find(): meet findLast()&lt;/a&gt;：介绍 ES2023 新增的 &lt;code&gt;findLast()&lt;/code&gt; 和 &lt;code&gt;findLastIndex()&lt;/code&gt; 方法，替代繁琐的 &lt;code&gt;.reverse().find()&lt;/code&gt; 实现更高效的数组反向查找。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://medium.com/@biswas.sukanta47/animating-elements-through-framer-motion-with-react-js-cdcfb2ce68b8&#34; title=&#34;Animating Elements through framer motion with React.js&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Animating Elements through framer motion with React.js&lt;/a&gt;：一文介绍如何通过 Framer Motion 在 React 中实现丰富动画效果，从基础到进阶实例演示。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.bocoup.com/blog/the-webs-most-tolerated-feature&#34; title=&#34;The Web’s Most Tolerated Feature - Bocoup&#34; rel=&#34;noopener ugc nofollow&#34;&gt;The Web’s Most Tolerated Feature - Bocoup&lt;/a&gt;：一篇回顾 CSS &lt;code&gt;zoom&lt;/code&gt; 属性从 IE 独有特性到最终进入标准规范的 25 年历程&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://denodell.com/blog/we-keep-reinventing-css&#34; title=&#34;We Keep Reinventing CSS, but Styling Was Never the Problem&#34; rel=&#34;noopener ugc nofollow&#34;&gt;We Keep Reinventing CSS, but Styling Was Never the Problem&lt;/a&gt;：文章探讨了前端开发中不断“重塑” CSS 的现象，并指出问题根源并非 CSS 本身，而是现代前端架构与 CSS 的错位。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://webkit.org/blog/17339/subgrid-how-to-line-up-elements-to-your-hearts-content/&#34; title=&#34;Subgrid: how to line up elements to your heart’s content&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Subgrid: how to line up elements to your heart’s content&lt;/a&gt;：介绍 CSS Grid 中的 Subgrid 功能以及如何在实际场景中保持元素对齐。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendmasters.com/blog/css-offset-and-animation-composition-for-rotating-menus/&#34; title=&#34;CSS offset and animation-composition for Rotating Menus&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS offset and animation-composition for Rotating Menus&lt;/a&gt;：讲解如何用 CSS 的 &lt;code&gt;offset&lt;/code&gt; 和 &lt;code&gt;animation-composition&lt;/code&gt; 将菜单项布局在圆形路径上，来高效实现旋转菜单动画。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/09/601698e26e81a1f93cd31d316cf566df.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;css-&#34;&gt;CSS 新特性&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.joshwcomeau.com/css/starting-style/&#34; title=&#34;The Big Gotcha With @starting-style&#34; rel=&#34;noopener ugc nofollow&#34;&gt;The Big Gotcha With @starting-style&lt;/a&gt;：深入探讨 CSS 新特性 @starting-style 的优势与陷阱，以及如何应对其特有的 specificity 问题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.smashingmagazine.com/2025/09/integrating-css-cascade-layers-existing-project/&#34; title=&#34;Integrating CSS Cascade Layers To An Existing Project&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Integrating CSS Cascade Layers To An Existing Project&lt;/a&gt;：本文通过一个真实的 Discord Bot 网站案例，详细展示了如何将 CSS Cascade Layers 集成到已有的杂乱 CSS 项目中。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://css-tricks.com/css-typed-arithmetic/&#34; title=&#34;CSS Typed Arithmetic&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS Typed Arithmetic&lt;/a&gt;：文章介绍 CSS 类型化算术（CSS Typed Arithmetic）的概念和规则，强调其核心突破在于允许将带单位的值相除，得到一个可复用的无单位数值。此功能让不同 CSS 数据类型之间可以互相计算与转换，从而实现过去只能依赖 JavaScript 或黑科技技巧的动态布局和交互。借助 Typed Arithmetic 可实现诸如字体大小影响透明度、元素宽度控制颜色或动画路径等操作。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-2&#34;&gt;趣味项目与工具&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/NickvanDyke/eslint-plugin-react-you-might-not-need-an-effect&#34; title=&#34;NickvanDyke/eslint-plugin-react-you-might-not-need-an-effect&#34; rel=&#34;noopener&#34;&gt;NickvanDyke/eslint-plugin-react-you-might-not-need-an-effect&lt;/a&gt;：一个 ESLint 插件，用于检测 React 中不必要的 &lt;code&gt;useEffect&lt;/code&gt;，让代码更简洁、更快、更安全。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://iina.io/&#34; title=&#34;IINA&#34; rel=&#34;noopener ugc nofollow&#34;&gt;IINA&lt;/a&gt; 开源 macOS 播放器最近&lt;a href=&#34;https://github.com/iina/iina/releases/tag/v1.4.0&#34; title=&#34;新增 JavaScript 插件系统&#34; rel=&#34;noopener&#34;&gt;新增 JavaScript 插件系统&lt;/a&gt;，扩展功能性。(这个是我一直在用的播放器)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/abinthomasonline/repo2txt&#34; title=&#34;abinthomasonline/repo2txt&#34; rel=&#34;noopener&#34;&gt;abinthomasonline/repo2txt&lt;/a&gt;：一个可在浏览器运行的工具，将 GitHub 仓库或本地目录转换为格式化文本文件，方便用于 LLM 提示输入。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/09/7bb0b103b287a5ea3b7cb386021d4095.gif&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://logoipsum.com/&#34; title=&#34;Logoipsum&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Logoipsum&lt;/a&gt;: 100 个免费的 SVG 占位符标志。一种在设计中临时添加逼真外观标志的巧妙方法。允许您从 10 个不同的类别中选择，并可以交互式地在本站导航栏中预览所选标志。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/09/a12bf8279310c1318a79d6714ce31868.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/x007xyz/flycut-caption?tab=readme-ov-file&#34; title=&#34;FlyCut Caption&#34; rel=&#34;noopener&#34;&gt;FlyCut Caption&lt;/a&gt;：一个基于 Whisper 模型与 Transformers.js 的视频字幕生成与编辑工具，支持全流程的智能字幕识别、编辑、预览和导出。&lt;a href=&#34;https://caption.flycut.co/en/tool&#34; title=&#34;Demo&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Demo&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://colf.dev/&#34; title=&#34;Colf&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Colf&lt;/a&gt;：一个新颖的在线编程挑战，结合 leetcode、code golf 与 AI prompting 的在线挑战平台，看谁用最少 token 完成编程任务。&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/09/7c31e7f458ca280b4883bf852284a20f.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendmasters.com/blog/the-coyier-css-starter/&#34; title=&#34;The Coyier CSS Starter&#34; rel=&#34;noopener ugc nofollow&#34;&gt;The Coyier CSS Starter&lt;/a&gt;：Chris Coyier 的个人化 CSS Starter，强调实用性、可读性与易用性，并非传统 CSS Reset。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-3&#34;&gt;生态更新&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://tanstack.com/blog/announcing-tanstack-start-v1&#34; title=&#34;TanStack Start v1 Release Candidate | TanStack Blog&#34; rel=&#34;noopener ugc nofollow&#34;&gt;TanStack Start v1 Release Candidate | TanStack Blog&lt;/a&gt;：TanStack Start 发布 v1 候选版（Release Candidate），进入即将稳定的最后阶段。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://remix.run/blog/middleware&#34; title=&#34;Middleware in React Router&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Middleware in React Router&lt;/a&gt;：React Router 7.9.0 稳定支持 middleware 功能，为开发者带来更灵活的请求处理和数据共享能力。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://webassembly.org/news/2025-09-17-wasm-3.0/&#34; title=&#34;Wasm 3.0 Completed - WebAssembly&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Wasm 3.0 Completed - WebAssembly&lt;/a&gt;：Wasm 3.0 正式发布，带来包括 64 位寻址、多内存、GC、类型系统增强、异常处理等在内的重大更新，迈向更强大的跨语言低层平台。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;refs&#34;&gt;Refs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://javascriptweekly.com/issues/754&#34; title=&#34;JavaScript Weekly Issue 754: September 26, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;JavaScript Weekly Issue 754: September 26, 2025&lt;/a&gt;：本期聚焦 AI 代码审查、CLI 工具、前端框架更新以及多个新版本发布。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://react.statuscode.com/issues/445&#34; title=&#34;React Status Issue 445: September 24, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React Status Issue 445: September 24, 2025&lt;/a&gt;：React 生态最新动态，每周精选资讯、框架发布、工具更新与社区新闻。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendfoc.us/issues/710&#34; title=&#34;Frontend Focus Issue 710: September 24, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Frontend Focus Issue 710: September 24, 2025&lt;/a&gt;：前端周刊，汇总 CSS、WebAssembly、AI 工具等最新动态与资源分享。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://js.libhunt.com/newsletter/488&#34; title=&#34;Awesome JavaScript Weekly - Issue 488, Sep 25, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Awesome JavaScript Weekly - Issue 488, Sep 25, 2025&lt;/a&gt;：本期涵盖 JavaScript 相关的新工具、库、数据库更新和开发资源推荐。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://shoptalkshow.com/683/&#34; title=&#34;683: iOS 26 Safari, Material Support on the Web, and Fixing The Button Problem&#34; rel=&#34;noopener ugc nofollow&#34;&gt;683: iOS 26 Safari, Material Support on the Web, and Fixing The Button Problem&lt;/a&gt;：讨论 Safari iOS 26 新功能、CSS 美学、TypeScript 适用场景与技术栈重构思考。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.ruanyifeng.com/blog/2025/09/weekly-issue-367.html&#34; title=&#34;科技爱好者周刊（第 367 期）：Nano Banana 的几个妙用&#34; rel=&#34;noopener ugc nofollow&#34;&gt;科技爱好者周刊（第 367 期）：Nano Banana 的几个妙用&lt;/a&gt;：谷歌最新图像模型 Nano Banana 的应用案例与科技热点合集。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

      
    </content>
    
  </entry>
  
  <entry>
    <title><![CDATA[FE Bits Vol.8｜PyCon 之行、Cloudflare 大 Bug 与 NPM 沙虫警报]]></title>
    <link rel="alternate" type="text/html" href="https://news.cosine.ren/p/vol-8" />
    <id>https://news.cosine.ren/p/vol-8#12433</id>
    <author>
      <name>cosine</name>
    </author>
    <published>2025-09-22T12:00:00Z</published>
    <updated>2025-09-22T12:00:00Z</updated>
    
    <content type="html">
      &lt;blockquote&gt;
&lt;p&gt;本周刊更新时间期望是在每周天，网站在建设中……&lt;br /&gt;
目前推荐使用 &lt;a href=&#34;https://folo.is/&#34; title=&#34;Folo&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Folo&lt;/a&gt; 订阅本周刊的 &lt;a href=&#34;https://quaily.com/cosine/feed/atom&#34; title=&#34;Quaily RSS&#34; rel=&#34;noopener&#34;&gt;Quaily RSS&lt;/a&gt;。&lt;br /&gt;
公众号 前端周周谈 FE Bits，点击阅读原文链接可查看原文。&lt;br /&gt;
QQ 讨论小群 598022684，日常讨论前端技术 &amp;amp; 生活，也可在群里投稿自己的文章，随意加入，比较偏向粉丝群的性质～&lt;br /&gt;
本周刊同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;，欢迎关注。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;今天是 2025 年 9 月 22 日，星期一。上周真是忙的晕头转向，所以推迟到今天才更新。&lt;/p&gt;
&lt;p&gt;上周五请了假去上海，逛了上海海洋水族馆。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/09/bd879db41bd25a701d95a766628b45eb.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/09/08223e367289e2debc133319eab07b6a.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;周六参加了 pycon 见了偶像 Manjusaka，值了，晚上航班还延误了，从晚上 8 点一直到凌晨 4 点才到家，好惨啊。&lt;/p&gt;
&lt;p&gt;《不要用 Next.js.webp》&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/09/5d9c1fc5985f34810fb804f9ee92df1a.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/09/58fee61709a997d59745fa3d04cfb4f5.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;生态与社区动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.cloudflare.com/deep-dive-into-cloudflares-sept-12-dashboard-and-api-outage/&#34; title=&#34;深入了解 Cloudflare 2025 年 9 月 12 日的仪表板和 API 中断情况&#34; rel=&#34;noopener ugc nofollow&#34;&gt;深入了解 Cloudflare 2025 年 9 月 12 日的仪表板和 API 中断情况&lt;/a&gt;： React &lt;code&gt;useEffect&lt;/code&gt; 使用不当导致 Cloudflare 仪表盘宕机的案例，提醒开发者谨慎处理副作用。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;文中详细回顾了 Cloudflare 宕机事件。事故由前端 React useEffect 依赖配置错误引发，高频 API 调用叠加了服务端更新，造成雪崩式过载。Cloudflare 分享了事故时间线、恢复措施以及未来的改进方向，包括自动化回滚、容量管理、请求重试控制和可观测性提升等关键经验。&lt;/p&gt;
&lt;p&gt;也算是前端界的大 bug 了（乐）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;NPM 安全还有高手：&lt;a href=&#34;https://www.koi.security/blog/shai-hulud-npm-supply-chain-attack-crowdstrike-tinycolor&#34; title=&#34;实时更新：Shai-Hulud，史上最危险的 NPM 安全漏洞，影响 CrowdStrike 和数百个流行软件包&#34; rel=&#34;noopener ugc nofollow&#34;&gt;实时更新：Shai-Hulud，史上最危险的 NPM 安全漏洞，影响 CrowdStrike 和数百个流行软件包&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;NPM 生态系统出现极具破坏性的蠕虫病毒，以沙丘中的虚拟生物沙虫命名，能够自动感染其他 NPM 包。&lt;br /&gt;
沙虫病毒的工作方式是当感染开发者设备后，会自动搜寻各种凭据包括 NPM 凭据，然后自动篡改这名开发者有权限操作的包并加入蠕虫，目前已经有超过 178 个软件包被感染。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.blog/ai-and-ml/github-copilot/meet-the-github-mcp-registry-the-fastest-way-to-discover-mcp-servers/&#34; title=&#34;Meet the GitHub MCP Registry: The fastest way to discover MCP Servers&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Meet the GitHub MCP Registry: The fastest way to discover MCP Servers&lt;/a&gt;：GitHub 推出官方 &lt;a href=&#34;https://github.com/mcp&#34; title=&#34;MCP Registry&#34; rel=&#34;noopener&#34;&gt;MCP Registry&lt;/a&gt;，统一入口快速发现和使用 MCP servers。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://developer.chrome.com/blog/new-in-chrome-140?hl=en&#34; title=&#34;New in Chrome 140&#34; rel=&#34;noopener ugc nofollow&#34;&gt;New in Chrome 140&lt;/a&gt;：Chrome 140 更新了 &lt;code&gt;ToggleEvent&lt;/code&gt; 的新属性 &lt;code&gt;source&lt;/code&gt; 用于追踪触发元素，允许在 CSS &lt;code&gt;content&lt;/code&gt; 的 alt 文本中使用 &lt;code&gt;counter()&lt;/code&gt; 和 &lt;code&gt;counters()&lt;/code&gt; 提升无障碍体验，以及在 &lt;code&gt;@font-face&lt;/code&gt; 规则中支持 &lt;code&gt;font-variation-settings&lt;/code&gt; 描述符，用于更精细的字体调整。这些改进提升了开发者调试、无障碍支持和排版控制的能力。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://deno.com/blog/javascript-tm-gofundme&#34; title=&#34;Help Us Raise $200k to Free JavaScript from Oracle | Deno&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Help Us Raise $200k to Free JavaScript from Oracle | Deno&lt;/a&gt;：Deno 发起众筹，请求社区支持诉讼，挑战 Oracle 对 “JavaScript” 商标的垄断，使其回归公共领域。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://bsky.app/profile/jensimmons.bsky.social/post/3lyxz5i26cs2i&#34; title=&#34;Safari 26 更新可独立安装&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Safari 26 更新可独立安装&lt;/a&gt;，无需整个 macOS 更新。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;你知道吗？在 macOS 上，您只需更新到 Safari 26，同时仍可保持在 macOS 15 Sequoia 或甚至 macOS 14 Sonoma 上。&lt;br /&gt;
前往  &amp;gt; 系统设置 &amp;gt; 通用 &amp;gt; 软件更新。在“也可用”下，您会找到 Safari。点击“立即更新”。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Did you know that on macOS, you can update just to Safari 26, while remaining on macOS 15 Sequoia or even macOS 14 Sonoma?&lt;br /&gt;
Go to  &amp;gt; System Settings &amp;gt; General &amp;gt; Software Update. Under “Also Available” you’ll find Safari listed. Click “Update Now”.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://web.dev/blog/browserslist-supports-baseline?hl=en&#34; title=&#34;Browserslist&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Browserslist&lt;/a&gt; 已支持 Baseline 功能匹配&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Interop 2026 特性征集，鼓励开发者提出统一实现的标准 (&lt;a href=&#34;https://web.dev/blog/interop-2026-proposals&#34; title=&#34;Propose a feature&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Propose a feature&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Chromium &lt;a href=&#34;https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/Accessibility/AriaNotify/explainer.md&#34; title=&#34;新增  方法&#34; rel=&#34;noopener&#34;&gt;新增 &lt;code&gt;ariaNotify()&lt;/code&gt; 方法&lt;/a&gt;，便于辅助技术信息传递。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;文章与视频&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendfoc.us/link/174382/web&#34; title=&#34;You Don&amp;#39;t Need Animations&#34; rel=&#34;noopener ugc nofollow&#34;&gt;You Don&#39;t Need Animations&lt;/a&gt;：讨论动画的使用场景与设计原则，强调合理使用而非泛滥。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://alastair.is/apple-has-a-private-css-property-to-add-liquid-glass-effects-to-web-content/&#34; title=&#34;Apple has a private CSS property to add Liquid Glass effects to web content&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Apple has a private CSS property to add Liquid Glass effects to web content&lt;/a&gt;：作者在研究 WebKit 更新日志时发现 Apple 正在引入一个私有 CSS 属性 &lt;code&gt;-apple-visual-effect&lt;/code&gt;，它可以让 Web 内容利用 Liquid Glass 效果。虽然该功能目前既不能在 Safari 上使用，也无法通过常规 WKWebView 使用，除非启用私有设置 &lt;code&gt;useSystemAppearance&lt;/code&gt;，因此开发者不能直接用于 App Store 应用。但这一变化揭示：Apple 自己已经在内部使用该功能，说明 webview 在系统应用中的整合比用户意识到的更深入，印证了所谓 “The Toupée Theory of In-App Webviews” —— 好的 webview 被无感知地使用，坏的才被用户注意。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://guangzhengli.com/blog/zh/vibe-coding-and-context-coding&#34; title=&#34;谈谈 AI 编程工具的进化与 Vibe Coding&#34; rel=&#34;noopener ugc nofollow&#34;&gt;谈谈 AI 编程工具的进化与 Vibe Coding&lt;/a&gt;：这篇文章讲的观念我很认可，Vibe Coding 并不是一个好名字，更愿意把基于 AI 辅助编程的方式称之为 Context Coding 即上下文编程。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://csswizardry.com/2025/08/low-and-mid-tier-mobile-for-the-real-world-2025/&#34; title=&#34;面向现实世界的中低端移动设备（2025 年）&#34; rel=&#34;noopener ugc nofollow&#34;&gt;面向现实世界的中低端移动设备（2025 年）&lt;/a&gt;：探讨 2025 年真实低端与中端手机在 Web 性能测试中的选机建议与方法论。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://tane.dev/2025/09/oh-no-not-again...-a-meditation-on-npm-supply-chain-attacks/&#34; title=&#34;Oh no, not again... a meditation on NPM supply chain attacks&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Oh no, not again... a meditation on NPM supply chain attacks&lt;/a&gt;：关于 NPM 软件供应链攻击现状与历史的反思。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.val.town/gardening-dependencies&#34; title=&#34;How to keep package.json under control&#34; rel=&#34;noopener ugc nofollow&#34;&gt;How to keep package.json under control&lt;/a&gt;：探讨在复杂 React 应用中如何管理和精简 &lt;code&gt;package.json&lt;/code&gt; 依赖，提出一系列依赖治理方法与工具。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://jakearchibald.com/2025/fetch-streams-not-for-progress/&#34; title=&#34;Fetch streams are great, but not for measuring upload/download progress&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Fetch streams are great, but not for measuring upload/download progress&lt;/a&gt;：探讨 &lt;code&gt;fetch&lt;/code&gt; API 的流式上传/下载支持及其局限性，尤其是不适合用来测量进度。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendmasters.com/blog/replace-your-animated-gifs-with-svgs/&#34; title=&#34;Replace Your Animated GIFs with SVGs&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Replace Your Animated GIFs with SVGs&lt;/a&gt;：深入介绍如何用 SVG 动画替代传统 GIF，实现更小文件体积与更高可扩展性&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://piccalil.li/blog/while-youre-fixing-the-fun-stuff-fix-the-important-stuff-too/&#34; title=&#34;While you’re fixing the fun stuff, fix the important stuff too&#34; rel=&#34;noopener ugc nofollow&#34;&gt;While you’re fixing the fun stuff, fix the important stuff too&lt;/a&gt;：在修复有趣的小问题时，不妨顺手解决更重要的底层问题。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;css-&#34;&gt;CSS 新特性&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendmasters.com/blog/what-you-need-to-know-about-modern-css-2025-edition/&#34; title=&#34;你需要知道的现代 CSS（2025 版）&#34; rel=&#34;noopener ugc nofollow&#34;&gt;你需要知道的现代 CSS（2025 版）&lt;/a&gt;：本文梳理了 2025 年现代 CSS 的最新进展，包括动画到 &lt;code&gt;auto&lt;/code&gt;、&lt;code&gt;@function&lt;/code&gt;、&lt;code&gt;if()&lt;/code&gt;、&lt;code&gt;text-wrap&lt;/code&gt;、&lt;code&gt;linear()&lt;/code&gt; easing、&lt;code&gt;shape()&lt;/code&gt;、增强的 &lt;code&gt;attr()&lt;/code&gt;、&lt;code&gt;reading-flow&lt;/code&gt; 等特性。这些新功能大多提升了样式抽象能力、响应式设计的灵活性和排版的可控性，同时展现了 Chrome 为主、Safari/Firefox 跟进的支持现状，并给出 Polyfill 和渐进增强的可行性建议。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.zhangxinxu.com/wordpress/2025/09/css-scroll-target-group/&#34; title=&#34;又一个 JS 交互被干掉了：如何实现导航菜单匹配？关于 scroll-target-group 属性与 :target-current 伪类&#34; rel=&#34;noopener ugc nofollow&#34;&gt;又一个 JS 交互被干掉了：如何实现导航菜单匹配？关于 scroll-target-group 属性与 :target-current 伪类&lt;/a&gt;：介绍如何用纯 CSS 的 scroll-target-group 与 :target-current 实现滚动导航联动，无需额外 JS。之前看到了不少英文博文解析，中文的可算有张鑫旭大佬的了。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-2&#34;&gt;趣味项目与工具&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://linear-easing-generator.netlify.app/&#34; title=&#34;linear() easing generator&#34; rel=&#34;noopener ugc nofollow&#34;&gt;linear() easing generator&lt;/a&gt;：可以将 JavaScript 或 SVG 中的缓动函数 (easing function) 转换为 CSS &lt;code&gt;linear()&lt;/code&gt; 格式，从而在无需 JavaScript 的情况下实现复杂的动画效果，例如 bounce、spring、elastic 等。是从上文「使用 CSS linear()函数实现更逼真的物理动画效果&lt;br /&gt;
」中看到的工具。 &lt;img src=&#34;https://r2.cosine.ren/i/2025/09/c62a232f473a07a60d572174deab05fa.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/bahdotsh/wrkflw&#34; title=&#34;bahdotsh/wrkflw: Validate and Run GitHub Actions locally&#34; rel=&#34;noopener&#34;&gt;bahdotsh/wrkflw: Validate and Run GitHub Actions locally&lt;/a&gt;：一款本地运行和验证 GitHub Actions 的命令行工具。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/cchanxzy/react-currency-input-field&#34; title=&#34;cchanxzy/react-currency-input-field: React component for an input field&#34; rel=&#34;noopener&#34;&gt;cchanxzy/react-currency-input-field: React component for an input field&lt;/a&gt;：一个轻量级 React 货币输入组件，支持多种格式化与国际化配置。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/webpro-nl/knip&#34; title=&#34;webpro-nl/knip&#34; rel=&#34;noopener&#34;&gt;webpro-nl/knip&lt;/a&gt;：一个帮助 JavaScript / TypeScript 项目检测未使用文件、依赖和导出的分析工具，是在上面的文章中看到的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.wispaper.ai/scholar-search/&#34; title=&#34;WisPaper&#34; rel=&#34;noopener ugc nofollow&#34;&gt;WisPaper&lt;/a&gt; 是复旦大学研发的免费学术智能助手，面向科研人员，整合了 AI 学术搜索、本地文献管理、精准翻译、智能对话和核心总结等功能，帮助研究者快速检索全球高质量文献，突破语言障碍，提炼摘要要点，大幅提高科研效率。（从&lt;a href=&#34;https://www.appinn.com/wispaper/&#34; title=&#34;小众软件&#34; rel=&#34;noopener ugc nofollow&#34;&gt;小众软件&lt;/a&gt;处看到的）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.appinn.com/ffmpeg-online-tools/&#34; title=&#34;史上最简单，在线 FFmpeg！浏览器直接用 + AI 懂人话，不用下载、不用命令行&#34; rel=&#34;noopener ugc nofollow&#34;&gt;史上最简单，在线 FFmpeg！浏览器直接用 + AI 懂人话，不用下载、不用命令行&lt;/a&gt;：一款通过浏览器即可使用的 FFmpeg 工具，支持自然语言操作和本地处理。在线地址：https://vidmix.app/ffmpeg-in-plain-english/&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.volumecolor.io/editor&#34; title=&#34;Volume: A 3D OKLCH Color Palette Creator&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Volume: A 3D OKLCH Color Palette Creator&lt;/a&gt;：3D 色彩选择工具，将配色体验转化为空间化探索。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/09/53bb93ff41165c65c3393edff2e7e134.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://codepen.io/RAFA3L/pen/GgpLNrW&#34; title=&#34;Gallery Button&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Gallery Button&lt;/a&gt;：超酷的纯 CSS 相册预览动画，具备折叠展开的纸张效果。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/09/32efbec46cf75a0c56ca4f0a573adcf3.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://codepen.io/jhnsnc/pen/ByoEmoq&#34; title=&#34;[WebGL] Refraction cursor over video&#34; rel=&#34;noopener ugc nofollow&#34;&gt;[WebGL] Refraction cursor over video&lt;/a&gt;：基于 shader 实现类似液态玻璃的折射光标效果&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-3&#34;&gt;生态更新&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://pnpm.io/blog/releases/10.16&#34; title=&#34;pnpm 10.16&#34; rel=&#34;noopener ugc nofollow&#34;&gt;pnpm 10.16&lt;/a&gt; 新增 minimumReleaseAge 设置，延迟依赖安装，避免第一时间安装可能受攻击的版本，允许通过 minimumReleaseAgeExclude 针对特定包（如 webpack）排除该限制，始终获取最新版本。近期流行包被攻击事件频发，pnpm 借此降低恶意版本扩散风险。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://mp.weixin.qq.com/s/vg_fUb97q2s9zxrzjpZ2DQ&#34; title=&#34;Lynx 3.4 正式发布&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Lynx 3.4 正式发布&lt;/a&gt;：带来 HarmonyOS 支持、新开发者工具、输入组件与动画增强等多项更新。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://webkit.org/blog/17333/webkit-features-in-safari-26-0/&#34; title=&#34;WebKit Features in Safari 26.0&#34; rel=&#34;noopener ugc nofollow&#34;&gt;WebKit Features in Safari 26.0&lt;/a&gt;：Safari 26.0 带来 Safari 26.0 增加了 75 项新功能、3 项弃用和 171 项其他改进，涵盖 CSS、WebGPU、Digital Credentials API、visionOS 沉浸式媒体、SwiftUI 集成等。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://nodejs.org/en/blog/release/v24.8.0&#34; title=&#34;Node.js v24.8.0 Release&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Node.js v24.8.0 Release&lt;/a&gt;：Node.js 发布 v24.8.0（Current）版本，带来重要功能更新与修复。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;引入了对 HTTP/2 网络调用在 Chrome DevTools 的调试支持。&lt;/li&gt;
&lt;li&gt;对 crypto 模块新增了多项 Web Cryptography 算法（如 Ed448、ML-DSA、KMAC、Argon2、SLH-DSA 等）&lt;/li&gt;
&lt;li&gt;为 worker 添加 cpu profile API。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;refs&#34;&gt;Refs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://react.statuscode.com/issues/444&#34; title=&#34;React Status Issue 444: September 17, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React Status Issue 444: September 17, 2025&lt;/a&gt;：本期涵盖 React 社区动态、依赖管理最佳实践、AI 代码审查工具、前端新版本发布与 JavaScript 生态最新进展。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://nodeweekly.com/issues/593&#34; title=&#34;Node Weekly Issue 593: September 16, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Node Weekly Issue 593: September 16, 2025&lt;/a&gt;：本期聚焦 Node.js 与生态更新，包括包管理安全、Electron 与 QUIC 进展、新书与教程推荐，以及工具与社区动态。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://frontendfoc.us/issues/709&#34; title=&#34;Frontend Focus Issue 709: September 17, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Frontend Focus Issue 709: September 17, 2025&lt;/a&gt;：前端领域的最新动态、技术文章与工具资源合集。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.stefanjudis.com/blog/web-weekly-168/&#34; title=&#34;Web Weekly #168&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Web Weekly #168&lt;/a&gt;：一周前端与 Web 技术动态，涵盖 CSS、可访问性、浏览器新特性以及工具推荐。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://codepen.io/spark/469&#34; title=&#34;CodePen Spark&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CodePen Spark&lt;/a&gt;：一份 CodePen 精选，涵盖 CSS 动画、WebGL 效果、前端新 API 与开发实践分享的周刊内容。&lt;/li&gt;
&lt;/ul&gt;

      
    </content>
    
  </entry>
  
  <entry>
    <title><![CDATA[FE Bits Vol.7｜chalk 和 debug 等 npm 包安全警告；Remotion 赞助 Mediabunny]]></title>
    <link rel="alternate" type="text/html" href="https://news.cosine.ren/p/vol-7" />
    <id>https://news.cosine.ren/p/vol-7#12359</id>
    <author>
      <name>cosine</name>
    </author>
    <published>2025-09-14T09:25:00Z</published>
    <updated>2025-09-14T09:25:00Z</updated>
    
    <content type="html">
      &lt;blockquote&gt;
&lt;p&gt;本周刊更新时间期望是在每周天，网站在建设中……&lt;br /&gt;
目前推荐使用 &lt;a href=&#34;https://folo.is/&#34; title=&#34;Folo&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Folo&lt;/a&gt; 订阅本周刊的 &lt;a href=&#34;https://quaily.com/cosine/feed/atom&#34; title=&#34;Quaily RSS&#34; rel=&#34;noopener&#34;&gt;Quaily RSS&lt;/a&gt;。&lt;br /&gt;
公众号 前端周周谈 FE Bits，点击阅读原文链接可查看原文。&lt;br /&gt;
QQ 讨论小群 598022684，日常讨论前端技术 &amp;amp; 生活，也可在群里投稿自己的文章，随意加入，比较偏向粉丝群的性质～&lt;br /&gt;
本周刊同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;，欢迎关注。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;今天是 2025 年 9 月 14 日，星期日。&lt;/p&gt;
&lt;p&gt;这几天一直很消沉，没来由的难过，但是还是要打起精神！情绪周期就是这么的不讲道理，但是听歌就会好很多，安利一首歌：&lt;a href=&#34;https://music.163.com/song?id=2701880637&#34; title=&#34;「雪路」- 诗岸/wukino&#34; rel=&#34;noopener ugc nofollow&#34;&gt;「雪路」- 诗岸/wukino&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;生态与社区动态&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://www.remotion.dev/blog/mediabunny&#34; title=&#34;Sponsoring Mediabunny | Remotion&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Sponsoring Mediabunny | Remotion&lt;/a&gt;：Remotion 宣布停止自研 Web 多媒体库，转而赞助并协作推进 &lt;a href=&#34;https://github.com/Vanilagy/mediabunny&#34; title=&#34;Mediabunny&#34; rel=&#34;noopener&#34;&gt;Mediabunny&lt;/a&gt;，致力于打造 Web 上的开源多媒体工具链。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://socket.dev/blog/npm-author-qix-compromised-in-major-supply-chain-attack&#34; title=&#34;npm 作者 Qix 被邮件钓鱼，npm 账号失陷&#34; rel=&#34;noopener ugc nofollow&#34;&gt;npm 作者 Qix 被邮件钓鱼，npm 账号失陷&lt;/a&gt;，发布了多个恶意版本的流行包，如 chalk、debug、color 等热门包，以下是受到影响的包版本：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ansi-styles@6.2.2
debug@4.4.2
chalk@5.6.1
supports-color@10.2.1
strip-ansi@7.1.1
ansi-regex@6.2.1
wrap-ansi@9.0.1
color-convert@3.1.1
color-name@2.0.1
is-arrayish@0.3.3
slice-ansi@7.1.1
color@5.0.1
color-string@2.1.1
simple-swizzle@0.2.3
supports-hyperlinks@4.1.1
has-ansi@6.0.1
chalk-template@1.1.1
backslash@0.2.1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;同时，DuckDB 相关包的 npm 账户 duckdb_admin 也遭到入侵，并&lt;a href=&#34;https://socket.dev/blog/duckdb-npm-account-compromised-in-continuing-supply-chain-attack&#34; title=&#34;发布了多个恶意版本&#34; rel=&#34;noopener ugc nofollow&#34;&gt;发布了多个恶意版本&lt;/a&gt;。注入的代码与 Qix 攻击中使用的钱包吸金恶意软件相同。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;duckdb@1.3.3 – ~14.9万次每周下载量。（发布于2025-09-09 01:13:07 UTC）
@duckdb/duckdb-wasm@1.29.2 – ~65k 每周下载量。（发布于 2025-09-09 01:11:47 UTC）
@duckdb/node-api@1.3.3 – 约 83k 每周下载量。(发布于 2025-09-09 01:12:15 UTC)
@duckdb/node-bindings@1.3.3 – ~72k 每周下载量。（发布于 2025-09-09 01:11:13 UTC）
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;文章与视频&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://sinja.io/blog/get-maximum-out-of-your-font&#34; title=&#34;你不知道的字体特性&#34; rel=&#34;noopener ugc nofollow&#34;&gt;你不知道的字体特性&lt;/a&gt;：是关于字体很好的文章，介绍现代字体（尤其是 OpenType 与 Variable Fonts）中鲜为人知但极其实用的特性，以及在 CSS 中调用这些功能的方法。这篇文章还推荐了一个可以玩这些可变字体的网站 &lt;a href=&#34;https://v-fonts.com/&#34; title=&#34;v-fonts.com&#34; rel=&#34;noopener ugc nofollow&#34;&gt;v-fonts.com&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://shopify.engineering/react-native-new-architecture&#34; title=&#34;Migrating to React Native&amp;#39;s New Architecture (2025)&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Migrating to React Native&#39;s New Architecture (2025)&lt;/a&gt;：Shopify 分享其两大核心应用迁移至 React Native 新架构的经验与实践策略。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://allthingssmitty.com/2025/09/08/finally-safe-array-methods-in-javascript/&#34; title=&#34;JavaScript 中的安全数组方法&#34; rel=&#34;noopener ugc nofollow&#34;&gt;JavaScript 中的安全数组方法&lt;/a&gt;：介绍 ES2023 新增的不可变 (non-mutating) 数组方法 &lt;code&gt;toSorted()&lt;/code&gt; &lt;code&gt;toReversed()&lt;/code&gt; 和 &lt;code&gt;toSpliced()&lt;/code&gt;，这些新方法的行为与它们的可变对应方法类似，但返回一个新数组而不是修改原始数组。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;http://tryandromeda.dev/&#34; title=&#34;Andromeda&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Andromeda&lt;/a&gt; 是一个新的由 Rust 构建的 JavaScript &amp;amp; TypeScript 运行时，核心由 Nova 引擎驱动，主打内存安全、零配置、GPU 硬件加速和丰富的 Web API 支持。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://kube.io/blog/liquid-glass-css-svg/&#34; title=&#34;浏览器中的液态玻璃：使用 CSS 和 SVG 进行折射&#34; rel=&#34;noopener ugc nofollow&#34;&gt;浏览器中的液态玻璃：使用 CSS 和 SVG 进行折射&lt;/a&gt;。超级棒的交互式教程，并且技术解析的也很全面，内含非常多 demo，把 Web Liquid Glass 玩明白了，非常值得一看。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/09/1e4bb669975ad8b7ec4ae83b562bb4a9.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;本文通过物理折射原理（Snell 定律）、几何曲面函数、向量场计算以及 SVG displacement map，逐步构建出类似 Apple Liquid Glass 的玻璃折射与高光效果。作者在 Chrome 中实现了交互式演示，并展示了如何组合折射与高光生成 UI 组件。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/09/3e5cb2c8bdf85c91e22af5f21de9d9cf.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;需要注意的是该方法目前仍为实验性质，仅 Chromium 支持 &lt;code&gt;backdrop-filter&lt;/code&gt; 调用 &lt;code&gt;SVG filter&lt;/code&gt;，且性能也堪忧，可作为 Electron 等环境下的实验性特效；非生产级实现。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.joshwcomeau.com/animation/color-shifting/&#34; title=&#34;Color Shifting in CSS&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Color Shifting in CSS&lt;/a&gt;：本文通过构建粒子效果的案例，揭示了在 CSS 中实现颜色动态变化时会遇到的限制，如 RGB 插值导致灰色过渡，并提出利用 CSS filter 中的 hue-rotate() 作为更佳的解决方案。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://emilkowal.ski/ui/you-dont-need-animations&#34; title=&#34;You Don&amp;#39;t Need Animations&#34; rel=&#34;noopener ugc nofollow&#34;&gt;You Don&#39;t Need Animations&lt;/a&gt;：讨论在 UI 设计中，动画何时有助于用户体验，何时反而适得其反。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.reactsquad.io/blog/how-to-set-up-express-5-in-2025&#34; title=&#34;How To Set Up Express 5 For Production In 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;How To Set Up Express 5 For Production In 2025&lt;/a&gt;：一步步讲解如何在 2025 年用 TypeScript 搭建生产可用的 Express 5 应用，包括项目初始化、代码风格校验、测试驱动开发、路由设计、认证与数据库集成等内容。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.logrocket.com/frontend-tool-overload/&#34; title=&#34;Too many tools: How to manage frontend tool overload&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Too many tools: How to manage frontend tool overload&lt;/a&gt;：探讨前端开发中工具过度繁多的问题，并告诉开发者应如何管理“工具过载”以改善开发者体验。我觉得这篇说的很好，学习 “新趋势” ≠ “立刻引入”，应基于实验和需求，而非市场营销热度。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;css-&#34;&gt;CSS 新特性&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://web.dev/blog/learn-css-refresh?hl=zh-cn&#34; title=&#34;通过九个新模块重新学习 CSS&#34; rel=&#34;noopener ugc nofollow&#34;&gt;通过九个新模块重新学习 CSS&lt;/a&gt;：Web.dev 更新了 Learn CSS 课程，新增 9 个模块以覆盖近四年 CSS 的新特性。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://web.dev/learn/css/nesting?hl=zh-cn&#34; title=&#34;CSS 嵌套&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS 嵌套&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://web.dev/learn/css/container-queries?hl=zh-cn&#34; title=&#34;容器查询&#34; rel=&#34;noopener ugc nofollow&#34;&gt;容器查询&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://web.dev/learn/css/custom-properties?hl=zh-cn&#34; title=&#34;自定义属性&#34; rel=&#34;noopener ugc nofollow&#34;&gt;自定义属性&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://web.dev/learn/css/counters?hl=zh-cn&#34; title=&#34;计数器&#34; rel=&#34;noopener ugc nofollow&#34;&gt;计数器&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://web.dev/learn/css/cursors-and-pointers?hl=zh-cn&#34; title=&#34;光标和指针&#34; rel=&#34;noopener ugc nofollow&#34;&gt;光标和指针&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://web.dev/learn/css/anchor-positioning?hl=zh-cn&#34; title=&#34;锚点定位&#34; rel=&#34;noopener ugc nofollow&#34;&gt;锚点定位&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://web.dev/learn/css/popover-and-dialog?hl=zh-cn&#34; title=&#34;浮层和对话框&#34; rel=&#34;noopener ugc nofollow&#34;&gt;浮层和对话框&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://web.dev/learn/css/view-transitions-spas?hl=zh-cn&#34; title=&#34;单页应用 (SPA) 的视图过渡&#34; rel=&#34;noopener ugc nofollow&#34;&gt;单页应用 (SPA) 的视图过渡&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://web.dev/learn/css/paths-shapes-clipping-masking?hl=zh-cn&#34; title=&#34;路径、形状、剪切和遮罩&#34; rel=&#34;noopener ugc nofollow&#34;&gt;路径、形状、剪切和遮罩&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;更新后的模块紧贴近几年 CSS 标准发展与浏览器支持，所有教学功能均已达到或即将进入 Baseline 状态，包括 Interop 2025 中的新特性，如锚点定位和视图转换。每个模块配有明确的浏览器支持信息，保证学习即用。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://css-tricks.com/what-can-we-actually-do-with-corner-shape/&#34; title=&#34;What Can We Actually Do With corner-shape?&#34; rel=&#34;noopener ugc nofollow&#34;&gt;What Can We Actually Do With corner-shape?&lt;/a&gt;：深入探索 &lt;code&gt;corner-shape&lt;/code&gt; 在 CSS 中的潜力与实际应用案例&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-2&#34;&gt;趣味项目与工具&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://yqnn.github.io/svg-path-editor/&#34; title=&#34;Yqnn/svg-path-editor: Online editor to create and manipulate SVG paths&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Yqnn/svg-path-editor: Online editor to create and manipulate SVG paths&lt;/a&gt;：一个开源的在线 SVG Path 编辑器，开发者可以直接在浏览器中创建与修改路径，支持命令面板、快捷键、路径变换、坐标切换以及 ViewBox 调整等功能。 &lt;a href=&#34;https://github.com/Yqnn/svg-path-editor&#34; title=&#34;GitHub 地址&#34; rel=&#34;noopener&#34;&gt;GitHub 地址&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/Splidejs/splide&#34; title=&#34;Splidejs/splide&#34; rel=&#34;noopener&#34;&gt;Splidejs/splide&lt;/a&gt;：Splide 是一个轻量级、灵活且易于访问的滑动器和轮播(slider &amp;amp; carousel)库，兼具高性能与可访问性。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/harlan-zw/mdream&#34; title=&#34;harlan-zw/mdream&#34; rel=&#34;noopener&#34;&gt;harlan-zw/mdream&lt;/a&gt;：mdream 可以将任何网站转换为干净的 markdown 和 llms.txt。提高您网站的 AI 可发现性或为您的项目生成 LLM 上下文。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.cosmic-ui.com/&#34; title=&#34;Cosmic UI&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Cosmic UI&lt;/a&gt; 科技感组件库？！不过感觉组件有点少，很新的组件库。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/09/6c0a03aafd29e0838bd1c67af6406a82.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/AmanShakya0018/forgeui&#34; title=&#34;ForgeUI&#34; rel=&#34;noopener&#34;&gt;ForgeUI&lt;/a&gt;｜&lt;a href=&#34;https://forgeui.in/&#34; title=&#34;官网&#34; rel=&#34;noopener ugc nofollow&#34;&gt;官网&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ForgeUI 是一个基于 React 的实验性组件库，重点在于“动画优先”的设计理念，提供动画表单、动态卡片、闪烁文字等现代化 UI 组件，旨在帮助开发者快速实现富交互界面。其技术栈包括 Next.js、TypeScript、Tailwind CSS、shadcn/ui 和 Framer Motion。项目定位更像是作者的“个人实验室”，供开发者参考与取用，而非正式社区驱动的开源产品。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/09/d34ffd174e909f6746840b88e2772b2b.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://tryandromeda.dev/&#34; title=&#34;Andromeda&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Andromeda&lt;/a&gt; 是由 Nova 引擎驱动的最新 JavaScript 运行时。它使用 Rust ，拥有直接 GPU 加速图形支持、单文件编译和内存安全功能。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/teimurjan/blazediff&#34; title=&#34;BlazeDiff&#34; rel=&#34;noopener&#34;&gt;BlazeDiff&lt;/a&gt;：一个高性能、像素级精准的 JavaScript 图像对比库，比 &lt;a href=&#34;https://github.com/mapbox/pixelmatch&#34; title=&#34;pixelmatch&#34; rel=&#34;noopener&#34;&gt;pixelmatch&lt;/a&gt; 快约 1.5 倍，且保持相同的精度和输出质量。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;太美了！诗人 David Whyte 的官网，以 WebGL 呈现水彩画般的互动质感，创造独特的艺术体验。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;介绍文章：https://webgl.souhonzan.org/entry/?v=3004&lt;/li&gt;
&lt;li&gt;网站地址：https://davidwhyte.com/experience/&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/09/4dc928fd490b5d77c9b2e79e550f967c.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-3&#34;&gt;库更新&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://deno.com/blog/v2.5&#34; title=&#34;Deno 2.5: Permissions in the config file&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Deno 2.5: Permissions in the config file&lt;/a&gt;：Deno 2.5 带来配置文件权限集、改进测试 API、依赖管理优化和性能提升等一系列更新。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;refs&#34;&gt;Refs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://nodeweekly.com/issues/592&#34; title=&#34;Node Weekly Issue 592: September 9, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Node Weekly Issue 592: September 9, 2025&lt;/a&gt;：本期涵盖 Node.js 生态最新动态，包括 LavaMoat 工具、Node.js 新版本发布、性能实践案例、以及丰富的库/框架更新。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://react.statuscode.com/issues/443&#34; title=&#34;React Status Issue 443: September 10, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React Status Issue 443: September 10, 2025&lt;/a&gt;：React 每周精选，涵盖 TanStack DB、WorkOS RBAC、Storybook 10、React Norway 2026、大量工具更新与 JavaScript 生态新闻。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://frontendfoc.us/issues/708&#34; title=&#34;Frontend Focus Issue 708: September 11, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Frontend Focus Issue 708: September 11, 2025&lt;/a&gt;：前端资讯简报，涵盖 CSS 技术探索、Web 工具动态及业界新闻&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-4&#34;&gt;晒手办&lt;/h2&gt;
&lt;p&gt;本周去年买的 GSC 的芙莉莲到了！神！面雕也很好看，后面就应该没什么手办要买了～&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/09/6c88e32260931810448be3d82ffe2f4e.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/09/51ad28bf00e83e8d31350ebd22adf2e7.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/09/1c782f9b1d49e53de41a00a99d8109f2.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;

      
    </content>
    
  </entry>
  
  <entry>
    <title><![CDATA[FE Bits Vol.6｜变与不变，Chrome 17 周年与 CSS Mixins 草案]]></title>
    <link rel="alternate" type="text/html" href="https://news.cosine.ren/p/vol-6" />
    <id>https://news.cosine.ren/p/vol-6#12230</id>
    <author>
      <name>cosine</name>
    </author>
    <published>2025-09-07T10:30:00Z</published>
    <updated>2025-09-07T10:30:00Z</updated>
    
    <content type="html">
      &lt;blockquote&gt;
&lt;p&gt;本周刊更新时间期望是在每周天，网站在建设中……&lt;br /&gt;
目前推荐使用 &lt;a href=&#34;https://folo.is/&#34; title=&#34;Folo&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Folo&lt;/a&gt; 订阅本周刊的 &lt;a href=&#34;https://quaily.com/cosine/feed/atom&#34; title=&#34;Quaily RSS&#34; rel=&#34;noopener&#34;&gt;Quaily RSS&lt;/a&gt;。&lt;br /&gt;
公众号 前端周周谈 FE Bits，点击阅读原文链接可查看原文。&lt;br /&gt;
QQ 讨论小群 598022684，日常讨论前端技术 &amp;amp; 生活，也可在群里投稿自己的文章，随意加入，比较偏向粉丝群的性质～&lt;br /&gt;
本周刊同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;，欢迎关注。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;今天是 2025 年 9 月 7 日，星期日。&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;浅谈前端的变与不变&lt;/h2&gt;
&lt;p&gt;这个小标题听着好唬人，其实各行各业都适用。&lt;/p&gt;
&lt;p&gt;前阵子看到有人讨论“如何系统性地学习前端”，提到很多前端架构层面的东西多年未变，更应该关注整体架构设计和代码复杂度的控制。&lt;/p&gt;
&lt;p&gt;我很赞同这个说法，不过我也想补充几点。前端其实是个非常宽泛的领域，细分下去有 toC 前端、toB 前端、基建前端、WebGL 前端等等。想要系统学习，首先得明确方向：是专注用户体验，还是深耕业务逻辑，或是投入工具链开发？不同方向要深耕的内容截然不同。&lt;/p&gt;
&lt;p&gt;此外，前端并不是一成不变的。用户也不只有企业系统的用户，还有很多专注于创意表达、视觉展示的类型。游戏前端是前端，未来的 VR/XR 页面也是前端，浏览器插件/小程序开发是前端，Node 开发也算前端——甚至再泛化一点，跨端开发也未尝不是前端的一种延伸。&lt;/p&gt;
&lt;p&gt;以一个 toC 前端的视角给建议的话，前端动画、CSS、Three、交互表现、性能优化、SEO……每块背后都是一整个知识体系，往深里去挖是学不完的。而技术选型，往往得跟着业务需求走，并没有一套通吃的“最佳实践”。&lt;/p&gt;
&lt;p&gt;另一方面，前端技术本身也在持续的”变“。就拿 CSS 来说，这些年一直在努力干掉预处理器等变得更好用：原生嵌套语法、&lt;code&gt;@if&lt;/code&gt; 函数、锚点定位、容器查询、&lt;code&gt;shape()&lt;/code&gt; 函数……很多我们曾经要靠预处理器或 &lt;code&gt;Hack&lt;/code&gt; 方式实现的，现在都渐渐标准化了。浏览器兼容性也在稳步提升，连 Safari 都在努力跟上——比如 WebGPU 在 iOS 26 中终于要得到支持了（虽然我平时也没少吐槽 Safari，但能看到更多特性被支持、渐进增强变得更可行，确实是好事）。&lt;/p&gt;
&lt;p&gt;虽然前端至今仍有很多历史遗留问题都很糟糕，但我们也该看到它正在变好。如果你对这个话题感兴趣，推荐之前读到的一篇很棒的文章：&lt;a href=&#34;https://acko.net/blog/html-is-dead-long-live-html/&#34; title=&#34;HTML is Dead, Long Live HTML&#34; rel=&#34;noopener ugc nofollow&#34;&gt;HTML is Dead, Long Live HTML&lt;/a&gt;，很深刻。&lt;/p&gt;
&lt;p&gt;那么以我之见，前端的“变”，更多体现在外在技术形态的快速迭代——CSS 标准不断更新、构建工具推陈出新、框架生态此起彼伏。今天流行 Webpack，明天可能就换 Vite；才刚理解 Vue 2，Vue 3 的 Composition API 又成了主流。这种变化是表层的、工具性的，也恰恰是前端最容易被别人看到最容易吐槽的。&lt;/p&gt;
&lt;p&gt;而“不变”的，是底层的问题和核心设计思想：如何管理状态、如何分解组件、如何优化渲染效率、如何实现可维护的代码结构、如何保障用户体验的一致性。这些命题从早期的 jQuery 时代到如今的 React、Solid.js，从未消失，只是在不同的技术范式下以不同的语法和架构重现，任何语言。&lt;/p&gt;
&lt;p&gt;我认为前端的发展，本质上是一场“表达方式的演进”，而不是“问题的替换”。&lt;/p&gt;
&lt;p&gt;因此学好前端，并不是盲目追逐每一个新工具或框架，而是要在变化中识别出那些持久不变的原则——理解它们，才能真正建立起属于自己的、可迁移的技术能力。&lt;/p&gt;
&lt;p&gt;最后想说的是，前端远不止是“熟练度”的竞赛。它既有界面的表象，也有工程的深度；既要应对交互的细节，也要把握架构的稳定。写一个动画，可以只是 setInterval，也可以深入到渲染原理、性能层级与视觉算法。选择“如何做”，本身就是一个技术判断和架构思考的过程。&lt;/p&gt;
&lt;p&gt;任何一门手艺，重复和积累是基础。但如果你认为前端仅仅停留在“切页面、调样式、写交互”，那真的太小看这个领域了。&lt;/p&gt;
&lt;p&gt;所谓“没有技术含量”，或许只是因为还没走到真正复杂的问题面前。&lt;/p&gt;
&lt;p&gt;写到这儿发现其实好像适用于任何方向，哈哈。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;偶尔也会想，前端真正的魅力，可能恰恰在于它离“表达”那么近。&lt;/p&gt;
&lt;p&gt;看多了海外那些小而美的网站，真的有点羡慕——一张专辑、一位画师、一项公益倡议、一家街角酒店、甚至一款本地食品，都有人愿意为之精心制作一个独具风格的小网站。它们不一定复杂，却充满个性，带着创作者的温度与巧思。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/09/efb3976a4b849c7560cf47f472090f70.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;这种“什么都能出个小网站展示”的文化，让人想起 Web 最初的样子，一直有人骂，一直有人爱。前端不仅是实现需求的工具，也可以成为创意表达的画布。&lt;/p&gt;
&lt;p&gt;也许这正是前端技术一直吸引人的一点：它始终承载着人们对美的追求、对创意的表达，以及对每一个想法都值得被好好呈现的信念。&lt;/p&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;生态与社区动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Google Chrome 迎来 17 周年，同时 Google 在&lt;a href=&#34;https://www.theverge.com/policy/717087/google-search-remedies-ruling-chrome&#34; title=&#34;反垄断案中保住了 Chrome&#34; rel=&#34;noopener ugc nofollow&#34;&gt;反垄断案中保住了 Chrome&lt;/a&gt;。这里有一篇&lt;a href=&#34;https://addyosmani.com/blog/chrome-17th/&#34; title=&#34;深度文章&#34; rel=&#34;noopener ugc nofollow&#34;&gt;深度文章&lt;/a&gt;回顾了 Chrome 浏览器 17 年的发展历程，从发布到成为全球最广泛使用的浏览器。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://voidzero.dev/posts/whats-new-aug-2025&#34; title=&#34;ViteLand 2025 年 8 月更新回顾&#34; rel=&#34;noopener ugc nofollow&#34;&gt;ViteLand 2025 年 8 月更新回顾&lt;/a&gt;：Oxlint 推出类型感知功能和自定义 JavaScript 插件支持，旨在成为完整的原生速度 linter。Vite 引入 React Server Component 支持，并更新了 @vitejs/plugin-react。Vitest v4 测试版支持视觉回归测试，并优化了启动速度。Rolldown-Vite 默认启用原生插件，并持续优化打包器性能，如 inlineConst 功能。Oxc 也改进了代码压缩和对 styled-components 的支持。&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;tsup &lt;a href=&#34;https://x.com/TheAlexLichter/status/1956248974203007334&#34; title=&#34;现在不再积极维护了&#34; rel=&#34;noopener&#34;&gt;现在不再积极维护了&lt;/a&gt;。幸运的是，可以通过简单的命令轻松切换到 &lt;a href=&#34;https://tsdown.dev/guide/migrate-from-tsup&#34; title=&#34;tsdown&#34; rel=&#34;noopener ugc nofollow&#34;&gt;tsdown&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;您还记得 GitLab 使用 rolldown-vite 将构建速度提高了 2.6 倍吗？现在，在启用所有原生插件后，他们的&lt;a href=&#34;https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180509#note_2678001031&#34; title=&#34;构建时间减少了 7 倍&#34; rel=&#34;noopener ugc nofollow&#34;&gt;构建时间减少了 7 倍&lt;/a&gt;，从 Vite 的 2.5 分钟缩短到 rolldown-vite 的 22 秒。这比他们现有的 Webpack 构建速度也快了 43 倍。&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.blog/changelog/2025-08-28-added-support-for-webp-images/&#34; title=&#34;GitHub 添加了对 WebP 图像的支持&#34; rel=&#34;noopener ugc nofollow&#34;&gt;GitHub 添加了对 WebP 图像的支持&lt;/a&gt;：GitHub 全面支持 WebP 图片上传与预览，现在用户可以在评论、Issue、Pull Request、Gist 与代码仓库中直接上传和预览 &lt;code&gt;.webp&lt;/code&gt; 文件，此前需要下载才能查看。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.simeongriggs.dev/use-the-activity-boundary-to-hide-suspenseful-components&#34; title=&#34;使用带有 Suspenseful Data 数据的 Activity 组件&#34; rel=&#34;noopener ugc nofollow&#34;&gt;使用带有 Suspenseful Data 数据的 Activity 组件&lt;/a&gt;：React 19 实验性组件 Activity 可以通过 mode 属性控制子组件的隐藏/显示，其独特之处在于：当组件被隐藏时，它会卸载副作用（Effects），但保持组件的本地状态，并且继续以低优先级执行 Suspense 数据请求。相比传统的父级过滤或全量查询方式，Activity 能在复杂场景中提高性能、用户体验和可维护性。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.appinn.com/atlassian-acquires-arc-dia/&#34; title=&#34;Arc、Dia 被 Atlassian 以 6.1 亿美元收购&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Arc、Dia 被 Atlassian 以 6.1 亿美元收购&lt;/a&gt;：Atlassian 宣布以 6.1 亿美元收购 The Browser Company，也就是 Arc、Dia 浏览器所在公司。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-2&#34;&gt;文章与视频&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://guangzhengli.com/blog/zh/vibe-coding-and-context-coding&#34; title=&#34;谈谈 AI 编程工具的进化与 Vibe Coding&#34; rel=&#34;noopener ugc nofollow&#34;&gt;谈谈 AI 编程工具的进化与 Vibe Coding&lt;/a&gt;：区分 Vibe Coding 与 Context Coding，系统梳理 Copilot、Cursor、Claude Code 的上下文工程（Context Engineering）路径与实践取舍，并给出可操作的方法论与职业思考&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://css-tricks.com/what-you-need-to-know-about-css-color-interpolation/&#34; title=&#34;关于 CSS 颜色插值你需要了解的内容 | CSS-Tricks&#34; rel=&#34;noopener ugc nofollow&#34;&gt;关于 CSS 颜色插值你需要了解的内容 | CSS-Tricks&lt;/a&gt;：深入讲解 CSS 中的颜色插值 (color interpolation)，如何在不同色彩空间下实现更平滑与细腻的过渡效果。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://css-tip.com/explore/alignment/&#34; title=&#34;CSS 对齐的基础知识&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS 对齐的基础知识&lt;/a&gt;：这篇讲 CSS 对齐讲的很明白，感觉之前看 align-items 和 justify-content 都朦朦胧胧的，还得是一起讲最好。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://fenx.work/outside-of-liquid-glass-apple-changes/&#34; title=&#34;#92 Liquid Glass 之外 Apple 的改变&#34; rel=&#34;noopener ugc nofollow&#34;&gt;#92 Liquid Glass 之外 Apple 的改变&lt;/a&gt;：内容十分有趣，因此收录于此，剖析 Apple 新视觉语言 Liquid Glass 的应用与问题，探讨其在 iOS、iPadOS 和 macOS 上的设计影响。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://tkdodo.eu/blog/deriving-client-state-from-server-state&#34; title=&#34;从服务器状态推导客户端状态&#34; rel=&#34;noopener ugc nofollow&#34;&gt;从服务器状态推导客户端状态&lt;/a&gt;：探讨如何避免冗余同步，通过“派生状态(derive state)”来更优雅地保持 Client State 与 Server State 的一致性。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.oddbird.net/2025/09/04/box-model/&#34; title=&#34;不要继承 box-sizing&#34; rel=&#34;noopener ugc nofollow&#34;&gt;不要继承 box-sizing&lt;/a&gt;：作者论证为什么不应该通过继承的方式来设置 &lt;code&gt;box-sizing&lt;/code&gt;，而应该直接统一声明并在需要时覆盖。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://nolanlawson.com/2025/08/31/why-do-browsers-throttle-javascript-timers/&#34; title=&#34;为什么浏览器会限制 JavaScript 定时器？&#34; rel=&#34;noopener ugc nofollow&#34;&gt;为什么浏览器会限制 JavaScript 定时器？&lt;/a&gt;：探讨浏览器为何限制 JavaScript 定时器 (timers)，并通过实验比较不同定时方案的性能差异，最终推荐使用 Scheduler API。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.erwinhofman.com/blog/should-you-preload-fonts-for-performance/&#34; title=&#34;是否应该预加载字体以提升性能？&#34; rel=&#34;noopener ugc nofollow&#34;&gt;是否应该预加载字体以提升性能？&lt;/a&gt;：预加载字体可能提升性能，但也可能拖慢首屏渲染 (FCP/LCP)，这篇文章权衡了预加载在不同场景下的风险与收益，并提出了实践建议：仅预加载关键字体、自托管字体、谨慎区分文本字体与图标字体。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://openai.com/index/why-language-models-hallucinate&#34; title=&#34;为什么语言模型会产生幻觉&#34; rel=&#34;noopener ugc nofollow&#34;&gt;为什么语言模型会产生幻觉&lt;/a&gt;：OpenAI 团队解释大语言模型为何会生成“幻觉”(hallucinations)，以及如何通过优化评估方法与训练方式减少此类错误。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;css-&#34;&gt;CSS 新特性&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://una.im/5-css-functions/&#34; title=&#34;5 个使用新 @function 规则的实用 CSS 函数&#34; rel=&#34;noopener ugc nofollow&#34;&gt;5 个使用新 @function 规则的实用 CSS 函数&lt;/a&gt;：本文介绍了 CSS 新推出的 &lt;code&gt;@function&lt;/code&gt; 规则，展示了如何通过自定义函数为样式表带来逻辑能力，使 CSS 更加动态、可维护，并提升设计系统的表达能力。作者通过五个实用案例（数值取反、透明度管理、流体排版、条件圆角、响应式侧边栏）以及一个 &lt;code&gt;light-dark&lt;/code&gt; 主题切换函数，说明了现代 CSS 在逻辑处理和组件化方向上的巨大潜力，并展望了未来 &lt;code&gt;@mixin&lt;/code&gt; 和 &lt;code&gt;@apply&lt;/code&gt; 等特性的应用场景。&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;CSS 函数和 &lt;a href=&#34;https://drafts.csswg.org/css-mixins-1/&#34; title=&#34;Mixins Draft Spec&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Mixins Draft Spec&lt;/a&gt; 是一个非常令人兴奋的规范。我们刚刚获得了 &lt;code&gt;@function&lt;/code&gt; 规则，但还有更多内容！我尤其期待 &lt;code&gt;@mixin&lt;/code&gt; 和 &lt;code&gt;@apply&lt;/code&gt; 功能，它们能让你编写接受变量输入的 CSS 代码块，并输出动态样式。这将使创建比函数更复杂的样式成为可能。例如 CSS 函数仅能输出单一结果值，而 mixin 可同时应用多种样式。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.oddbird.net/2025/08/27/winging-it-24/&#34; title=&#34;Mixins &amp;amp; Functions to Streamline CSS&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Mixins &amp;amp; Functions to Streamline CSS&lt;/a&gt;：探讨如何利用 CSS 的 Mixins 与 Functions 优化开发流程，并结合最新 CSSWG 会议动态。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.zhangxinxu.com/wordpress/2025/09/css-function-at-rules/&#34; title=&#34;@function 自定义函数让 CSS 支持编程啦&#34; rel=&#34;noopener ugc nofollow&#34;&gt;@function 自定义函数让 CSS 支持编程啦&lt;/a&gt;：介绍 CSS 新特性 @function 规则及其应用案例，展示其在编程化 CSS 中的潜力。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-3&#34;&gt;趣味项目与工具&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://codepen.io/creativeocean/pen/YPyjZmM&#34; title=&#34;Rainbow Loop 彩虹循环&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Rainbow Loop 彩虹循环&lt;/a&gt; 精彩的 GSAP 驱动的 SVG 动画。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/09/4ac5b3efd771f066214973db26683f67.gif&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;趣站 &lt;a href=&#34;https://musicforprogramming.net/latest/&#34; title=&#34;musicForProgramming();&#34; rel=&#34;noopener ugc nofollow&#34;&gt;musicForProgramming();&lt;/a&gt;：一个简约的文本版音乐站，为程序员在写代码时提供背景环境音乐的精选集，设计也很有趣。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/09/d8fc0acb7d860cf51ef578e8fb9dba3f.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://tholman.com/cursor-effects/&#34; title=&#34;90&amp;#39;s Cursor Effects&#34; rel=&#34;noopener ugc nofollow&#34;&gt;90&#39;s Cursor Effects&lt;/a&gt;：一个怀旧的光标效果集合，为现代浏览器优化，简单易用。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/09/8e2d52308fc54e684c168e231cb9b482.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/bahdotsh/wrkflw&#34; title=&#34;bahdotsh/wrkflw&#34; rel=&#34;noopener&#34;&gt;bahdotsh/wrkflw&lt;/a&gt;：WRKFLW 是一款强大的命令行工具，用于在本地验证和执行 GitHub Actions 工作流程，无需完整的 GitHub 环境。它帮助开发者在将更改推送到 GitHub 之前，直接在他们的机器上测试他们的工作流程。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/useautumn/autumn&#34; title=&#34;useautumn/autumn&#34; rel=&#34;noopener&#34;&gt;useautumn/autumn&lt;/a&gt;：Autumn 是一个介于 Stripe 与应用之间的开源计费中间层，支持订阅 (subscription)、额度充值 (credit systems)、基于使用量的定价 (usage-based models) 等复杂计费方式。它通过简化支付流程、解耦计费逻辑与应用代码，帮助开发者避免繁琐的 webhook、升级/降级、取消及支付失败。「记得之前看到过，现在又看到了于是记一下」&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/PicoTrex/Awesome-Nano-Banana-images&#34; title=&#34;Awesome-Nano-Banana🍌-images&#34; rel=&#34;noopener&#34;&gt;Awesome-Nano-Banana🍌-images&lt;/a&gt;：一个展示 Google Nano-banana 在多种图像生成与编辑任务中的效果和提示词的精选案例库。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;refs&#34;&gt;Refs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://frontendfoc.us/issues/707&#34; title=&#34;Frontend Focus Issue 707: September 3, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Frontend Focus Issue 707: September 3, 2025&lt;/a&gt;：本期聚焦 Anchor Positioning、Chrome 发展史、AI 辅助开发与 CSS 创意应用等前端热点。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://javascriptweekly.com/issues/751&#34; title=&#34;JavaScript Weekly Issue 751: September 5, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;JavaScript Weekly Issue 751: September 5, 2025&lt;/a&gt;：本期涵盖了浏览器定时器机制、AI 辅助开发、Chrome 发展史、Lean 语言、重要框架与工具的更新，以及社区分享的有趣项目。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.stefanjudis.com/blog/web-weekly-167/&#34; title=&#34;Web Weekly #167&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Web Weekly #167&lt;/a&gt;：涵盖了本周前端世界的最新动态，包括 CSS 新特性、现代正则表达式、浏览器生态与可访问性话题等。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://react.statuscode.com/issues/442&#34; title=&#34;React Status Issue 442: September 3, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React Status Issue 442: September 3, 2025&lt;/a&gt;：React 社区动态、工具更新与前端生态的最新资讯&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-4&#34;&gt;晒手办&lt;/h2&gt;
&lt;p&gt;在最后，晒晒新手办！《我的 Miku 泡面压太多了怎么办》&lt;/p&gt;
&lt;p&gt;这次收到的手办袖子上有点溢胶。不过整体还可以，很可爱！&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/09/836fb95a2e6098cfb3dfcd90eb7400bd.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/09/7a66be67d7ae417d255d02dcb79871ce.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;

      
    </content>
    
  </entry>
  
  <entry>
    <title><![CDATA[FE Bits Vol.5｜Nx 包被投毒、ESLint 多线程 Linting 和 Firefox 实验性 PWA]]></title>
    <link rel="alternate" type="text/html" href="https://news.cosine.ren/p/vol-5" />
    <id>https://news.cosine.ren/p/vol-5#12093</id>
    <author>
      <name>cosine</name>
    </author>
    <published>2025-08-31T10:00:00Z</published>
    <updated>2025-08-31T10:00:00Z</updated>
    
    <content type="html">
      &lt;blockquote&gt;
&lt;p&gt;本周刊更新时间期望是在每周天，网站在建设中……&lt;br /&gt;
目前推荐使用 &lt;a href=&#34;https://folo.is/&#34; title=&#34;Folo&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Folo&lt;/a&gt; 订阅本周刊的 &lt;a href=&#34;https://quaily.com/cosine/feed/atom&#34; title=&#34;Quaily RSS&#34; rel=&#34;noopener&#34;&gt;Quaily RSS&lt;/a&gt;。&lt;br /&gt;
公众号 前端周周谈 FE Bits，点击阅读原文链接可查看原文。&lt;br /&gt;
QQ 讨论小群 598022684，日常讨论前端技术 &amp;amp; 生活，也可在群里投稿自己的文章，随意加入，比较偏向粉丝群的性质～&lt;br /&gt;
本周刊同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;，欢迎关注。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;今天是 2025 年 8 月 31 日，星期日。&lt;/p&gt;
&lt;p&gt;本周比较喜欢的是这篇文章：&lt;a href=&#34;https://css-tricks.com/getting-creative-with-images-in-long-form-content/&#34; title=&#34;Getting Creative With Images in Long-Form Content | CSS-Tricks&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Getting Creative With Images in Long-Form Content | CSS-Tricks&lt;/a&gt;，探讨了如何通过突破常规的图片布局、网格设计、CSS 形状、字幕与留白等手法，让长文中的图片不仅是插图，更能塑造阅读节奏与体验。&lt;/p&gt;
&lt;p&gt;现在只需要一个 &lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/CSS/shape-outside&#34; title=&#34;A Link to developer.mozilla.org&#34; rel=&#34;noopener ugc nofollow&#34;&gt;&lt;code&gt;shape-outside&lt;/code&gt;&lt;/a&gt; 和 &lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/CSS/shape-image-threshold&#34; title=&#34;A Link to developer.mozilla.org&#34; rel=&#34;noopener ugc nofollow&#34;&gt;&lt;code&gt;shape-image-threshold&lt;/code&gt;&lt;/a&gt; 就可以实现这样的图像 Alpha 通道环绕效果了。&lt;/p&gt;
&lt;p&gt;以及，CSS &lt;code&gt;shade-*&lt;/code&gt; 的支持已经广泛可用（Baseline Widely available）了。&lt;/p&gt;
&lt;p&gt;有点小感慨，回忆了一下以前的各种黑魔法 hack 实现，和现在的越来越多的 CSS 新特性。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/08/076bf2caac62bd6ce7f1efda58849784.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;生态与社区动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.stepsecurity.io/blog/supply-chain-security-alert-popular-nx-build-system-package-compromised-with-data-stealing-malware&#34; title=&#34;供应链安全警报：流行 Nx 构建系统软件包遭数据窃取恶意软件入侵&#34; rel=&#34;noopener ugc nofollow&#34;&gt;供应链安全警报：流行 Nx 构建系统软件包遭数据窃取恶意软件入侵&lt;/a&gt;：nx 包被投毒，通过调用 AI CLI 工具窃取敏感资料。由于 nx 包 Github 仓库的 Github Actions 权限配置错误，导致 npm Token 被黑客窃取。黑客在短时间内发布了多个带毒新版本软件包，诱导受害者升级，恶意软件会通过 postinstall 过程安装，这已是第几起类似事件。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.infoq.com/news/2025/08/remix-run-v3-drops-react/&#34; title=&#34;重塑 Remix：V3 将放弃 React，转而使用 Preact 的分叉&#34; rel=&#34;noopener ugc nofollow&#34;&gt;重塑 Remix：V3 将放弃 React，转而使用 Preact 的分叉&lt;/a&gt;：Remix v3 将弃用 React、改用 Preact 分叉以“自有”更多栈并最小化依赖，强调 Web API、运行时优先与可组合性并优化 LLM，社区反应不一且预览版尚未发布。 &lt;a href=&#34;https://remix.run/blog/wake-up-remix&#34; title=&#34;[Remix 原文]&#34; rel=&#34;noopener ugc nofollow&#34;&gt;[Remix 原文]&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;上周这事儿，还有后续呢。&lt;a href=&#34;https://www.appinn.com/windows11-aug-update-no-ssd-issue/&#34; title=&#34;微软正式表态 Windows 11 8 月更新与 SSD 硬盘故障无任何联系｜ WI1138854 - 小众软件&#34; rel=&#34;noopener ugc nofollow&#34;&gt;微软正式表态 Windows 11 8 月更新与 SSD 硬盘故障无任何联系｜ WI1138854 - 小众软件&lt;/a&gt;：微软称经调查与遥测未发现 KB5063878 与 SSD/HDD 故障有关，暂无证据表明更新致存储问题，并将继续监控反馈。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;JavaScript 的商标问题还在战斗，&lt;a href=&#34;https://2ality.com/2025/08/javascript-trademark.html&#34; title=&#34;JavaScript’s trademark problem&#34; rel=&#34;noopener ugc nofollow&#34;&gt;JavaScript’s trademark problem&lt;/a&gt;：解析 Oracle 持有 “JavaScript” 商标带来的法律风险，并提出三条路径：迫使其放弃商标（Deno 诉讼）、改名或以“JS”替代；若前者成功，ECMAScript 或可更名为“JavaScript standard”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://connect.mozilla.org/t5/firefox-labs/give-web-apps-in-firefox-a-try-on-labs-and-tell-us-what-you/td-p/101900&#34; title=&#34;在 Firefox 中尝试 PWA，并告诉我们您的想法！&#34; rel=&#34;noopener ugc nofollow&#34;&gt;在 Firefox 中尝试 PWA，并告诉我们您的想法！&lt;/a&gt;：Firefox 浏览器 在 Release 142 推出实验性 Web Apps（PWA）功能，欢迎试用并反馈。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://developer.chrome.com/docs/devtools/ai-assistance/network?hl=zh-cn&#34; title=&#34;面向网络的 AI 辅助功能&#34; rel=&#34;noopener ugc nofollow&#34;&gt;面向网络的 AI 辅助功能&lt;/a&gt;：Chrome 把 AI 助手集成到了 DevTools 的网络面板中，现在可以基于所选请求进行分析与对话，包括打开方式、上下文与原始数据查看、示例提示、历史管理及反馈机制。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;文章与视频&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://hemath.dev/blog/say-bye-with-javascript-beacon/&#34; title=&#34;Say bye with JavaScript Beacon&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Say bye with JavaScript Beacon&lt;/a&gt;：作者指出在 beforeunload/unload 里用 XMLHttpRequest 或 fetch 上报并不可靠，因为浏览器不会为脚本阻塞卸载流程，网络请求易被取消；推荐使用信标接口 (Beacon API) 的 &lt;code&gt;navigator.sendBeacon&lt;/code&gt; 进行 &lt;code&gt;fire-and-forget&lt;/code&gt; 异步上报：无需回调或 Promise，JS 立即结束，由浏览器后台传输；虽仅支持 POST 且负载很小，但非常适合离开页面、实时埋点与轻量级前后端同步等无需等待响应的场景。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;有关 Beacon API 的更多信息，请查看 &lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/API/Beacon_API&#34; title=&#34;MDN&#34; rel=&#34;noopener ugc nofollow&#34;&gt;MDN&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.jonoalderson.com/performance/youre-loading-fonts-wrong/&#34; title=&#34;你的字体加载错误（这会影响你的性能）&#34; rel=&#34;noopener ugc nofollow&#34;&gt;你的字体加载错误（这会影响你的性能）&lt;/a&gt;：系统梳理网页字体从历史到工程实践的全部要点，指出常见误区并给出面向性能、可访问性与合规的最优加载方案，也是很有意思的一篇文章。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;EOT：Internet Explorer 的专有格式，谢天谢地已经灭绝。&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/08/131bf178ccbfa4502f84040880d82b53.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.logrocket.com/daisyui-5-whats-new/&#34; title=&#34;了解 daisyUI 5 中的新功能以及如何迁移&#34; rel=&#34;noopener ugc nofollow&#34;&gt;了解 daisyUI 5 中的新功能以及如何迁移&lt;/a&gt;：daisyUI 5 完全重写，以更轻量快速并引入强大的新主题引擎和组件，全面配合 Tailwind CSS 4，带来更高性能与更强定制能力。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.zhangxinxu.com/wordpress/2025/08/html-hidden-until-found/&#34; title=&#34;HTML 之快速了解 hidden=until-found 的作用 « 张鑫旭-鑫空间-鑫生活&#34; rel=&#34;noopener ugc nofollow&#34;&gt;HTML 之快速了解 hidden=until-found 的作用 « 张鑫旭-鑫空间-鑫生活&lt;/a&gt;：介绍 &lt;code&gt;hidden&lt;/code&gt; 的 &lt;code&gt;until-found&lt;/code&gt; 隐藏机制及 &lt;code&gt;beforematch&lt;/code&gt; 事件，基于 &lt;code&gt;content-visibility:hidden&lt;/code&gt; 在锚点/页面查找时自动显现，适用于折叠内容、帮助信息与标签页，Chrome 已支持多年，Safari 亦已跟进。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://samwho.dev/big-o/&#34; title=&#34;Big O&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Big O&lt;/a&gt;：讲算法复杂度的一篇文章，有丰富的交互式 demo，以求和、冒泡排序与二分查找等可视化示例通俗讲解 Big O（&lt;code&gt;O(1)&lt;/code&gt;、&lt;code&gt;O(log n)&lt;/code&gt;、&lt;code&gt;O(n)&lt;/code&gt;、&lt;code&gt;O(n^2)&lt;/code&gt;）的增长规律，并给出用 Set/Map、索引遍历与结果缓存等实用性能优化建议。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://marvinh.dev/blog/speeding-up-javascript-ecosystem-part-12/&#34; title=&#34;加速 JavaScript 生态系统 - Semver&#34; rel=&#34;noopener ugc nofollow&#34;&gt;加速 JavaScript 生态系统 - Semver&lt;/a&gt;：一次性能剖析，展示如何让包管理器中的语义化版本（Semver）比较提速至 33x&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;css&#34;&gt;CSS&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://lyra.horse/blog/2025/08/you-dont-need-js/&#34; title=&#34;你“可能”不再需要 JavaScript&#34; rel=&#34;noopener ugc nofollow&#34;&gt;你“可能”不再需要 JavaScript&lt;/a&gt;：一篇以实践与立场并重的长文，作者以“很多站点并不需要 JavaScript”为引子，系统展示现代 CSS 的强大与可用性，展示仅用 HTML/CSS 即可实现动画、主题、表单校验、组件交互与移动端适配。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://piccalil.li/blog/the-interpolate-size-property-is-a-great-example-of-progressive-enhancement/&#34; title=&#34;interpolate-size 属性是渐进增强的典范&#34; rel=&#34;noopener ugc nofollow&#34;&gt;interpolate-size 属性是渐进增强的典范&lt;/a&gt;：用 CSS 属性 (interpolate-size) 在支持的浏览器里平滑过渡到 height: auto，并以渐进增强保证旧浏览器得到最小可用体验&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.zhangxinxu.com/wordpress/2025/08/css-corner-shape/&#34; title=&#34;抢先学习大开眼界的 CSS corner-shape 属性 « 张鑫旭-鑫空间-鑫生活&#34; rel=&#34;noopener ugc nofollow&#34;&gt;抢先学习大开眼界的 CSS corner-shape 属性 « 张鑫旭-鑫空间-鑫生活&lt;/a&gt;：详解 CSS 新特性 corner-shape，基于 border-radius 自定义角形（round/squircle/scoop/bevel/notch/square 或 superellipse(K)），支持按方位设置与平滑动画，目前仅 Chrome 139+ 支持。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://ishadeed.com/article/anchor-positioning/&#34; title=&#34;锚点定位基础&#34; rel=&#34;noopener ugc nofollow&#34;&gt;锚点定位基础&lt;/a&gt;：本文系统介绍了 CSS 锚点定位（Anchor Positioning）基础：通过为任意元素定义锚（&lt;code&gt;anchor-name&lt;/code&gt;）并在目标元素使用 &lt;code&gt;position-anchor&lt;/code&gt;、&lt;code&gt;anchor()&lt;/code&gt; 或 &lt;code&gt;position-area&lt;/code&gt; 等特性，实现在不重构 DOM 的前提下，将元素稳定地相对其他元素对齐，并用 &lt;code&gt;position-try-fallbacks&lt;/code&gt;（如 &lt;code&gt;flip-block&lt;/code&gt;、&lt;code&gt;flip-inline&lt;/code&gt;）优雅处理视口溢出问题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://nerdy.dev/the-making-of-gradient.style&#34; title=&#34;gradient.style 的制作&#34; rel=&#34;noopener ugc nofollow&#34;&gt;gradient.style 的制作&lt;/a&gt;：从草图到上线，作者分享如何在遵循 CSS Images 规范下，把渐变的 &lt;code&gt;color stops&lt;/code&gt;、&lt;code&gt;double positions&lt;/code&gt; 与 &lt;code&gt;transition hints&lt;/code&gt; 可视化，并落地为可用的设计与开发工具 &lt;a href=&#34;https://gradient.style/&#34; title=&#34;CSS HDR Gradients&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS HDR Gradients&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://css-tricks.com/css-elevator-a-pure-css-state-machine-with-floor-navigation/&#34; title=&#34;CSS 电梯：带有楼层导航功能的纯 CSS 状态机&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS 电梯：带有楼层导航功能的纯 CSS 状态机&lt;/a&gt;，介绍如何仅用现代 CSS（&lt;code&gt;:has()&lt;/code&gt;、&lt;code&gt;@property&lt;/code&gt;、自定义属性、计数器等）构建可交互的电梯状态机，实现楼层导航、方向指示、按距离调速动画与无障碍播报，无需 JavaScript，并给出实际应用场景。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/08/aa14bcaf1a0f519afe06eea000bc68db.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;这部电梯不仅仅是一个玩具。这是一个蓝图。考虑以下实际用途：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;没有 JavaScript 的交互式原型&lt;/li&gt;
&lt;li&gt;使用实时状态的窗体中的进度指示器&lt;/li&gt;
&lt;li&gt;具有库存或状态机制的游戏 UI&lt;/li&gt;
&lt;li&gt;逻辑谜题或教育工具（仅 CSS 状态跟踪！)&lt;/li&gt;
&lt;li&gt;减少对性能或沙盒环境的 JavaScript 依赖&lt;/li&gt;
&lt;li&gt;这些技术在静态应用程序或受限脚本环境（例如电子邮件、某些内容管理系统小部件）中特别有用。&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;然后是两篇关于 CSS path 的教程，这两篇文章的质量非常高，交互 demo 特别多，是很棒的教程。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendmasters.com/blog/the-path-of-least-resistance-part-1/&#34; title=&#34;The  of Least Resistance (Part 1)&#34; rel=&#34;noopener ugc nofollow&#34;&gt;The &lt;code&gt;-path&lt;/code&gt; of Least Resistance (Part 1)&lt;/a&gt;：本文深入讲解了 CSS &lt;code&gt;clip-path&lt;/code&gt; 的语法与用法，从基础图形到复杂自定义路径，展示了如何突破方框限制，让界面元素拥有更灵活和富有表现力的形状。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://frontendmasters.com/blog/the-path-of-least-resistance-part-2/&#34; title=&#34;The  of Least Resistance (Part 2)&#34; rel=&#34;noopener ugc nofollow&#34;&gt;The &lt;code&gt;-path&lt;/code&gt; of Least Resistance (Part 2)&lt;/a&gt;：深入讲解 CSS &lt;code&gt;offset-path&lt;/code&gt; 路径动画，用 &lt;code&gt;offset-distance&lt;/code&gt; 沿自定义路线运动，结合 &lt;code&gt;offset-anchor&lt;/code&gt; / &lt;code&gt;offset-position&lt;/code&gt; / &lt;code&gt;offset-rotate&lt;/code&gt; 与变换顺序控制锚点与朝向，解析闭合/开放路径及负/溢出距离、ray() 无限射线、性能优化与减弱动效可访问性等要点。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-2&#34;&gt;工具与库更新&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://gradient.style/&#34; title=&#34;CSS HDR Gradients&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS HDR Gradients&lt;/a&gt; 这个工具相当棒～生成 CSS 渐变的工具，亮点是有很全的色彩空间支持。 &lt;a href=&#34;https://github.com/argyleink/gradient-style&#34; title=&#34;[GitHub 地址]&#34; rel=&#34;noopener&#34;&gt;[GitHub 地址]&lt;/a&gt;&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/08/b0c6070f587085b5ad1d0379548d540a.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/Chainlift/liftkit&#34; title=&#34;Chainlift/liftkit&#34; rel=&#34;noopener&#34;&gt;Chainlift/liftkit&lt;/a&gt;：LiftKit 是一个基于黄金比例的 UI 框架，它的核心是一组公式和变量，结合 Material 3 提供动态颜色与光学间距校正；通过模板或 CLI 可快速集成到 Next.js，支持按需安装与 CSS 树摇，附带 Figma/Webflow 资源与 FAQ，但按钮变体和变量文档仍在完善中。&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/08/d800d0d0e28c8879f5fc569c8036ef53.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/Meridius-Labs/electron-liquid-glass&#34; title=&#34;Meridius-Labs/electron-liquid-glass&#34; rel=&#34;noopener&#34;&gt;Meridius-Labs/electron-liquid-glass&lt;/a&gt;：一个在 macOS 上为 Electron 应用提供原生 NSGlassEffectView 炫酷玻璃效果的库，零配置即可使用并支持自定义。支持 TypeScript、自动暗黑模式、可定制边角和颜色，且有预编译二进制文件。仅限 macOS，在其他平台上会安全降级为 no-op（无效果但不报错）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/transloadit/uppy&#34; title=&#34;transloadit/uppy&#34; rel=&#34;noopener&#34;&gt;transloadit/uppy&lt;/a&gt; 模块化 JavaScript 文件上传器 Uppy，支持多源选择、断点续传、可插拔 UI 与后端集成，快速为任意应用构建可靠上传体验&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;heading-3&#34;&gt;库更新&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://eslint.org/blog/2025/08/multithread-linting/&#34; title=&#34;ESLint v9.34.0 中的新功能：多线程 Linting&#34; rel=&#34;noopener ugc nofollow&#34;&gt;ESLint v9.34.0 中的新功能：多线程 Linting&lt;/a&gt; —— ESLint v9.34.0 原生支持多线程并行 lint，通过 &lt;code&gt;--concurrency&lt;/code&gt; 启用，在大项目中可带来约 1.3x ～ 3.01x 提速，并提供基准与缓存等优化建议。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://colinhacks.com/essays/introducing-zod-codecs&#34; title=&#34;Introducing Zod Codecs&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Introducing Zod Codecs&lt;/a&gt;：Zod 4.1 引入编解码器（codec）API，实现类型安全的双向数据转换，弥补 transform 的单向缺陷。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://nodejs.org/en/blog/release/v24.7.0&#34; title=&#34;Node.js v24.7.0 (Current)&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Node.js v24.7.0 (Current)&lt;/a&gt;：引入后量子密码学（Post-Quantum Cryptography）与 Web Cryptography 现代算法、在单个可执行应用程序中 Node.js 执行参数支持及根证书更新到 NSS 3.114 的一次重要版本&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://rspack.rs/zh/blog/announcing-1-5&#34; title=&#34;Rspack 1.5 发布公告 - Rspack&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Rspack 1.5 发布公告 - Rspack&lt;/a&gt;：新版本聚焦构建性能、浏览器运行与生态升级，带来 barrel 文件延迟构建、原生文件监听、常量/枚举内联、模块联邦运行时提升等一系列优化与新特性，Rstack 其他进展如下：&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Rslint 发布：TypeScript 优先的新一代 Linter（Go 实现，基于 typescript-go），支持 ESLint 风格配置、IDE 插件、自动修复，已覆盖 50+ 条 @typescript-eslint 规则；见 &lt;a href=&#34;https://rslint.rs/&#34; title=&#34;Rslint 官网&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Rslint 官网&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;Rsbuild 1.5：默认开启 lazyCompilation、lazyBarrel、inlineEnum、typeReexportsPresence 等，加速开发与准确类型处理；新增 &lt;a href=&#34;https://rsbuild.rs/zh/config/output/module&#34; title=&#34;output.module&#34; rel=&#34;noopener ugc nofollow&#34;&gt;output.module&lt;/a&gt; 支持 Node.js ESM 产物，后续将扩展到 Web。&lt;br /&gt;
Rslib 0.12：模板集成 Rstest 测试框架，推进全新 ESM 产物方案，目标对齐 esbuild/Rollup 的产物质量并保持 webpack 互操作一致性；参考 &lt;a href=&#34;https://jserfeng.github.io/interop-test/by-test-case&#34; title=&#34;interop 测试&#34; rel=&#34;noopener ugc nofollow&#34;&gt;interop 测试&lt;/a&gt;。&lt;br /&gt;
Rspress 2.0 beta：新增 Markdown 文本复制组件，配合 &lt;a href=&#34;https://v2.rspress.rs/plugin/official-plugins/llms&#34; title=&#34;@rspress/plugin-llms&#34; rel=&#34;noopener ugc nofollow&#34;&gt;@rspress/plugin-llms&lt;/a&gt; 自动生成符合 llms.txt 标准的文件，方便大模型处理内容。&lt;br /&gt;
Rsdoctor 1.2：新增聚合模块精确分析与全新 Treemap 视图，改善可视化与准确性；详见 &lt;a href=&#34;https://rsdoctor.rs/zh/blog/release/release-note-1_2&#34; title=&#34;Rsdoctor 1.2 发布博客&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Rsdoctor 1.2 发布博客&lt;/a&gt;。&lt;br /&gt;
Rstest 0.2：新增完整 mock API（ESM 支持）、watch 模式增量重跑与 CLI 快捷键，显著提升测试效率；见 &lt;a href=&#34;https://rstest.rs/api/rstest/mockModules&#34; title=&#34;Mock API 文档&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Mock API 文档&lt;/a&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Prisma 都整的加了个 AI 安全护栏了，太体贴了，&lt;a href=&#34;https://github.com/prisma/prisma/releases/tag/6.15.0&#34; title=&#34;Prisma 6.15.0&#34; rel=&#34;noopener&#34;&gt;Prisma 6.15.0&lt;/a&gt; 发布：新增 AI 安全护栏、统一 prisma-client 运行时配置、支持 Vercel Fluid 连接池、Management API GA、Pipedream 集成、create-db 输出 JSON、直连能力接近 GA。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Prisma ORM 现在包括内置安全检查，可在 AI 编码助手触发时防止破坏性命令。CLI 可以识别它何时被流行的 AI 代理执行，例如 Claude Code、Gemini CLI、Qwen Code、Cursor、Aider 和 Replit。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Electron 37.4、Faker 10.0、Tiptap 3.3、RxDB 16.18……&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

      
    </content>
    
  </entry>
  
  <entry>
    <title><![CDATA[FE Bits Vol.4｜Next 15.5、RN 0.81、几个顺手工具]]></title>
    <link rel="alternate" type="text/html" href="https://news.cosine.ren/p/vol-4" />
    <id>https://news.cosine.ren/p/vol-4#12050</id>
    <author>
      <name>cosine</name>
    </author>
    <published>2025-08-24T04:00:00Z</published>
    <updated>2025-08-24T04:00:00Z</updated>
    
    <content type="html">
      &lt;blockquote&gt;
&lt;p&gt;本周刊更新时间期望是在每周天，网站在建设中……&lt;br /&gt;
目前推荐使用 &lt;a href=&#34;https://folo.is/&#34; title=&#34;Folo&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Folo&lt;/a&gt; 订阅本周刊的 &lt;a href=&#34;https://quaily.com/cosine/feed/atom&#34; title=&#34;Quaily RSS&#34; rel=&#34;noopener&#34;&gt;Quaily RSS&lt;/a&gt;。&lt;br /&gt;
公众号 前端周周谈 FE Bits，点击阅读原文链接可查看原文。&lt;br /&gt;
建了个 QQ 讨论小群 598022684 欢迎加入，日常讨论前端技术 &amp;amp; 生活，也可在群里投稿自己的文章，随意加入，比较偏向粉丝群的性质～&lt;br /&gt;
本周刊同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;，欢迎关注。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;今天是 2025 年 8 月 24 日，星期日。&lt;/p&gt;
&lt;p&gt;本周我给我开发的 MoeCopy AI 浏览器插件写了个文档站 &lt;a href=&#34;https://moe.cosine.ren/docs&#34; title=&#34;A Link of https://moe.cosine.ren/docs&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://moe.cosine.ren/docs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;本浏览器插件&lt;a href=&#34;https://github.com/yusixian/moe-copy-ai&#34; title=&#34;开源&#34; rel=&#34;noopener&#34;&gt;开源&lt;/a&gt;，轻量级，填入自己的 apikey 即可使用，欢迎尝试，喜欢的话可以给个 star。&lt;/p&gt;
&lt;p&gt;感觉这周挺忙，也没有很多时间搜集素材搞深入分析，所以这期是比较简单的汇总。&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;写在前面的碎碎念&lt;/h2&gt;
&lt;p&gt;这周在工作群给不了解的同事发了下关于 Cursor 定价调整的说明，感觉也可以同步一下这里。Cursor 的&lt;a href=&#34;https://docs.cursor.com/zh/account/pricing&#34; title=&#34;定价列表&#34; rel=&#34;noopener ugc nofollow&#34;&gt;定价列表&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;Cursor 的定价曾经调整过很多次，被骂惨了。最早是随便用，pro 就可以，每月 500 次快速请求用完了会进入慢速请求模式但是还是能用。后面调了好几次，慢慢变成请求计费取消慢速请求，现在变成了：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Pro ($20/月)：适合主要使用 Tab 功能，偶尔使用 agent 的用户。&lt;br /&gt;
Pro+ ($60/月)：适合几乎每个工作日都使用 agent 编程的用户。&lt;br /&gt;
Ultra ($200/月)：适合使用 agent 完成大部分编程工作的高级用户。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;请求限制是：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Pro：约 225 次 Sonnet 4 请求，约 550 次 Gemini 请求，或约 650 次 GPT 4.1 请求&lt;br /&gt;
Pro+：约 675 次 Sonnet 4 请求，约 1,650 次 Gemini 请求，或约 1,950 次 GPT 4.1 请求&lt;br /&gt;
Ultra：约 4,500 次 Sonnet 4 请求，约 11,000 次 Gemini 请求，或约 13,000 次 GPT 4.1 请求&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;官方还说「像 Opus 4 这样的模型每次请求消耗更多令牌，比其他模型更快达到使用限制。我们建议有选择性和有意识地选择这些模型。」就是烧不起 token 了&lt;/p&gt;
&lt;p&gt;超过就会转很笨的 auto 模型，或者开 max 模式按量付费，所以现在 Cursor 不划算了，对于开发来说只用 tab 就够了。&lt;/p&gt;
&lt;p&gt;Teams 版本就是按人头计费， 40 美元/月&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;团队席位每月为每个用户提供 500 个请求。每次使用代理时，大多数模型将消耗一个请求。少数模型成本更高：当您启用思考功能时，Sonnet 3.7 和 Sonnet 4 消耗两个请求。MAX 模式定价基于令牌计算，根据模型提供商的 API 价格。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;省流的话，就是现在个人档/团队档位是按请求次数计费，加钱加档位只是免费请求的量会更多，没有任何新功能，所有档位都包含所有功能，超过免费量就会转很笨的 auto 模型，或者开 max 模式按 token 付费。&lt;/p&gt;
&lt;p&gt;官方似乎也意识到了这点，现在还专门在定价说明里强调 20 刀的版本「适合主要使用 Tab 功能，偶尔使用代理的用户」&lt;/p&gt;
&lt;p&gt;该跑路的应该在七月份的定价调整的时候就跑路了吧，感觉现在留下的都是离不开他的 Tab 或者是年付订阅的了。&lt;/p&gt;
&lt;p&gt;个人的话其实是已经用 Claude Code 替代 Cursor 的对话很久了，只用 Cursor 的 Tab 功能，他的 Tab 功能目前还是没有找到平替的。&lt;/p&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;生态与社区动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.appinn.com/windows11-kb5063878/&#34; title=&#34;微软 8 月份更新 Win11，真把用户的 1TB 硬盘炸了？还能抢救吗？&#34; rel=&#34;noopener ugc nofollow&#34;&gt;微软 8 月份更新 Win11，真把用户的 1TB 硬盘炸了？还能抢救吗？&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://leerob.com/reflections&#34; title=&#34;Reflections on the React Community&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Reflections on the React Community&lt;/a&gt;：Lee 回顾自己十年 React 与 Next.js 的经历，反思社区建设、开源与商业动机的矛盾，以及 React Server Components 的发展与挑战，并呼吁对开源贡献者保持善意与理解。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://jsdev.space/future-of-javascript/&#34; title=&#34;JavaScript 的未来：等待我们的是什么&#34; rel=&#34;noopener ugc nofollow&#34;&gt;JavaScript 的未来：等待我们的是什么&lt;/a&gt;：文章总结了最新 TC39 提案进展，展示了从资源管理 &lt;code&gt;using&lt;/code&gt;、&lt;code&gt;Array.fromAsync&lt;/code&gt; 到随机数、数据不可变等功能如何塑造 JavaScript 的未来发展。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://nextjs.org/blog/next-15-5&#34; title=&#34;Next.js 15.5 Released&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Next.js 15.5 Released&lt;/a&gt;，引入了 Turbopack 构建（beta）、稳定的 Node.js 中间件、TypeScript 路由类型完善、弃用 &lt;code&gt;next lint&lt;/code&gt;，并提前提示 Next.js 16 的弃用变化。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://reactnative.dev/blog/2025/08/12/react-native-0.81&#34; title=&#34;React Native 0.81&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React Native 0.81&lt;/a&gt;：本次更新带来 Android 16 支持、iOS 预编译构建加速、弃用 SafeAreaView、移除内置 JSC 以及多项性能改进和破坏性变更。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-2&#34;&gt;文章与视频&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;📓 &lt;a href=&#34;https://blog.solazy.me/20250821/&#34; title=&#34;瘸腿的巨人&#34; rel=&#34;noopener ugc nofollow&#34;&gt;瘸腿的巨人&lt;/a&gt;：非常有趣的观点。&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;无论一个人在某个领域攀登到多高的位置，他首先是一个普通人。和我们一样，他们需要呼吸、进食，如果饮食单一也同样会营养不良。他们之所以成为「大 V」或专家，往往只是因为后天的发展路径、精力分配以及行业机遇，让他们在特定的道路上走得更远，处理着与我们不尽相同的问题。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;作者在社交媒体上观察到一些在各自领域有影响力的用户，在某些话题上表现出知识的局限性。他们将大量时间和精力投入到专业领域，牺牲了对其他领域的了解。而这种“瘸腿”的状态使得他们在熟悉领域之外显得脆弱，这种现象在现代社会普遍存在，深度追求往往伴随着其他方面的不足。学会理解和接受这种现象，认识到“巨人”也是普通人，他们的“瘸腿”是时代和社会分工的产物。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;追求任何一个领域的深度，似乎都不可避免地要以牺牲其他领域的广度为代价。&lt;br /&gt;
所以，当我再看到那些平日里敬仰的专业人士，在他们不熟悉的领域发表一些浅薄言论时，我慢慢学会了不再感到惊讶或失望。我看到的，不再是一个偶像的崩塌，而只是一个将所有精力都投入到一条腿上的人，不小心用另一条腿走路的样子。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;📓 &lt;a href=&#34;https://aurorascharff.no/posts/server-client-component-composition-in-practice/&#34; title=&#34;Server and Client Component Composition in Practice&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Server and Client Component Composition in Practice&lt;/a&gt;：探索 Server Component 与 Client Component 的组合实践。&lt;/li&gt;
&lt;li&gt;📓 &lt;a href=&#34;https://domenic.me/builtin-ai-api-design/&#34; title=&#34;设计 Chrome 的内置 AI Web API&#34; rel=&#34;noopener ugc nofollow&#34;&gt;设计 Chrome 的内置 AI Web API&lt;/a&gt;：Google Chrome 团队成员 Domenic 分享了有关 Chrome 最新 AI 功能 API 设计方式的一些见解。&lt;/li&gt;
&lt;li&gt;📓 &lt;a href=&#34;https://css-tip.com/circular-gallery/&#34; title=&#34;Circular gallery of rounded images&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Circular gallery of rounded images&lt;/a&gt;：利用 CSS 的 &lt;code&gt;offset&lt;/code&gt; 属性和 &lt;code&gt;:nth-child&lt;/code&gt; 选择器，即可创建一个将多张图片排列成同心圆的画廊效果，还可以实现带动画版本的。 &lt;img src=&#34;https://r2.cosine.ren/i/2025/08/5ee99b98a64edc1adc243971d013450a.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/li&gt;
&lt;li&gt;📓 &lt;a href=&#34;https://www.ingressr.com/blog/webhook-security-incident-analysis/&#34; title=&#34;如何因 Shopify webhook 解析错误导致数据库完全删除&#34; rel=&#34;noopener ugc nofollow&#34;&gt;如何因 Shopify webhook 解析错误导致数据库完全删除&lt;/a&gt;：一次错误的 Shopify Webhook 解析因 JavaScript 解构与 ORM 行为理解不当导致全库数据被删除，但最终依靠完善的备份机制成功恢复，凸显输入验证、认证与防御性编程的重要性。&lt;/li&gt;
&lt;li&gt;📓 &lt;a href=&#34;https://zed.dev/blog/why-llms-cant-build-software&#34; title=&#34;Why LLMs Can&amp;#39;t Really Build Software - Zed Blog&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Why LLMs Can&#39;t Really Build Software - Zed Blog&lt;/a&gt;：探讨 LLMs 目前无法真正构建软件的观点，认为其缺乏像人类工程师一样建立并维持清晰&amp;quot;心智模型&amp;quot;的能力&lt;/li&gt;
&lt;li&gt;📓 &lt;a href=&#34;https://frontendmasters.com/blog/web-design-what-is-the-web-capable-of-that-is-hard-to-express-in-design-software/&#34; title=&#34;Web Design: What is the web capable of that is hard to express in design software?&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Web Design: What is the web capable of that is hard to express in design software?&lt;/a&gt;：探讨设计软件与真实 Web 技术能力之间的差距，强调动态、响应式和交互特性难以在设计稿中表达。&lt;/li&gt;
&lt;li&gt;📓 &lt;a href=&#34;https://cookbook.openai.com/&#34; title=&#34;OpenAI Cookbook&#34; rel=&#34;noopener ugc nofollow&#34;&gt;OpenAI Cookbook&lt;/a&gt;：OpenAI 在发布 GPT-5 的时候也发布了一些全新的教程，涵盖提示词指南、新工具使用及代码编写等内容。&lt;/li&gt;
&lt;li&gt;📓 &lt;a href=&#34;https://frontendmasters.com/blog/obsessing-over-smooth-radial-gradient-disc-edges/&#34; title=&#34;Obsessing Over Smooth radial-gradient() Disc Edges&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Obsessing Over Smooth radial-gradient() Disc Edges&lt;/a&gt;：探讨如何利用 CSS 的 &lt;code&gt;resolution&lt;/code&gt; 媒体查询，解决 &lt;code&gt;radial-gradient&lt;/code&gt; 创建的圆形边缘锯齿问题。&lt;/li&gt;
&lt;li&gt;📓 &lt;a href=&#34;https://www.joshwcomeau.com/svg/interactive-guide-to-paths/&#34; title=&#34;An Interactive Guide to SVG Paths&#34; rel=&#34;noopener ugc nofollow&#34;&gt;An Interactive Guide to SVG Paths&lt;/a&gt;：深入探讨 SVG 的 path 元素，详细介绍如何绘制 Bézier 曲线和弧形的优质教程。&lt;/li&gt;
&lt;li&gt;📓 &lt;a href=&#34;https://www.appinn.com/terminal-tty-and-shell/&#34; title=&#34;终端（Terminal）、TTY 和 Shell，还有 SSH，一次搞懂它们到底是什么？ - 小众软件&#34; rel=&#34;noopener ugc nofollow&#34;&gt;终端（Terminal）、TTY 和 Shell，还有 SSH，一次搞懂它们到底是什么？ - 小众软件&lt;/a&gt;：科普了计算机中多个相关概念，包括终端（Terminal）、TTY、Shell 及 SSH 协议，帮助读者理解这些术语的定义与功能，以及它们在现代计算机中的应用和重要性。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-3&#34;&gt;工具与库更新&lt;/h2&gt;
&lt;h3 id=&#34;heading-4&#34;&gt;工具&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://cpti.browserfly.app/zh/&#34; title=&#34;CPTI - 程序员 16 型人格测试&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CPTI - 程序员 16 型人格测试&lt;/a&gt;：程序员的 MBTI 人格测试，AI 描述挺准确，想法很有趣。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://gruhn.github.io/regex-utils/equiv-checker.html&#34; title=&#34;RegExp Equivalence Checker&#34; rel=&#34;noopener ugc nofollow&#34;&gt;RegExp Equivalence Checker&lt;/a&gt;：一个可检测两个正则表达式是否匹配相同字符串的在线工具，并展示差异示例与支持的语法。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/hughkli/Lookin&#34; title=&#34;Lookin&#34; rel=&#34;noopener&#34;&gt;Lookin&lt;/a&gt;：最近看 iOS 开发看到的，Lookin 是一个由腾讯微信读书团队开发的、专为 iOS 开发者设计的免费开源 UI 调试工具。作者的介绍文章在 &lt;a href=&#34;https://mp.weixin.qq.com/s/DL28y2qHkuDv4W_zLUbKcg&#34; title=&#34;A Link of https://mp.weixin.qq.com/s/DL28y2qHkuDv4W_zLUbKcg&#34; rel=&#34;noopener ugc nofollow&#34;&gt;https://mp.weixin.qq.com/s/DL28y2qHkuDv4W_zLUbKcg&lt;/a&gt; &lt;img src=&#34;https://r2.cosine.ren/i/2025/08/fd19abb2ef884a9aea1d57e518d490ed.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/prem-k-r/MaterialYouNewTab&#34; title=&#34;MaterialYouNewTab&#34; rel=&#34;noopener&#34;&gt;MaterialYouNewTab&lt;/a&gt;：这是一个灵感来源于谷歌“Material You”设计的简洁新标签页浏览器扩展。 &lt;img src=&#34;https://r2.cosine.ren/i/2025/08/7988a5ac9b72625631a6faf8c58858e7.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/vercel/streamdown&#34; title=&#34;Streamdown&#34; rel=&#34;noopener&#34;&gt;Streamdown&lt;/a&gt;：Vercel 出的一款专为 AI 流式响应设计的 react-markdown 替代品，能智能处理并渲染不完整的 Markdown 内容。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/weynechen/intrascribe&#34; title=&#34;IntraScribe&#34; rel=&#34;noopener&#34;&gt;IntraScribe&lt;/a&gt;：一个专为重视数据隐私的团队设计的本地化语音转录与总结工具，确保所有数据保留在本地服务器。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Richard9394/MingCute&#34; title=&#34;MingCute&#34; rel=&#34;noopener&#34;&gt;MingCute&lt;/a&gt;：一个精心设计的开源图标库，提供多种风格与格式，适合网页和移动端的设计与开发使用。 &lt;img src=&#34;https://r2.cosine.ren/i/2025/08/736ce0bc3d7a70405f248a78963b0e6c.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;heading-5&#34;&gt;库更新&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://nextjs.org/blog/next-15-5&#34; title=&#34;Next.js 15.5 Released&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Next.js 15.5 Released&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Turbopack Builds（测试版）：生产 turbopack 版本（下一个版本 --turbopack）现在处于测试阶段&lt;/li&gt;
&lt;li&gt;Node.js 中间件（稳定版）：Node.js 运行时对中间件的支持现在稳定&lt;/li&gt;
&lt;li&gt;TypeScript 改进：类型化路由、路由导出验证和路由类型帮助程序&lt;/li&gt;
&lt;li&gt;next lint：弃用 next lint 命令，现在可以在 ESLint（综合规则）、Biome（快速且规则较少）或无 linter 之间进行选择。ESLint 项目现在生成显式的 eslint.config.mjs 文件，而不是依赖下一个 lint 命令包装器，从而为您的 lint 规则提供完全的透明度。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://reactnative.dev/blog/2025/08/12/react-native-0.81&#34; title=&#34;React Native 0.81 Released&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React Native 0.81 Released&lt;/a&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;默认支持 Android 16 (强制 edge-to-edge views)&lt;/li&gt;
&lt;li&gt;iOS 预编译构建实验性支持，速度提升最高 10 倍&lt;/li&gt;
&lt;li&gt;Expo SDK 54 开启 beta，集成 RN 0.81 + React 19.1&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Waku 0.25, Astro 5.13, ESLint v9.33.0, Fastify 5.5, pnpm 10.15, Biome 2.2……&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;完～&lt;/p&gt;

      
    </content>
    
  </entry>
  
  <entry>
    <title><![CDATA[FE Bits Vol.3｜CSS attr() 类型化进化，PostCSS 复盘 12 年]]></title>
    <link rel="alternate" type="text/html" href="https://news.cosine.ren/p/vol-3" />
    <id>https://news.cosine.ren/p/vol-3#11777</id>
    <author>
      <name>cosine</name>
    </author>
    <published>2025-08-17T03:40:00Z</published>
    <updated>2025-08-17T03:40:00Z</updated>
    
    <content type="html">
      &lt;blockquote&gt;
&lt;p&gt;本周刊更新时间期望是在每周天，网站在建设中……&lt;br /&gt;
目前推荐使用 &lt;a href=&#34;https://folo.is/&#34; title=&#34;Folo&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Folo&lt;/a&gt; 订阅本周刊的 &lt;a href=&#34;https://quaily.com/cosine/feed/atom&#34; title=&#34;Quaily RSS&#34; rel=&#34;noopener&#34;&gt;Quaily RSS&lt;/a&gt;。&lt;br /&gt;
公众号 前端周周谈 FE Bits，点击阅读原文链接可查看原文。&lt;br /&gt;
建了个 QQ 讨论小群 598022684 欢迎加入，日常讨论前端技术 &amp;amp; 生活，也可在群里投稿自己的文章，随意加入，比较偏向粉丝群的性质～&lt;br /&gt;
本周刊同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;，欢迎关注。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;今天是 2025 年 8 月 17 日，星期日。&lt;/p&gt;
&lt;p&gt;这周二我迎来了我的 24 岁生日，回想往昔颇为感慨，没想到这就已经 24 岁了，一转眼妹妹都高考完上大一了，时间过的真的是很快的。&lt;/p&gt;
&lt;p&gt;这周内容较少，不过也够了，就没合并成双周刊。&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;生态与社区动态&lt;/h2&gt;
&lt;p&gt;本周没有什么大动态，那就放一些我关心的比较有趣的文章或事儿吧～&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rstack 家族新成员 &lt;a href=&#34;https://github.com/web-infra-dev/rslint&#34; title=&#34;RSLint&#34; rel=&#34;noopener&#34;&gt;RSLint&lt;/a&gt; 发布，实验阶段，由 typescript-go 提供支持。&lt;/li&gt;
&lt;li&gt;GitHub CEO Thomas Dohmke 宣布辞职创业，将任至 2025 年底，GitHub 并入微软不再独立运营。&lt;a href=&#34;https://github.blog/news-insights/company-news/goodbye-github/&#34; title=&#34;Auf Wiedersehen, GitHub ♥️&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Auf Wiedersehen, GitHub ♥️&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.appinn.com/microsoft-lens-shutdown/&#34; title=&#34;微软关闭 12 年历史的 Microsoft Lens&#34; rel=&#34;noopener ugc nofollow&#34;&gt;微软关闭 12 年历史的 Microsoft Lens&lt;/a&gt; 微软宣布将于 2025 年 9 月 15 日起逐步关闭其拥有 12 年历史的文档扫描应用 Microsoft Lens，并计划由其 AI 助手 Copilot 取代。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://mp.weixin.qq.com/s/L36fFeFsNikTnaoA_HuW2w&#34; title=&#34;Rsdoctor 1.2 发布：打包产物体积一目了然&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Rsdoctor 1.2 发布：打包产物体积一目了然&lt;/a&gt;：Rsdoctor 1.2 新增聚合模块体积分析、Gzip 压缩展示、Rsdoctor MCP 和 Treemap 可视化增强。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://huggingface.co/google/gemma-3-270m&#34; title=&#34;Google 发布了 Gemma-3-270M 超小型多模态模型&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Google 发布了 Gemma-3-270M 超小型多模态模型&lt;/a&gt;，适合端侧与低资源场景。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://developer.chrome.com/blog/chrome-140-beta?hl=zh-cn&#34; title=&#34;Chrome 140 Beta 版 | Blog | Chrome for Developers&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Chrome 140 Beta 版 | Blog | Chrome for Developers&lt;/a&gt;：Chrome 140 Beta 引入 CSS 类型化算术、HTTP Cookie 前缀等新特性，并优化视图过渡与本地网络访问限制。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;文章与视频&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;📓 &lt;a href=&#34;https://evilmartians.com/chronicles/what-we-learned-from-creating-postcss&#34; title=&#34;我们从创建 PostCSS 中学到了什么&#34; rel=&#34;noopener ugc nofollow&#34;&gt;我们从创建 PostCSS 中学到了什么&lt;/a&gt;：Andrey Sitnik 分享了过去 12 年来创建和维护 PostCSS 开源项目的经验教训。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📓 &lt;a href=&#34;https://www.yunyoujun.cn/posts/death-and-rebirth-of-open-source-projects&#34; title=&#34;开源项目的「死与新生」 - 云游君&#34; rel=&#34;noopener ugc nofollow&#34;&gt;开源项目的「死与新生」 - 云游君&lt;/a&gt; 从开发者视角探讨如何通过社区运营、决策优化与长期主义延长开源项目生命周期，并坦然面对项目迭代与更替。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📓 &lt;a href=&#34;https://www.bilibili.com/opus/1100638498347548688&#34; title=&#34;超短篇：苹果系统迁移史 - 哔哩哔哩&#34; rel=&#34;noopener ugc nofollow&#34;&gt;超短篇：苹果系统迁移史 - 哔哩哔哩&lt;/a&gt;：台长的超长文，推荐阅读，很有意思！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📓 &lt;a href=&#34;https://www.zhangxinxu.com/wordpress/2025/08/css-container-scroll-state/&#34; title=&#34;CSS @container scroll-state 容器滚动查询&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS @container scroll-state 容器滚动查询&lt;/a&gt;：讲解 CSS 中 &lt;code&gt;@container scroll-state&lt;/code&gt; 滚动容器查询的新玩法，介绍如何基于容器滚动状态进行样式响应与交互。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📓 &lt;a href=&#34;https://css-tip.com/broken-image/&#34; title=&#34;How to style a broken image&#34; rel=&#34;noopener ugc nofollow&#34;&gt;How to style a broken image&lt;/a&gt;：CSS 小贴士，如何优雅处理图片加载失败的样式与占位。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📓 &lt;a href=&#34;https://baoyu.io/blog/context-engineering-skills-for-normal-users&#34; title=&#34;普通人也能用得上的 Context Engineering 技巧&#34; rel=&#34;noopener ugc nofollow&#34;&gt;普通人也能用得上的 Context Engineering 技巧&lt;/a&gt;：这篇文章面向普通用户，提炼了实用的“上下文工程”技巧：通过精简会话与任务、主动提供关键信息，以及借助 Agent 选择合适模型、提供工具并先做计划来获取更准确的上下文，从而显著提升使用 AI 的效果与效率。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📓 &lt;a href=&#34;https://www.stefanjudis.com/blog/how-i-record-edit-and-publish-youtube-videos/&#34; title=&#34;我如何录制、编辑并发布 YouTube 视频&#34; rel=&#34;noopener ugc nofollow&#34;&gt;我如何录制、编辑并发布 YouTube 视频&lt;/a&gt;：Stefan Judis 详细分享了他制作 YouTube 技术视频的完整流程，涵盖从选题、代码准备、录制（Screenflow、Keynote）、编辑（Descript）到硬件设备和实用技巧等方方面面。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;播客 &lt;a href=&#34;https://pythonhunter.org/episodes/ep56&#34; title=&#34;捕蛇者说 Ep 56. 对话 Hawstein：从独立开发，到追寻人生的意义&#34; rel=&#34;noopener ugc nofollow&#34;&gt;捕蛇者说 Ep 56. 对话 Hawstein：从独立开发，到追寻人生的意义&lt;/a&gt;：对《一个独立创造者的五年》作者 Hawstein 的长谈，涉及自由代价与存在主义议题。从独立开发切入，谈人生规划与意义追寻。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;本期节目，我们请到了《一个独立创造者的五年》的作者 Hawstein。从独立开发切入，我们聊了很多关于自身和时代的思考。做了六年捕蛇者说，本期是我个人（laike9m）最喜欢的一期，也希望大家喜欢。&lt;br /&gt;
本期关键词：&lt;br /&gt;
独立开发 / 人生规划 / 现代性与分工 / 副业模式 / 开源 / 自由的代价 / 存在主义危机 / 技术乐观 / 死亡思考&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;我很喜欢这期播客，很有意思。&lt;/p&gt;
&lt;h3 id=&#34;css-&#34;&gt;CSS 新特性&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;📓 &lt;a href=&#34;https://webkit.org/blog/17240/a-gentle-introduction-to-anchor-positioning/&#34; title=&#34;A gentle introduction to anchor positioning&#34; rel=&#34;noopener ugc nofollow&#34;&gt;A gentle introduction to anchor positioning&lt;/a&gt;：CSS 锚点定位功能让元素能基于另一元素位置自动布局，简化响应式菜单和提示框的实现。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;有关 &lt;code&gt;CSS attr()&lt;/code&gt; 的几篇优秀文章：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;📓 &lt;a href=&#34;https://frontendmasters.com/blog/how-to-use-attr-in-css-for-columns-colors-and-font-size/&#34; title=&#34;如何在 CSS 中使用 attr() 属性设置列、颜色和字体大小&#34; rel=&#34;noopener ugc nofollow&#34;&gt;如何在 CSS 中使用 attr() 属性设置列、颜色和字体大小&lt;/a&gt;：进阶示例讲解 attr() 在列布局、颜色与字号的玩法，并提供了相关资料推荐&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📓 &lt;a href=&#34;https://www.amitmerchant.com/attr-function-types-css/&#34; title=&#34;CSS attr() 现已支持类型&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS attr() 现已支持类型&lt;/a&gt;：Amit Merchant 通过这个很棒的教程向我们提供了如何在 &lt;code&gt;attr()&lt;/code&gt; 中使用类型的概要，演示了它设置宽度和背景值是多么方便。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📓 &lt;a href=&#34;https://una.im/advanced-attr/&#34; title=&#34;una.im | attr() 的新功能&#34; rel=&#34;noopener ugc nofollow&#34;&gt;una.im | attr() 的新功能&lt;/a&gt;：CSS 的&lt;code&gt;attr()&lt;/code&gt;函数新增了类型转换功能，可直接将 HTML 属性值作为颜色、数字等类型用于样式，无需 JavaScript 介入。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📓 &lt;a href=&#34;https://developer.chrome.com/blog/advanced-attr?hl=zh-cn&#34; title=&#34;CSS attr() 已升级 | Chrome for Developers&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS attr() 已升级 | Chrome for Developers&lt;/a&gt;：Chrome 团队官方详解 attr() 升级的背景与实践，围绕类型支持、可用性与示例代码的系统介绍。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本期的 &lt;a href=&#34;https://codepen.io/spark/464&#34; title=&#34;CodePen Spark#464&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CodePen Spark#464&lt;/a&gt; 就是围绕 CSS &lt;code&gt;attr()&lt;/code&gt; 为主题的&lt;/p&gt;
&lt;h2 id=&#34;heading-2&#34;&gt;工具与库更新&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://css-tricks.com/css-questions/&#34; title=&#34;CSS-Questions | CSS-Tricks&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS-Questions | CSS-Tricks&lt;/a&gt;：Sunkanmi Fafowora 推出 CSS-Questions 网站，提供 100 多道题与综合 20 题速测，帮助你检验 CSS 知识的掌握情况。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.self.so/&#34; title=&#34;self.so&#34; rel=&#34;noopener ugc nofollow&#34;&gt;self.so&lt;/a&gt;：把你的简历一键变成可发布的个人网站。上传简历 PDF，经 Llama Guard 审核与 Qwen 2.5 解析后生成站点，基于 Next.js、Clerk、S3、Upstash，开源，可 Vercel 部署。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://rss.diffbot.com/&#34; title=&#34;RSS Anything&#34; rel=&#34;noopener ugc nofollow&#34;&gt;RSS Anything&lt;/a&gt;：使用 &lt;a href=&#34;https://www.diffbot.com/products/extract/&#34; title=&#34;Diffbot 的 Extract API&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Diffbot 的 Extract API&lt;/a&gt; 将网站上的链接列表转换为 RSS 提要。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://tiny-helpers.dev/&#34; title=&#34;Tiny Helpers&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Tiny Helpers&lt;/a&gt;：开发者与设计师的在线小工具大全。涵盖颜色、CSS、图像、图标、性能、可访问性、API 等数百款工具，并可按名称或时间浏览。&lt;img src=&#34;https://r2.cosine.ren/i/2025/08/3d06e7c10c50176abbcb9ad06837b453.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.projectwallace.com/analyze-css&#34; title=&#34;Online CSS Analyzer - Project Wallace&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Online CSS Analyzer - Project Wallace&lt;/a&gt;：Project Wallace 维护了一组 CSS 工具，可输入 url 分析当前的 CSS 代码库。强烈推荐！&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/08/00804aa32209f3896c75c58091d12c1c.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/thecubiq/pen/ZYbQmZN&#34; title=&#34;Liquid Glass | Cubiq&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Liquid Glass | Cubiq&lt;/a&gt;：又一个可交互的“液态玻璃”滤镜与拖拽特效演示。通过背景滤镜和拖拽手柄欣赏流体质感的 UI 交互。&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/08/96971ca73ca24b340060f05b04e5292b.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/blacklead-studio/pen/QwjGRmo&#34; title=&#34;Repetition Image Animation&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Repetition Image Animation&lt;/a&gt;：在这个由 GSAP 驱动的 demo 中，一张走廊的照片伸缩成一系列迷幻的镜厅效果。切换不同的变体，并查看单击和拖动时会发生什么。&lt;br /&gt;
&lt;img src=&#34;https://r2.cosine.ren/i/2025/08/32e5aa2f0bfb1814864acd5696e070e5.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/omnara-ai/omnara&#34; title=&#34;Omnara AI 监工&#34; rel=&#34;noopener&#34;&gt;Omnara AI 监工&lt;/a&gt;：一个开源的 AI 代理“任务控制台”，可在手机/网页上实时监控与交互（通知、问答、远程启动），支持 Claude/Cursor/Copilot 等，并提供 SDK、MCP/REST 接口与 iOS/Web 客户端。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/kepano/defuddle&#34; title=&#34;Defuddle&#34; rel=&#34;noopener&#34;&gt;Defuddle&lt;/a&gt;：一个从网页中提取并清理主要内容的工具，旨在提供易于阅读且结构化的内容，便于进一步处理或转换为 Markdown。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/KittenML/KittenTTS&#34; title=&#34;KittenTTS&#34; rel=&#34;noopener&#34;&gt;KittenTTS&lt;/a&gt;：KittenTTS 是一款超轻量级（25MB、无需 GPU）的英文文本转语音模型，可在任何设备上运行并提供惊艳效果，仅支持英文。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-3&#34;&gt;深入分析&lt;/h2&gt;
&lt;h3 id=&#34;-postcss-&#34;&gt;我们从创建 PostCSS 中学到了什么&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://evilmartians.com/chronicles/what-we-learned-from-creating-postcss&#34; title=&#34;What we learned from creating PostCSS&#34; rel=&#34;noopener ugc nofollow&#34;&gt;What we learned from creating PostCSS&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这篇文章感觉很有意思，所以浅记录一下。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;AI 摘要：这是一篇 PostCSS 12 年演进的复盘：从 Autoprefixer 的诞生到 PostCSS 成为被 Google、Wikipedia、Tailwind 等采用、月下载量 4 亿的开源基础设施。作者围绕产品定位、插件策略、性能架构、版本演进、社区与生态、与竞品相处以及维护者防止倦怠的实践，给出一套贯穿前端工具链建设与开源运营的可复用方法论：以用户可用为先、以架构赢性能、以默认值减少配置、以人情味促协作、以渐进式变更稳生态。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;作者从中学到了以下几课：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第 -1 课：与您的大客户更加合作。&lt;/strong&gt; 至少让他们有机会向您发送带有原型的拉取请求。&lt;br /&gt;
&lt;strong&gt;第 0 课：不要忘记预留大量时间来编写文档和推广您的开源项目。&lt;/strong&gt; 此外，请毫不犹豫地直接联系潜在客户，建议他们使用您的图库。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;投入与写代码相当的时间做 README 与对外沟通，主动向 Webpack 推荐用 PostCSS 做解析器，带来关键增长。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;第 1 课：插件和内置功能之间的平衡。&lt;/strong&gt; 如果您有插件，请为大多数用户提供开箱即用的完整解决方案。只有有独特需求的人才应该禁用/启用插件。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;默认情况下，PostCSS 不执行任何作用。要让它完成任何工作，您需要添加一个特定的插件&lt;br /&gt;
这种方法有两个问题：人们不喜欢做出选择，而且大多数项目无论如何都需要相同的功能。&lt;br /&gt;
因此，PostCSS 用户总是抱怨在不知道他们需要什么的情况下与这个庞大的插件列表作斗争。&lt;br /&gt;
将此与令人惊叹的 Lightning CSS 进行比较，后者已经内置了基本功能（如 polyfills、捆绑和缩小），并且仅在特定用例中需要插件。&lt;br /&gt;
这让我想起了 Ruby on Rails 中的良好实践：约定高于配置。为用户建议一些默认值;不要要求他们定义一切。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;第 2 课：不要害怕为时已晚。&lt;/strong&gt; Chrome 停增前缀与 CSS Houdini 的宣布，都未让 Autoprefixer 与 PostCSS 失去价值；实际落地速度与有效性才是市场检验。尽快做原型、看真实结果，不被“新技术将取代一切”的叙事带偏。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第 3 课：对于性能，架构比编程语言更重要。&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;用 JS 编写的 PostCSS 比用 C++ 编写的 Sass 快 4 倍。不是因为 JS 是一种更好的编程语言，而是因为更好的架构和内存管理。&lt;br /&gt;
JS 社区被炒作毒害，大公司经常使用它。因此，我们都在思考原始的非黑即白的概念，例如 “C++ 比 JS 快” 或 “Rust 的一切都更快” 。&lt;br /&gt;
用 Rust 编写的 Lightning CSS 比 PostCSS 更快（总的来说，它是一个出色的工具）。也就是说，我认为这是因为 Devon Govett 能够进一步改进架构和内存控制，而不仅仅是通过将相同的算法从 JS 重写到 Rust。&lt;br /&gt;
我特别想强调内存管理在性能中的重要性。例如，同样用 JS 编写的 CSSTree 当时比 PostCSS 快约 1.5 倍，主要是通过巧妙地重用对象来最大限度地减少对垃圾收集器的调用。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;第 4 课：通过确保问题不会再次出现来避免倦怠&lt;/strong&gt;&lt;br /&gt;
防止问题的最佳方法是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;添加类型以防止错误地使用 API。&lt;/li&gt;
&lt;li&gt;添加额外的 JS 代码以检查 API 使用情况。&lt;/li&gt;
&lt;li&gt;添加文档应该始终是最后一步，因为许多用户不阅读文档。但通常它是唯一的选择&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;第 5 课：在第一个主要版本中弃用，在下一个主要版本中删除&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;对 API 进行重大更改的最佳方法是滴答法(tick-tack)：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在第一个主要版本上，将 API 标记为已弃用。&lt;/li&gt;
&lt;li&gt;然后，仅在下一个主要版本中删除此 API。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;第 6 课：提供塑造生态系统的最佳实践&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;使用指南、示例和模版等来推广良好做法并阻止不良做法。不要以为人们会自己发现所有最佳实践！&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;不要忘记，文档中的示例不仅仅是插图，而是在社区中形成习惯的东西。明智地使用它们！&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;第 7 课：与竞争对手成为朋友&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在开源中，我们都是免费工作的，任何新的 “竞争对手” 都可以让你免于花自己的时间免费支持人们。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;第 8 课：人情味对社区很重要&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;人的纽带：给插件作者寄明信片/贴纸、出差拜访活跃贡献者，建立真实连接。&lt;/li&gt;
&lt;li&gt;品牌风格：Autoprefixer 的“骑士”与 PostCSS 的“炼金术”主题，让项目更有趣、更易形成文化认同。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最后，是给开源维护者的一些“有争议”的小贴士。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;尽量无构建：库用原生 JS 源码配合手写 .d.ts 或 TypeDoc，方便直接安装分支测试与 node_modules 内即时调试复制。&lt;/li&gt;
&lt;li&gt;静态站点别用 React：项目文档与官网用 Astro 或纯静态 HTML，维护成本更低、更稳。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;完 ovo&lt;/p&gt;

      
    </content>
    
  </entry>
  
  <entry>
    <title><![CDATA[FE Bits 前端周周谈 Vol.2｜V8 提速 JSON.stringify 2x，Vite 周下载首超 Webpack]]></title>
    <link rel="alternate" type="text/html" href="https://news.cosine.ren/p/volume-two" />
    <id>https://news.cosine.ren/p/volume-two#11704</id>
    <author>
      <name>cosine</name>
    </author>
    <published>2025-08-09T19:47:31Z</published>
    <updated>2025-08-09T19:47:31Z</updated>
    
    <content type="html">
      &lt;p&gt;大家好，今天是 2025 年 8 月 10 日，星期日。&lt;/p&gt;
&lt;p&gt;本周末我去参加了深圳的疯狂星期六，很有意思，少数派的场地非常漂亮，空调很足，而且充满了生活气息，然后听老麦讲述少数派的成长历程，了解了很多少数派的故事，大伙聊得也很开心。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/08/bbf6471a619f1793c47c16b134109715.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/08/1f785ab736fb2377a32100f6c9ae1b17.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/08/6d6f4fb51f04ddd2b8669a5fa70148d2.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/08/503d1f924c1eab90cc92f8391580e738.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;我是真的觉得少数派的审美很好，网站和各种周边设计都是，非常高级～&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/08/ff273e07dd476f82445aeb28f4b15683.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;下面进入正题～&lt;/p&gt;
&lt;h1 id=&#34;heading&#34;&gt;生态与社区动态&lt;/h1&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;社区动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;V8 团队将 &lt;code&gt;JSON.stringify&lt;/code&gt; 性能提升两倍多，预计升级到 V8 13.8（Node 24 使用 13.6）后，Node.js 性能将大幅受益（&lt;a href=&#34;https://v8.dev/blog/json-stringify&#34; title=&#34;详细解读&#34; rel=&#34;noopener ugc nofollow&#34;&gt;详细解读&lt;/a&gt;）。&lt;/li&gt;
&lt;li&gt;npm 现支持使用 OpenID Connect (OIDC) 进行 CI/CD 自动安全发布（&lt;a href=&#34;https://github.blog/changelog/2025-07-31-npm-trusted-publishing-with-oidc-is-generally-available/&#34; title=&#34;官方说明&#34; rel=&#34;noopener ugc nofollow&#34;&gt;官方说明&lt;/a&gt;）。&lt;/li&gt;
&lt;li&gt;Deno 团队简析与 Oracle 的“JavaScript 商标”争端，并联名呼吁“释放 JavaScript”（&lt;a href=&#34;https://www.youtube.com/watch?v=_tGwOv3scKw&#34; title=&#34;视频摘要&#34; rel=&#34;noopener ugc nofollow&#34;&gt;视频摘要&lt;/a&gt;，&lt;a href=&#34;https://javascript.tm/&#34; title=&#34;公开信&#34; rel=&#34;noopener ugc nofollow&#34;&gt;公开信&lt;/a&gt;）。&lt;/li&gt;
&lt;li&gt;虽然与前端不相关，但是值得提一嘴的是，OpenAI 本周宣布推出两款开放权重语言模型 gpt-oss-120b 与 gpt-oss-20b，并在 8 月 7 日推出 GPT-5，将其设为 ChatGPT 的新默认模型，向 Plus、Pro、Team 以及免费层用户分阶段推送；Pro/Team 用户能选择延时推理的 “GPT-5 Thinking Pro”&lt;/li&gt;
&lt;li&gt;本周 &lt;a href=&#34;https://www.appinn.com/immersive-translate-2-questions/&#34; title=&#34;关于沉浸式翻译的两个疑问：泄漏隐私 &amp;amp;&amp;amp; 限制第三方 API&#34; rel=&#34;noopener ugc nofollow&#34;&gt;关于沉浸式翻译的两个疑问：泄漏隐私 &amp;amp;&amp;amp; 限制第三方 API&lt;/a&gt;，沉浸式反应快照功能引发敏感内容被索引，以及限制第三方 API 使用风波【已撤回】引发热议。&lt;/li&gt;
&lt;li&gt;Cloudflare 指 Perplexity 绕过 no‑crawl 指令；Perplexity 回应称 “过度的封锁伤害所有人”。&lt;a href=&#34;https://blog.cloudflare.com/perplexity-is-using-stealth-undeclared-crawlers-to-evade-website-no-crawl-directives/&#34; title=&#34;报道&#34; rel=&#34;noopener ugc nofollow&#34;&gt;报道&lt;/a&gt;｜&lt;a href=&#34;https://x.com/perplexity_ai/status/1952531537385456019&#34; title=&#34;回应&#34; rel=&#34;noopener&#34;&gt;回应&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Web Platform 更新：本期偏重 Firefox 的新特性合辑，值得关注标准落地与兼容性动向。&lt;a href=&#34;https://web.dev/blog/web-platform-07-2025?hl=zh-cn&#34; title=&#34;What&amp;#39;s new to the web platform&#34; rel=&#34;noopener ugc nofollow&#34;&gt;What&#39;s new to the web platform&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;chrome-139-&#34;&gt;Chrome 139 中的新功能&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://developer.chrome.com/blog/new-in-chrome-139?hl=en&#34; title=&#34;New in Chrome 139&#34; rel=&#34;noopener ugc nofollow&#34;&gt;New in Chrome 139&lt;/a&gt;，Chrome 139 现已推出，这篇文章分享了该版本的一些关键功能。阅读完整的  &lt;a href=&#34;https://developer.chrome.com/release-notes/139&#34; title=&#34;Chrome 139 版本说明&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Chrome 139 版本说明&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;此版本的亮点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;设备上的语音识别功能已加入 &lt;a href=&#34;https://developer.chrome.com/blog/new-in-chrome-139?hl=en#on-device-web-speech-api&#34; title=&#34;Web Speech API&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Web Speech API&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;新增 &lt;code&gt;CSS corner shaping&lt;/code&gt; 属性允许开发者自定义角的形状与曲度，超越传统的 &lt;code&gt;border-radius&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;在 CSS 中尝试 &lt;a href=&#34;https://developer.chrome.com/blog/new-in-chrome-139?hl=en#custom-functions&#34; title=&#34;自定义函数（custom functions）&#34; rel=&#34;noopener ugc nofollow&#34;&gt;自定义函数（custom functions）&lt;/a&gt; 。&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;viteland-2025--7-&#34;&gt;ViteLand 2025 年 7 月更新摘要&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://voidzero.dev/posts/whats-new-jul-2025&#34; title=&#34;What’s New in ViteLand: July 2025 Recap&#34; rel=&#34;noopener ugc nofollow&#34;&gt;What’s New in ViteLand: July 2025 Recap&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;本文梳理了 ViteLand 生态系统在 2025 年 7 月的核心进展，涵盖 Vite、Vitest、Oxc、Rolldown 等项目的重大更新。特别预告了备受期待的首届线下 ViteConf 及全新产品 Vite+，并揭示即将上映的官方纪录片亮点，详情如下。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://x.com/youyuxi/status/1950234261573038444&#34; title=&#34;7 月底 Vite 的 npm 周下载量首次超越 Webpack&#34; rel=&#34;noopener&#34;&gt;7 月底 Vite 的 npm 周下载量首次超越 Webpack&lt;/a&gt;，2025 年 7 月 22 日～ 7 月 28 日这一周，历史上首次 Vite 在 npm 上的的每周下载量超过了 Webpack 的每周下载量。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/08/c35c01c526268bf3f312090eb23d873e.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;5 年前，当 Vite 作为一个副业开始时，谁会想到这一点？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Vite 7 发布，新增  &lt;code&gt;buildApp&lt;/code&gt; hook，升级至  &lt;strong&gt;纯 ESM 包&lt;/strong&gt;，要求 Node.js ≥18（因 Node.js 18 已停止维护）。&lt;/li&gt;
&lt;li&gt;Rolldown-Vite 新版本支持  &lt;code&gt;tsconfig&lt;/code&gt;  路径解析（&lt;code&gt;resolve.tsconfigPaths&lt;/code&gt;）和开箱即用的 Yarn Plug-and-Play，性能优化启动速度提升  2.1 倍，缩短 TTI（交互时间）和冷启动时间。&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;得益于一些&lt;a href=&#34;https://github.com/rolldown/rolldown/pull/5319&#34; title=&#34;深入的 JavaScript 引擎优化技巧&#34; rel=&#34;noopener&#34;&gt;深入的 JavaScript 引擎优化技巧&lt;/a&gt;，Rolldown 的启动时间减少了 2.1 倍。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Oxlint 引入类型感知 Linting（Type-aware linting），支持  &lt;code&gt;no-floating-promise&lt;/code&gt;  等规则，即将推出的第一个版本将包括两条规则，下一个版本将包括来自  &lt;code&gt;typescript-eslint&lt;/code&gt;  的所有类型感知规则，无性能损耗；实验性支持  &lt;a href=&#34;https://www.linkedin.com/feed/update/urn:li:activity:7352247568610783232/&#34; title=&#34;JS 自定义规则&#34; rel=&#34;noopener ugc nofollow&#34;&gt;JS 自定义规则&lt;/a&gt;（兼容 ESLint API）。&lt;/li&gt;
&lt;li&gt;Vitest 推出&lt;a href=&#34;https://github.com/vitest-dev/vitest/releases/tag/v4.0.0-beta.4&#34; title=&#34;视觉回归测试&#34; rel=&#34;noopener&#34;&gt;视觉回归测试&lt;/a&gt;：通过浏览器模式直接对比组件截图（Beta 版支持）；&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Brooooooklyn&#34; title=&#34;napi-rs 的创建者&#34; rel=&#34;noopener&#34;&gt;napi-rs 的创建者&lt;/a&gt; Brooklyn 加入 VoidZero 团队，NAPI-RS v3 发布。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;heading-2&#34;&gt;有趣的动态&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.tomayac.com/2025/07/26/what-a-difference-a-semicolon-makes/&#34; title=&#34;一个分号能带来多大的不同？&#34; rel=&#34;noopener ugc nofollow&#34;&gt;一个分号能带来多大的不同？&lt;/a&gt;&lt;br /&gt;
点击了解 JavaScript 的这个经典陷阱。作者在调试时随意插入了 &lt;code&gt;console.log(‘here’)&lt;/code&gt; 语句并未加分号，位置恰好出现在 IIFE（立即执行函数）之前。缺少分号导致 JavaScript 引擎将后续的 function 代码当作 &lt;code&gt;console.log&lt;/code&gt; 的参数，最终抛出 &lt;code&gt;TypeError&lt;/code&gt;。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Mastodon 上的  Andre  让我想起了  Chris Coyier  出色的  Web 开发荣誉徽章  ，所以我现在自豪地佩戴着我的徽章：“调试了一个多小时的东西，修复实际上是一个字符”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.jim-nielsen.com/2025/href-value-possibilities/&#34; title=&#34;关于锚元素的 href 的冷知识&#34; rel=&#34;noopener ugc nofollow&#34;&gt;关于锚元素的 href 的冷知识&lt;/a&gt;&lt;br /&gt;
本文深入探讨了 HTML 锚点 &lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt; 标签中 &lt;code&gt;href&lt;/code&gt; 属性的一些不常见但非常实用的值。文章不仅回顾了 &lt;code&gt;mailto:&lt;/code&gt;、文本片段 (text fragments) 等已知用法，更重点介绍了一些鲜为人知的技巧，例如使用 &lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;、&lt;code&gt;.&lt;/code&gt; 和 &lt;code&gt;?&lt;/code&gt; 对当前页面进行不同方式的重载，以及它们如何处理 URL 的查询参数和哈希。此外，文章还涵盖了 &lt;code&gt;data:&lt;/code&gt; URL、媒体片段和 PDF 页面链接等。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;heading-3&#34;&gt;文章与视频&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;📓 &lt;a href=&#34;https://github.com/orgs/web-infra-dev/discussions/28&#34; title=&#34;Bundler Tree Shaking 原理及差异 · web-infra-dev · Discussion #28&#34; rel=&#34;noopener&#34;&gt;Bundler Tree Shaking 原理及差异 · web-infra-dev · Discussion #28&lt;/a&gt;：该文章通过对比 Webpack、esbuild、Turbopack 和 Rollup，深入剖析了主流打包工具在 Tree Shaking 实现上的原理、优化粒度及策略差异。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📓 &lt;a href=&#34;https://airi.moeru.ai/docs/zh-Hans/blog/DevLog-2025.08.01/&#34; title=&#34;Project AIRI DevLog @ 2025.08.01&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Project AIRI DevLog @ 2025.08.01&lt;/a&gt;：通过 TextDecoder 和 Intl.Segmenter 实现流式 UTF-8 字节流的字素簇分割，解决多语言实时文本动画的字符组合难题，并开源轻量库 &lt;a href=&#34;https://github.com/sumimakito/clustr&#34; title=&#34;Clustr&#34; rel=&#34;noopener&#34;&gt;Clustr&lt;/a&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📓 &lt;a href=&#34;https://blog.trailofbits.com/2025/06/17/unexpected-security-footguns-in-gos-parsers/&#34; title=&#34;Unexpected security footguns in Go&amp;#39;s parsers&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Unexpected security footguns in Go&#39;s parsers&lt;/a&gt;：这篇文章揭示了 Go 语言中 JSON、XML 和 YAML 解析器存在的、易被忽视的不安全默认行为，这些行为可能导致认证绕过等严重安全漏洞。其中很多提到的点对 Go 以外的很多情况也都适用。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📓 &lt;a href=&#34;https://javarevisited.blogspot.com/2021/05/essential-utf-8-and-utf-16-character..html&#34; title=&#34;每个程序员都应掌握的 10 个 UTF-8 和 UTF-16 字符编码核心概念&#34; rel=&#34;noopener ugc nofollow&#34;&gt;每个程序员都应掌握的 10 个 UTF-8 和 UTF-16 字符编码核心概念&lt;/a&gt;：本文系统梳理了关于 UTF-8 和 UTF-16 的核心概念、区别与实际应用。作者指出，许多程序员往往忽视编码细节，直到遇到乱码和兼容性问题。文章逐一澄清常见误区，比较了编码方式的空间效率、兼容性、字节顺序（endianness）、业界标准，以及不同编码对非英语字符和国际数据的支持。&lt;img src=&#34;https://r2.cosine.ren/i/2025/08/e0a06907cdd88bf0e68295bc34b106af.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📓 &lt;a href=&#34;https://juejin.cn/post/7534918138505953314&#34; title=&#34;浅谈 RAG 并基于 NodeJS 实现基础向量检索服务 - 掘金&#34; rel=&#34;noopener ugc nofollow&#34;&gt;浅谈 RAG 并基于 NodeJS 实现基础向量检索服务 - 掘金&lt;/a&gt;：该文章通过讲解文本分片、向量化、多路召回与重排等核心环节，详细拆解了 RAG 的技术原理，并基于 NodeJS 实现了一个基础的向量检索服务。，&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📓 &lt;a href=&#34;https://www.solberg.is/fast-type-aware-linting&#34; title=&#34;对比 Oxlint 与 Biome 的类型感知实现差异&#34; rel=&#34;noopener ugc nofollow&#34;&gt;对比 Oxlint 与 Biome 的类型感知实现差异&lt;/a&gt;：本文详细比较了两种面向 TypeScript 项目的新一代极快类型感知代码检查 (Type-aware Linting) 工具：Biome 和 Oxlint。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;过去 ESLint / TypeScript-ESLint 虽然类型安全性强，但大规模代码库下执行极慢。Rust 语言重写的 Biome 和 Oxlint，速度提升到秒级，但最初仅支持语法级规则，缺乏类型安全。 Biome 通过全新 Rust 实现的类型分析器（Biotype）逐步覆盖类型规则，但实现难度高且与 TypeScript 官方存在行为偏差风险； Oxlint 则正在采取不同的赌注：等待官方 TypeScript 编译器变得更快。Oxlint 采用与 TypeScript 官方保持一致的 Go 端口 tsgo，并通过 tsgolint 实现与 typescript-eslint 完全一致的 40 条类型规则，且性能提升明显。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;文中追踪社区方案、开发进展及主要作者观点，认为 Oxlint 的技术路线更具前景，最终或将以极快速度和官方一致性替代当前混合 linting 方案。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;📓 &lt;a href=&#34;https://leanrada.com/notes/github-heatmap-widget/&#34; title=&#34;Making my GitHub heatmap widget&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Making my GitHub heatmap widget&lt;/a&gt;  这篇文章介绍了作者如何通过抓取 GitHub 贡献日历的 HTML、将其处理成 JSON 格式，再用一个自定义 WebComponent 将其渲染成个人网站上的热力图小部件。&lt;/li&gt;
&lt;li&gt;📓 &lt;a href=&#34;https://www.builder.io/blog/claude-code&#34; title=&#34;How I use Claude Code (+ my best tips)&#34; rel=&#34;noopener ugc nofollow&#34;&gt;How I use Claude Code (+ my best tips)&lt;/a&gt;：Claude Code 最佳实践与权限安全建议，内含 hook 通知、智能 PR 审查、大型代码库处理等实用技巧。&lt;/li&gt;
&lt;li&gt;🎥 &lt;a href=&#34;https://www.youtube.com/watch?v=f_aqzyIDudI?utm_source=CSS-Weekly&amp;amp;utm_campaign=Issue-617&amp;amp;utm_medium=web&#34; title=&#34;快速实现主题切换动效&#34; rel=&#34;noopener ugc nofollow&#34;&gt;快速实现主题切换动效&lt;/a&gt;：视频讲解如何使用 &lt;code&gt;view-transition&lt;/code&gt; 为网站添加优雅流畅的主题切换动画，提升用户体验。&lt;a href=&#34;https://codepen.io/kevinpowell/pen/xbGeNQy/ef22ccea0c2d257ae1a748f5fd4646da&#34; title=&#34;圆形过渡示例&#34; rel=&#34;noopener ugc nofollow&#34;&gt;圆形过渡示例&lt;/a&gt;、&lt;a href=&#34;https://codepen.io/ragnar_ock/pen/QwbYbOQ&#34; title=&#34;旋转立方体示例&#34; rel=&#34;noopener ugc nofollow&#34;&gt;旋转立方体示例&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;📓 开发者观点：&lt;a href=&#34;https://smallcultfollowing.com/babysteps/blog/2025/07/31/rs-py-ts-trifecta/&#34; title=&#34;Rust、Python、TypeScript 将形成未来三强格局&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Rust、Python、TypeScript 将形成未来三强格局&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;📓 &lt;a href=&#34;https://tkdodo.eu/blog/react-query-selectors-supercharged&#34; title=&#34;React Query Selectors， Supercharged&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React Query Selectors， Supercharged&lt;/a&gt;：本文深入探讨了 React Query 中 &lt;code&gt;select&lt;/code&gt; 选项的高级用法，旨在实现极致的性能优化。&lt;/li&gt;
&lt;li&gt;📓 &lt;a href=&#34;https://frontendmasters.com/blog/count-auto-fill-columns/&#34; title=&#34;Get the number of auto-fit/auto-fill columns in CSS&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Get the number of auto-fit/auto-fill columns in CSS&lt;/a&gt;：这篇文章介绍了一种纯 CSS 技巧，通过结合容器查询和数学函数（包括使用三角函数处理兼容性问题）来动态计算&lt;code&gt;auto-fit&lt;/code&gt;/&lt;code&gt;auto-fill&lt;/code&gt;网格的列数，进而实现复杂的响应式布局。&lt;/li&gt;
&lt;li&gt;🎥 &lt;a href=&#34;https://www.youtube.com/watch?v=v9Al9-0jkoQ&#34; title=&#34;JavaScript 如何真正发展：与 Daniel Ehrenberg 的 TC39 内部对话&#34; rel=&#34;noopener ugc nofollow&#34;&gt;JavaScript 如何真正发展：与 Daniel Ehrenberg 的 TC39 内部对话&lt;/a&gt;。有没有想过谁实际上决定了 JavaScript 是如何发展的？&lt;/li&gt;
&lt;li&gt;📓 &lt;a href=&#34;https://blog.puzzmo.com/posts/2025/07/30/six-weeks-of-claude-code/&#34; title=&#34;6 Weeks of Claude Code&#34; rel=&#34;noopener ugc nofollow&#34;&gt;6 Weeks of Claude Code&lt;/a&gt;：一位开发者分享了使用 Claude Code 六周的经验，认为它极大地解放了生产力，使其能以前所未有的速度清理技术债和进行项目创新，从根本上改变了编程的工作方式。&lt;/li&gt;
&lt;li&gt;📓 &lt;a href=&#34;https://github.com/karminski/one-small-step&#34; title=&#34;karminski/one-small-step&#34; rel=&#34;noopener&#34;&gt;karminski/one-small-step&lt;/a&gt;：一个旨在通过 5 分钟短文快速科普人工智能、硬件等前沿技术概念与原理的教程项目。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;css-&#34;&gt;CSS 新特性&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://frontendmasters.com/blog/infinite-marquee-animation-using-modern-css/&#34; title=&#34;Infinite Marquee Animation using Modern CSS&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Infinite Marquee Animation using Modern CSS&lt;/a&gt;：使用 CSS 动画实现无限滚动 Logo 动画，无需额外 JS 与重复 HTML。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.logrocket.com/css-if-function-conditional-styling/&#34; title=&#34;CSS if() 条件样式函数实用指南&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS if() 条件样式函数实用指南&lt;/a&gt;：详细介绍全新 CSS &lt;code&gt;if()&lt;/code&gt; 条件函数用法，对比从前经典的条件处理技巧，这一函数为 CSS 带来了原生的条件样式能力，极大简化了以往通过媒体查询、自定义属性等方式实现条件逻辑的复杂性。
&lt;ul&gt;
&lt;li&gt;中文博客推荐阅读 &lt;a href=&#34;https://www.zhangxinxu.com/wordpress/2025/07/css-if-function/&#34; title=&#34;CSS 倒反天罡居然支持 if()函数了&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS 倒反天罡居然支持 if()函数了&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://css-tricks.com/bringing-back-parallax-with-scroll-driven-css-animations/&#34; title=&#34;通过滚动驱动的 CSS 动画重新实现经典视差效果&#34; rel=&#34;noopener ugc nofollow&#34;&gt;通过滚动驱动的 CSS 动画重新实现经典视差效果&lt;/a&gt; 本文详细介绍了如何利用新兴的 CSS 滚动驱动动画技术，以纯 CSS 的方式重新实现经典的视差滚动 (Parallax) 效果。与传统 JavaScript 方案相比，纯 CSS 将动画移出主线程运行，提升性能和流畅度。文章通过实例讲解了 &lt;code&gt;animation-timeline&lt;/code&gt; 属性的两种核心时间轴函数 &lt;code&gt;scroll()&lt;/code&gt; 和 &lt;code&gt;view()&lt;/code&gt; 的使用场景与区别，并进一步介绍了如何使用 &lt;code&gt;animation-range&lt;/code&gt; 属性精确控制动画的触发时机与范围。&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;heading-4&#34;&gt;工具与库更新&lt;/h1&gt;
&lt;h2 id=&#34;heading-5&#34;&gt;工具与趣站&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://chrome.dev/carousel/&#34; title=&#34;CSS-only 轮播图库&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CSS-only 轮播图库&lt;/a&gt;：展示 CSS 轮播规范及纯 CSS Demo 站点，为无 JS 场景提供灵感资源。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://awesomeindex.dev/&#34; title=&#34;AwesomeIndex&#34; rel=&#34;noopener ugc nofollow&#34;&gt;AwesomeIndex&lt;/a&gt;：一个聚合搜索工具，它能让开发者一次性搜索数百个 GitHub 上高质量的 “Awesome” 精选列表。这些列表包含了各种主题下的优质资源、工具和学习资料，AwesomeIndex 将这些分散的宝贵信息集中起来，极大地提高了查找和发现特定领域资源的效率。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/haydenbleasel/kibo&#34; title=&#34;Kibo UI&#34; rel=&#34;noopener&#34;&gt;Kibo UI&lt;/a&gt;：Kibo UI 是一个基于 shadcn 的扩展组件库，开箱即用，shadcn/ui 专注于包装 Radix UI 中的原语，而 Kibo UI 则被设计为一个更全面的组件库，可用于构建更复杂的应用程序。（PS：其作者将其中的 AI 组件&lt;a href=&#34;https://github.com/haydenbleasel/kibo/issues/215#issuecomment-3165413345&#34; title=&#34;捐赠&#34; rel=&#34;noopener&#34;&gt;捐赠&lt;/a&gt;给了 Vercel 来创建 &lt;a href=&#34;https://www.notion.so/Vol-2-24afb21d4089809ca8aac3c58859259c?pvs=21&#34; title=&#34;AI Elements&#34; rel=&#34;noopener ugc nofollow&#34;&gt;AI Elements&lt;/a&gt; 组件库）&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;嘿！我将 Kibo 的 AI 组件捐赠给 Vercel 来创建 AI 元素——我们已经投入了大量工作来改进它们，所以我绝对建议升级到 AI 元素。 大多数组件都有相同的名称，许多组件都经过升级，还有一些新的组件。我认为我们将 Input 重命名为 PromptInput，但除此之外，应该可以无缝切换！ 另外，如果您运行 npx kibo-ui add ai，它将使用 AI Elements 👍&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/08/60ba61d1beb235eb52ea2bf90c2bc907.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/innei-template/smart-webapp-template&#34; title=&#34;smart-webapp-template&#34; rel=&#34;noopener&#34;&gt;smart-webapp-template&lt;/a&gt; 一个精心设计的 Vite + React 模板，具有精心设计的 Claude 和 Cursor 规则，展示了如何与 AI 协作构建高质量的 Web 页面。&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;拾一.ens18 (@oQuery)：一个好的 template 是 AI Coding 奠基，如果 ai 写的通篇都是蓝字渐变风格，真该换一个好的 template。我重新整理了一个我一直在用的 template，里面所有的设计风格、组织架构都调教完了。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/simeydotme/pen/RNWoPRj&#34; title=&#34;Colored, Glowing Edge Card&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Colored, Glowing Edge Card&lt;/a&gt;：Simon Goellner 制作了一个炫酷的发光卡片效果 Demo，还可以切换昼夜模式。 &lt;img src=&#34;https://r2.cosine.ren/i/2025/08/a0836579729567e898e378ce288a2298.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/fastrepl/hyprnote&#34; title=&#34;Hyprnote&#34; rel=&#34;noopener&#34;&gt;Hyprnote&lt;/a&gt;：一款主打“本地优先”和隐私安全的 AI 会议笔记工具，能将你的会议实时转录并智能生成摘要，确保数据绝不外泄，可接入 Ollama 本地模型和第三方 API &lt;img src=&#34;https://r2.cosine.ren/i/2025/08/c67e6d03e0a1262d705a2fe7b802593b.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/Zeyi-Lin/HivisionIDPhotos&#34; title=&#34;HivisionIDPhotos&#34; rel=&#34;noopener&#34;&gt;HivisionIDPhotos&lt;/a&gt; 一个轻量级的 AI 证件照制作算法，CPU 即可。包括智能抠图、自动排版与多规格美颜，支持多种部署形态，有 comfyUI 工作流部署等。&lt;img src=&#34;https://r2.cosine.ren/i/2025/08/30fd91e125b4e466afdcfc990b46ac6f.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://leviarista.github.io/github-profile-header-generator/&#34; title=&#34;GitHub 个人主页头图生成器&#34; rel=&#34;noopener ugc nofollow&#34;&gt;GitHub 个人主页头图生成器&lt;/a&gt;：主题、背景与装饰可自定义。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/itMrBoy/resumePolice&#34; title=&#34;ResumePolice: 简历警察 🕵️‍♂️ 疯狂逮捕&#34; rel=&#34;noopener&#34;&gt;ResumePolice: 简历警察 🕵️‍♂️ 疯狂逮捕&lt;/a&gt;：一个开源的 AI 项目，提供“简历警察”提示词与 Dify 工作流，帮助求职者优化简历并生成面试问题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/betomoedano/snapai&#34; title=&#34;SnapAI&#34; rel=&#34;noopener&#34;&gt;SnapAI&lt;/a&gt;：SnapAI 是一个开源的面向 React Native 和 Expo 开发人员的 AI 驱动的图标生成 CLI。需要一个 OpenAI API 密钥来生成图标，每个图标的成本为 ~$0.04 🎥 &lt;a href=&#34;https://youtu.be/PwZ7mEuHt84&#34; title=&#34;观看视频教程&#34; rel=&#34;noopener ugc nofollow&#34;&gt;观看视频教程&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://lisere.ankur.design/&#34; title=&#34;Liseré&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Liseré&lt;/a&gt;：Liseré 是一个轻量级且可组合的 React 组件，用于文本突出显示。它使您可以精确控制用户如何选择、注释文本以及与文本交互。适合代码文档、教程以及交互式文本突出显示和选择。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-6&#34;&gt;库更新&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Node.js v22.18（LTS）默认启用 TypeScript 类型剥离，&lt;code&gt;node app.ts&lt;/code&gt; 成为现实，就像 Bun 或 Deno 一样，不过目前它仍然是实验性功能。（&lt;a href=&#34;https://nodejs.org/en/blog/release/v22.18.0&#34; title=&#34;版本公告&#34; rel=&#34;noopener ugc nofollow&#34;&gt;版本公告&lt;/a&gt;)。&lt;/li&gt;
&lt;li&gt;pnpm 10.14 支持直接定义并自动下载/固定 Node.js、Deno、Bun 运行时至本地项目。&lt;a href=&#34;https://pnpm.io/blog/releases/10.14&#34; title=&#34;详情&#34; rel=&#34;noopener ugc nofollow&#34;&gt;详情&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Vercel 发布了 &lt;a href=&#34;https://vercel.com/blog/ai-sdk-5&#34; title=&#34;AI SDK 5&#34; rel=&#34;noopener ugc nofollow&#34;&gt;AI SDK 5&lt;/a&gt;，本次重大更新的核心是为全栈 AI 应用提供端到端的类型安全，尤其是在聊天交互和 Agent 功能上。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://shopify.engineering/flashlist-v2&#34; title=&#34;Shopify 发布 FlashList v2&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Shopify 发布 FlashList v2&lt;/a&gt;，基于 React Native 新架构的彻底重写版本，旨在解决 v1 的核心痛点。通过利用新架构的同步布局测量能力，v2 完全消除了对项目尺寸估算的依赖，从而实现了更快的加载速度、像素级精准的滚动定位和更流畅的渲染性能。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://echarts.apache.org/handbook/en/basics/release-note/v6-feature/&#34; title=&#34;Apache ECharts 6.0&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Apache ECharts 6.0&lt;/a&gt; 正式发布，带来了 12 项重大升级，旨在将数据可视化提升到新的水平。本次更新围绕三大核心维度展开：全新的默认主题、动态主题切换和深色模式支持；新增弦图、蜂群图、断轴、散点图抖动、增强的 K 线图等图表类型；引入矩阵坐标系、增强自定义系列和优化坐标轴标签。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://npkill.js.org/&#34; title=&#34;NPKILL&#34; rel=&#34;noopener ugc nofollow&#34;&gt;NPKILL&lt;/a&gt; 工具（v1.0 临近）：专注 &lt;code&gt;node_modules&lt;/code&gt; 垃圾清理，作者&lt;a href=&#34;https://imzaldih.com/en/post/npkill-future-beyond-node-modules/&#34; title=&#34;计划扩展至清理更多其他类型的代码“垃圾”&#34; rel=&#34;noopener ugc nofollow&#34;&gt;计划扩展至清理更多其他类型的代码“垃圾”&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;最小的 React 框架 Waku v0.24 版本宣布了一项重大迁移，其底层实现已转向采用 Vite 官方的 RSC 插件  &lt;code&gt;@vitejs/plugin-rsc&lt;/code&gt;  和 &lt;a href=&#34;https://vite.dev/guide/api-environment.html&#34; title=&#34;Vite Environment API&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Vite Environment API&lt;/a&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;heading-7&#34;&gt;深入分析&lt;/h1&gt;
&lt;p&gt;本篇章为对感兴趣的文章或 Demo 等进行的一些详细分析～&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;其中有些地方使用我自己开发的 MoeCopy AI 浏览器插件进行的网页总结！&lt;a href=&#34;https://github.com/yusixian/moe-copy-ai&#34; title=&#34;开源&#34; rel=&#34;noopener&#34;&gt;开源&lt;/a&gt;，超轻量级，填入自己的 apikey 即可使用，还在开发阶段，欢迎尝试~喜欢的话可以给个 star！&lt;a href=&#34;https://chromewebstore.google.com/detail/moe-copy-ai/dfmlcfckmfgabpgbaobgapdfmjiihnck&#34; title=&#34;Chrome 商店&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Chrome 商店&lt;/a&gt; &amp;gt; &lt;img src=&#34;https://r2.cosine.ren/i/2025/08/aebfe917c26f8502c1ff7789651d3ef0.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;-rolldown--21--pr&#34;&gt;使 Rolldown 的启动时间减少了 2.1 倍的 PR&lt;/h2&gt;
&lt;p&gt;看到 &lt;a href=&#34;https://voidzero.dev/posts/whats-new-jul-2025&#34; title=&#34;What’s New in ViteLand: July 2025 Recap&#34; rel=&#34;noopener ugc nofollow&#34;&gt;What’s New in ViteLand: July 2025 Recap&lt;/a&gt; 里提到的这段话比较感兴趣，去瞅了一眼。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;得益于一些深入的 JavaScript 引擎优化技巧 ，Rolldown 的启动时间减少了 2.1 倍。这可以缩短交互时间，更好地为无服务器提供冷启动，并有利于您的开发服务器启动速度。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;里面是这个 PR &lt;a href=&#34;https://github.com/rolldown/rolldown/pull/5319&#34; title=&#34;feat: use PIFE for callbacks passed to  wrapper by sapphi-red · Pull Request #5319 · rolldown/rolldown&#34; rel=&#34;noopener&#34;&gt;feat: use PIFE for callbacks passed to &lt;code&gt;__esmMin&lt;/code&gt; wrapper by sapphi-red · Pull Request #5319 · rolldown/rolldown&lt;/a&gt; 提出了在 rolldown 打包工具中对传递给 &lt;code&gt;__esmMin&lt;/code&gt; 包装器的回调函数应用 PIFE 优化，以提升启动时运行性能。实测结果显示，在特定项目上启动性能提升超过 2 倍，但代码体积略有增长。&lt;/p&gt;
&lt;p&gt;PIFE？于是又翻了翻，翻到了这个 PR&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/oxc-project/oxc/pull/12353&#34; title=&#34;feat(codegen): keep arrow function PIFEs by sapphi-red · Pull Request #12353 · oxc-project/oxc&#34; rel=&#34;noopener&#34;&gt;feat(codegen): keep arrow function PIFEs by sapphi-red · Pull Request #12353 · oxc-project/oxc&lt;/a&gt;，里面提到了：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;PIFE 是 “Possibly-Invoked Function Expressions” 的缩写。它是一个用括号表达式包装的函数表达式。 PIFE 对可能被急切调用（invoked eagerly）的函数进行注释。当 v8 遇到此类表达式时，它会急切地编译它们（而不是稍后编译）。有关更多详细信息，请参阅  v8 的博客文章  。&lt;/p&gt;
&lt;p&gt;博客文章只提到了正则的 FunctionExpressions，但也支持 ArrowFunctions。将急切编译（eagerly compiled）的案例有：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;当 &lt;code&gt;!&lt;/code&gt; 出现在函数文字之前时（例如 &lt;code&gt;!function(){}&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;当函数表达式用括号包装时（例如 &lt;code&gt;(function () {}), (async function () {}))&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;当箭头函数用括号包裹时（例如 &lt;code&gt;console.log((() =&amp;gt; {})))&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;当 &lt;code&gt;()&lt;/code&gt; 或标记模板出现在函数文字之后（仅在某些情况下）（例如 &lt;code&gt;~function(){}()&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;当使用&lt;a href=&#34;https://v8.dev/blog/explicit-compile-hints&#34; title=&#34;显式编译提示&#34; rel=&#34;noopener ugc nofollow&#34;&gt;显式编译提示&lt;/a&gt;时（例如  &lt;code&gt;# allFunctionsCalledOnLoad&lt;/code&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在代码生成中保持 PIFE 原样将解锁优化，例如  &lt;a href=&#34;https://github.com/rolldown/rolldown/pull/5319&#34; title=&#34;rolldown/rolldown#5319&#34; rel=&#34;noopener&#34;&gt;rolldown/rolldown#5319&lt;/a&gt; .&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;-ui-demo&#34;&gt;有趣的音量控制 UI Demo&lt;/h2&gt;
&lt;p&gt;本周的 &lt;a href=&#34;https://codepen.io/spark/462&#34; title=&#34;CodePenSpark#462&#34; rel=&#34;noopener ugc nofollow&#34;&gt;CodePenSpark#462&lt;/a&gt; 精选了一系列以前端技术实现的音量控制 UI。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;创意 UI 组件实现&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;弹性音量开关：由 Aaron Iker 制作的 SVG 弹性音量开关，具有令人愉悦的回弹和翻转动画效果。&lt;/li&gt;
&lt;li&gt;复古音量旋钮：一个外观酷似塑料的复古圆形范围滑块，可作为音量旋钮使用。&lt;/li&gt;
&lt;li&gt;CSS 音量计：Alvaro Montoro 使用纯 CSS 将原生范围输入框转换为一个带有颜色编码的动态音量计。&lt;/li&gt;
&lt;li&gt;单元素音量控件：展示了如何仅用 CSS 和原生范围滑块创建一个无需 JavaScript 的多格音量控制条。&lt;/li&gt;
&lt;li&gt;麦克风切换按钮：一个经典的、交互状态清晰且支持键盘访问的麦克风切换按钮。&lt;/li&gt;
&lt;li&gt;CSS 平衡滑块：Jhey Tompkins 制作的可配置范围滑块组合，具有丰富的拉伸和增强等视觉效果选项。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;交互式与实验性项目&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;光圈科技舞会：灵感源自游戏《传送门》的动画场景，点击图标可播放音乐并观看角色跳舞。&lt;/li&gt;
&lt;li&gt;SVG 声波标记实验：一个艺术性的 UI 实验，尝试用相对简单的 SVG 标记来渲染声波效果。&lt;/li&gt;
&lt;li&gt;寂静之地 - 音量控制动画：一个音频交互式动画，用户通过麦克风发声来揭示隐藏在树林中的生物。&lt;/li&gt;
&lt;li&gt;声音颜色选择器：一个独特的颜色选择器，将声音与视觉结合 (联觉 Chromesthesia)，点击不同颜色会听到对应的声音。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;主要分析一下其中的这个&lt;a href=&#34;https://codepen.io/josetxu/pen/zYmvQMV&#34; title=&#34;合成音量旋钮&#34; rel=&#34;noopener ugc nofollow&#34;&gt;合成音量旋钮&lt;/a&gt;，一个拟物风格的音量旋钮控件：旋钮跟随鼠标角度旋转，环形发光条按音量比例点亮，数字显示 00–99，同步控制 &lt;code&gt;&amp;lt;audio&amp;gt;&lt;/code&gt; 的 &lt;code&gt;volume&lt;/code&gt;，并带有“静音/恢复播放”的按钮。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/08/3f5e4c6fa4246ed1d4837ff7d4bbf975.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;h3 id=&#34;heading-8&#34;&gt;核心技术点（视觉）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;立体拟物与光晕&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;通过多重 &lt;code&gt;box-shadow&lt;/code&gt; + &lt;code&gt;filter: drop-shadow(...)&lt;/code&gt; 叠加（外投影/内投影）营造金属质感与体积感。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.knob::before/::after&lt;/code&gt; 与 &lt;code&gt;.slider::before&lt;/code&gt;、&lt;code&gt;.glow::before/::after&lt;/code&gt; 使用伪元素堆叠，分层画出旋钮面板、内圈光环、外圈刻度等。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;CSS 自定义属性驱动&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 &lt;code&gt;--vol&lt;/code&gt;（0–100）作为“状态源”，在 &lt;code&gt;.glow:after&lt;/code&gt; 的 &lt;code&gt;linear-gradient&lt;/code&gt; 中通过 &lt;code&gt;calc(var(--vol) * 1%)&lt;/code&gt; 控制亮起弧度。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--c1&lt;/code&gt;、&lt;code&gt;--mut&lt;/code&gt;、&lt;code&gt;--tra&lt;/code&gt; 控制主题色、静音色、过渡曲线，&lt;code&gt;.slider:active *&lt;/code&gt; 动态变更色调，产生交互高亮。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;刻度与环形高亮&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.glow:before&lt;/code&gt; 通过一组不同角度的 &lt;code&gt;linear-gradient&lt;/code&gt; 叠加生成刻度线；中间用径向渐变“镂空”。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.slider { transform: rotate(90deg) }&lt;/code&gt; 将整体旋转，配合 &lt;code&gt;linear-gradient(-90deg, ...)&lt;/code&gt; 的方向，让“起点在顶部”的视觉更直观。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;静音按钮纯 CSS 图形&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.mute span:before&lt;/code&gt; 用 &lt;code&gt;clip-path&lt;/code&gt; 勾出“喇叭”图形，&lt;code&gt;.mute span:after&lt;/code&gt; 用 &lt;code&gt;≫/✖&lt;/code&gt; 字符表现声波/静音，&lt;code&gt;content&lt;/code&gt; 随类名切换。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;数码管字体与发光&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;@font-face&lt;/code&gt; 引入 Alarm Clock 字体，&lt;code&gt;.number&lt;/code&gt; 叠加内发光和淡色“88”遮罩，营造电子数码屏效果。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;heading-9&#34;&gt;核心技术点（交互）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;角度计算与旋钮旋转&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;calculateDegree(e)&lt;/code&gt; 用 &lt;code&gt;Math.atan2&lt;/code&gt; 计算“指针相对于屏幕中心”的角度（注意：是相对窗口中心，而不是旋钮中心）。&lt;/li&gt;
&lt;li&gt;按住旋钮 &lt;code&gt;mousedown&lt;/code&gt; 后监听 &lt;code&gt;mousemove&lt;/code&gt;，实时设置 &lt;code&gt;knob.style.transform = rotate(deg)&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;角度到音量映射&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;通过对 &lt;code&gt;val = angle + 90&lt;/code&gt; 的分段处理，把整圈角度映射到 0–1 的音量值 &lt;code&gt;ran&lt;/code&gt;，对应 &lt;code&gt;--vol&lt;/code&gt; 与 &lt;code&gt;&amp;lt;audio&amp;gt;.volume&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;数字显示 00–99，特意避免显示 100（&lt;code&gt;if(num==100) num=&#39;99&#39;&lt;/code&gt;）。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;播放/暂停与样式同步&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;点击静音按钮切换 &lt;code&gt;muted&lt;/code&gt; 类并 &lt;code&gt;play()/pause()&lt;/code&gt;，视觉与状态一致。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;refs&#34;&gt;Refs&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://nodeweekly.com/issues/589&#34; title=&#34;Node Weekly Issue 589: August 5, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Node Weekly Issue 589: August 5, 2025&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://react.statuscode.com/issues/439&#34; title=&#34;React Status Issue 439: August 6, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React Status Issue 439: August 6, 2025&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://frontendfoc.us/issues/704&#34; title=&#34;Frontend Focus Issue 704: August 6, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Frontend Focus Issue 704: August 6, 2025&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://feedpress.me/link/24028/17112418/issue-617&#34; title=&#34;Issue #617 – CSS Weekly&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Issue #617 – CSS Weekly&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;heading-10&#34;&gt;结语&lt;/h1&gt;
&lt;p&gt;周刊第二期到这里就结束啦，欢迎多多反馈纠错！&lt;/p&gt;
&lt;p&gt;上一期结束以后我想了一想，既然要轻轻松松的氛围，那可以在文末配一些日常~&lt;/p&gt;
&lt;p&gt;所以，晒猫时间到！&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/08/037d2f228c5c0932528d630752fd04a7.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;腊八喵：于 2024 年 2 月 22 日猫 の 日的时候领养的小橘白猫，因为小姐姐捡到她的时候在腊八，于是这只小可爱叫腊八~&lt;br /&gt;
领养的时候还是大概5个月大 3.55kg 的小肥猫！现在都已经变成老猫了～&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/08/c26b56018c59619bc16d6bcaac1cad8b.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;可乐喵：2024 年 10 月来给腊八作伴的重点色布偶公猫～那个时候还是3个月大的小猫咪。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://r2.cosine.ren/i/2025/08/e1442003b385135f2a9425d60658e43e.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;感谢观看～&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;更新时间期望是在每周天，若本周内容少，则可能合并到下一期作为双周刊。&lt;br /&gt;
推荐使用 &lt;a href=&#34;https://folo.is/&#34; title=&#34;Folo&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Folo&lt;/a&gt; 订阅本周刊的 &lt;a href=&#34;https://quaily.com/cosine/feed/atom&#34; title=&#34;Quaily RSS&#34; rel=&#34;noopener&#34;&gt;Quaily RSS&lt;/a&gt;。&lt;br /&gt;
公众号 前端周周谈 FE Bits，点击阅读原文链接可查看原文。&lt;br /&gt;
建了个 QQ 讨论小群 598022684 欢迎加入，日常讨论前端技术 &amp;amp; 生活，也可在群里投稿自己的文章~ 随意加入，比较偏向粉丝群的性质，前期群聊不活跃也很正常。&lt;br /&gt;
本周刊同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;，欢迎关注。&lt;/p&gt;
&lt;/blockquote&gt;

      
    </content>
    
  </entry>
  
  <entry>
    <title><![CDATA[FE Bits 前端周周谈 Vol.1｜Hello World、TanStack DB 首个 Beta 版发布 ]]></title>
    <link rel="alternate" type="text/html" href="https://news.cosine.ren/p/1-hello-world" />
    <id>https://news.cosine.ren/p/1-hello-world#11602</id>
    <author>
      <name>cosine</name>
    </author>
    <published>2025-08-02T12:05:00Z</published>
    <updated>2025-08-02T12:05:00Z</updated>
    
    <content type="html">
      &lt;h1 id=&#34;heading&#34;&gt;前言&lt;/h1&gt;
&lt;p&gt;今天是 2025 年 8 月 2 日，星期六，不是什么特殊日子。&lt;/p&gt;
&lt;p&gt;我是 cos（cosine），之前在自己的频道经常进行一些输出，想将其记录下来，于是写下了这个周刊的描述，先开始再说！&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;随性更新，捡拾那些值得细品的泛前端圈子的新鲜事，不争高低，只作播报，把最新、最好玩的技术，第一时间分享给同样好奇的你～&lt;br /&gt;
这里没什么大新闻推送，也不卷热点。就像在朋友圈跟你碎碎念，聊聊最近前端和技术圈的那些有趣小事。&lt;br /&gt;
不是每条都要“颠覆世界”，但都让我觉得“哎，这不错，想和你分享”。&lt;br /&gt;
可能是偶尔深夜刷到的新闻，也可能是偶尔工作摸鱼时的灵感，或者一段小小的吐槽。&lt;br /&gt;
总之代码和生活都要松弛一点，慢慢看、慢慢聊，别让新技术把自己搞得太紧张。&lt;br /&gt;
反正我也不急——你也别急～&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;其实这些新闻平常自己都能看，我只不过借助 AI 和自己的总结做了一些汇总以及翻译的工作，因为中文互联网的前端精品周刊现在难得一见，大多数都停更了或是扩圈了，索性自己做了～&lt;/p&gt;
&lt;p&gt;我希望这个周刊不那么严肃，更自然一些，但是还在摸索阶段，暂时是我一个人维护，所以很依赖 AI 和自动化，相对的就少了些人味儿，非常欢迎评论反馈。&lt;/p&gt;
&lt;p&gt;更新时间期望是在每周天，若本周内容少，则可能合并到下一期作为双周刊～推荐使用 &lt;a href=&#34;https://folo.is/&#34; title=&#34;Folo&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Folo&lt;/a&gt; 订阅本周刊的 &lt;a href=&#34;https://quaily.com/cosine/feed/atom&#34; title=&#34;Quality RSS&#34; rel=&#34;noopener&#34;&gt;Quality RSS&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;本周刊同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;，欢迎关注&lt;/p&gt;
&lt;h1 id=&#34;heading-1&#34;&gt;生态与社区动态&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;AI 简评：嚯，社区最近可真热闹！TypeScript 5.9 RC 带着 import defer 和 Node 20 新模块来串门了，TanStack DB 也端出首个 Beta 版，给 Query 加了点“本地存储魔法”，增量更新嗖嗖快。HTML 和 Stack Overflow 两大年度调查又开张了，React 依然是“梦中情框架”，Svelte 则靠“魅力值”圈粉。Parcel 和 React Native 也没闲着，一个猛攻 React Server Components，一个在 iOS 上搞预编译号称要“快十倍”，卷得飞起！es-toolkit 悄悄上位，成了 Lodash 的“平替明星”，Vercel 更是整了个新活“Fluid compute”——说白了就是“无服务器的服务器”（这名字起得...绝了）。至于 Tabs vs Spaces 的“圣战”？有人宣布“大局已定”：Spaces 党赢了。安全方面嘛... npm 江湖不太平，is 包被钓鱼劫持，Stylus 更是惨遭“连坐”乌龙被误删（现已复活），吓得谷歌赶紧掏出“OSS Rebuild”当救兵。哦对了，W3C 发了份“价值观宣言”，而最甜的是——MDN 文档网站过 20 岁生日啦！&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;heading-2&#34;&gt;社区动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://devblogs.microsoft.com/typescript/announcing-typescript-5-9-rc/&#34; title=&#34;TypeScript 5.9 RC 发布&#34; rel=&#34;noopener ugc nofollow&#34;&gt;TypeScript 5.9 RC 发布&lt;/a&gt;，带来 &lt;code&gt;import defer&lt;/code&gt; 和 &lt;code&gt;--module node20&lt;/code&gt; 等新特性。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tanstack.com/blog/tanstack-db-0.1-the-embedded-client-database-for-tanstack-query&#34; title=&#34;TanStack DB 首个 Beta 版发布&#34; rel=&#34;noopener ugc nofollow&#34;&gt;TanStack DB 首个 Beta 版发布&lt;/a&gt;，为 TanStack Query 带来高效增量更新与乐观写入能力，实现在本地侧存储场景的差分数据流 (differential dataflow)。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://survey.devographics.com/en-US/survey/state-of-html/2025&#34; title=&#34;HTML 2025 状况调查开启&#34; rel=&#34;noopener ugc nofollow&#34;&gt;HTML 2025 状况调查开启&lt;/a&gt;，旨在收集前端开发者对 HTML 发展状况的意见。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://survey.stackoverflow.co/2025/&#34; title=&#34;Stack Overflow 2025 调查&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Stack Overflow 2025 调查&lt;/a&gt;显示 React 继续蝉联 “最受开发者渴望（most desired）” Web 技术头名，尽管 Svelte 更 “受人钦佩（admired）”&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://devongovett.me/blog/parcel-rsc.html&#34; title=&#34;Parcel 深入支持 React Server Components&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Parcel 深入支持 React Server Components&lt;/a&gt;，并解析 &amp;quot;use client&amp;quot; 等指令的实际作用机制。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://expo.dev/blog/precompiled-react-native-for-ios&#34; title=&#34;React Native 下一个版本中引入预编译的 iOS 版本&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React Native 下一个版本中引入预编译的 iOS 版本&lt;/a&gt;，RC3 阶段承诺将构建时间缩短 10 倍&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://es-toolkit.dev/&#34; title=&#34;es-toolkit&#34; rel=&#34;noopener ugc nofollow&#34;&gt;es-toolkit&lt;/a&gt; 成为 Lodash 100% 兼容替代，已被 Storybook、Recharts 等主流项目采用。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://vercel.com/blog/fluid-how-we-built-serverless-servers&#34; title=&#34;Vercel 发布 Fluid compute 平台&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Vercel 发布 Fluid compute 平台&lt;/a&gt;，该平台本质上提供 “无服务器服务器（serverless servers）”。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://xn--gckvb8fzb.com/tabs-vs-spaces-the-war-is-over/&#34; title=&#34;一名开发者声称，关于 tabs 与 spaces&#34; rel=&#34;noopener ugc nofollow&#34;&gt;一名开发者声称，关于 tabs 与 spaces&lt;/a&gt; 的争论趋于结束，主流语言倾向使用 spaces。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://developer.mozilla.org/en-US/blog/mdn-turns-20/&#34; title=&#34;MDN 文档网站庆祝成立 20 周年&#34; rel=&#34;noopener ugc nofollow&#34;&gt;MDN 文档网站庆祝成立 20 周年&lt;/a&gt;，目前拥有超 14,000 页内容，是 Web 开发的重要资料库&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;浏览器制造商之间有一个悠久的传统，即互相发送蛋糕以纪念重要的里程碑。一个好的蛋糕对于保持团队之间的协作精神非常重要，这些团队有时会竞争，但最终会建立一个每个人都可以享受的开放网络。Microsoft 为 Firefox 2、3 和 4 发送了 Mozilla 蛋糕，我们还为 IE10 发送了 Mozilla 蛋糕&lt;br /&gt;
&lt;img src=&#34;https://static.quail.ink/media/5nvv9tzl8w.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;编者按：好有意思的庆祝生日&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://survey.stackoverflow.co/2025&#34; title=&#34;2025 Stack Overflow 开发者调查结果公布&#34; rel=&#34;noopener ugc nofollow&#34;&gt;2025 Stack Overflow 开发者调查结果公布&lt;/a&gt;，涵盖开发工具、AI 代理、LLM 使用现状等&lt;/li&gt;
&lt;li&gt;W3C 发布概述 “支撑 W3C 使命的价值观” 的&lt;a href=&#34;https://www.w3.org/TR/2025/STMT-w3c-vision-20250729/&#34; title=&#34;重要新文档&#34; rel=&#34;noopener ugc nofollow&#34;&gt;重要新文档&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-3&#34;&gt;安全动态&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;对 npm 生态系统的攻击仍在继续，&lt;a href=&#34;https://nodeweekly.com/link/172337/web&#34; title=&#34;is 包通过&#34; rel=&#34;noopener ugc nofollow&#34;&gt;is 包通过&lt;/a&gt;与 npm 相关的域名抢注域名被劫持，该域被用来&lt;a href=&#34;https://nodeweekly.com/link/172338/web&#34; title=&#34;网络钓鱼登录详细信息。&#34; rel=&#34;noopener ugc nofollow&#34;&gt;网络钓鱼登录详细信息。&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.bleepingcomputer.com/news/security/npm-accidentally-removes-stylus-package-breaks-builds-and-pipelines/&#34; title=&#34;npm 不慎移除了被广泛使用的 Stylus 库&#34; rel=&#34;noopener ugc nofollow&#34;&gt;npm 不慎移除了被广泛使用的 Stylus 库&lt;/a&gt;，导致全球开发者构建和 CI/CD 流程中断。移除原因是 Stylus 的一位维护者发布了无关的恶意软件包，导致其账户及关联软件包被禁，Stylus 库也因此受牵连。现 npm 页面已恢复。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://security.googleblog.com/2025/07/introducing-oss-rebuild-open-source.html&#34; title=&#34;谷歌推出了 OSS Rebuild&#34; rel=&#34;noopener ugc nofollow&#34;&gt;谷歌推出了 OSS Rebuild&lt;/a&gt;，试图通过允许将包与上游进行比较来使开源生态系统（如 npm）更加安全。&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;heading-4&#34;&gt;文章与视频&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;《&lt;a href=&#34;https://innei.in/posts/tech/tailwindcss-v4-color-system-theme-switching-guide&#34; title=&#34;TailwindCSS v4 全新颜色系统与主题切换&#34; rel=&#34;noopener ugc nofollow&#34;&gt;TailwindCSS v4 全新颜色系统与主题切换&lt;/a&gt;》本文介绍了在 TailwindCSS 中实现暗色模式（dark mode）颜色切换的演变，从使用 CSS 变量到新版 v4 应用 color-mix() 混色函数和 @layer 层级特性。作者也推荐了自己开发的 &lt;a href=&#34;https://github.com/Innei/Pastel&#34; title=&#34;Pastel&#34; rel=&#34;noopener&#34;&gt;Pastel&lt;/a&gt; 颜色系统库以便更好应用这些特性。&lt;/li&gt;
&lt;li&gt;《&lt;a href=&#34;https://guangzhengli.com/blog/zh/indie-hacker-poor-stack&#34; title=&#34;独立开发穷鬼套餐(Web 实践篇)&#34; rel=&#34;noopener ugc nofollow&#34;&gt;独立开发穷鬼套餐(Web 实践篇)&lt;/a&gt;》本文聚焦独立开发，分析独立开发者在成本敏感阶段时，推荐基于 Next.js 生态、善用云平台/Cloudflare/VPS 的免费与低价服务组合，少花时间精力在技术堆栈和云服务“薅羊毛”上，把更多心力放在产品打磨与市场推广上，实现“低成本、高专注、快试错”的独立开发之路。&lt;/li&gt;
&lt;li&gt;《&lt;a href=&#34;https://tkdodo.eu/blog/the-useless-use-callback&#34; title=&#34;The Useless useCallback&#34; rel=&#34;noopener ugc nofollow&#34;&gt;The Useless useCallback&lt;/a&gt;》React useCallback 的滥用现象与性能相关实践讨论，分析 useCallback、useMemo 潜在问题，展望 React Compiler 与 useEffectEvent 等新工具的改善能力。&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;编者按：也算是 React 的日经问题了 hhh&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;《&lt;a href=&#34;https://csswizardry.com/2025/07/the-extensibility-api/&#34; title=&#34;Performance Extensibility API&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Performance Extensibility API&lt;/a&gt;》允许自定义轨迹供 Chrome DevTools 性能面板分析，本文探讨了该 API 如何弥补浏览器元性能指标（如 Core Web Vitals 指标）的不足，并展示了在实际 Web 性能监测和优化中的应用方法。&lt;/li&gt;
&lt;li&gt;《&lt;a href=&#34;https://www.kooslooijesteijn.net/blog/responsive-video-easy&#34; title=&#34;Responsive Video is (Almost) Easy Now&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Responsive Video is (Almost) Easy Now&lt;/a&gt;》介绍了响应式视频的实现，通过 html 的 video 标签，如何提供垂直和横向视频以适应不同场景。&lt;/li&gt;
&lt;li&gt;《&lt;a href=&#34;https://thenewstack.io/remix-3-and-the-end-of-react-centric-architectures/&#34; title=&#34;Remix 3 和 React-中心架构的终结&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Remix 3 和 React-中心架构的终结&lt;/a&gt;》 探索 React 未来架构趋势。&lt;/li&gt;
&lt;li&gt;《&lt;a href=&#34;https://phase.dev/blog/instrumenting-nextjs-with-runtime-secret-injection/&#34; title=&#34;Next.js 运行时密钥注入实战&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Next.js 运行时密钥注入实战&lt;/a&gt;》 深入分析密钥管理在微服务和 SSR 场景下的重要性&lt;/li&gt;
&lt;li&gt;《&lt;a href=&#34;https://carlosn.com.br/blog/post/notes-on-rewriting-jsx-as-astro/&#34; title=&#34;将 JSX 改写为 Astro 的思考&#34; rel=&#34;noopener ugc nofollow&#34;&gt;将 JSX 改写为 Astro 的思考&lt;/a&gt;》 带来组件语法和工程结构的迁移经验。&lt;/li&gt;
&lt;li&gt;《&lt;a href=&#34;https://nodeweekly.com/link/172343/web&#34; title=&#34;The Multi-Repository TypeScript Problem&#34; rel=&#34;noopener ugc nofollow&#34;&gt;The Multi-Repository TypeScript Problem&lt;/a&gt;》探讨 TypeScript 多仓库（multi-repo）间的类型安全问题及解决方法。&lt;/li&gt;
&lt;li&gt;《&lt;a href=&#34;https://allthingssmitty.com/2025/07/28/logical-assignment-operators-in-javascript-small-syntax-big-wins/&#34; title=&#34;JavaScript 中的逻辑赋值操作符：小语法，大胜利&#34; rel=&#34;noopener ugc nofollow&#34;&gt;JavaScript 中的逻辑赋值操作符：小语法，大胜利&lt;/a&gt;》分析 JavaScript 逻辑赋值操作符的语法进步及实际开发中带来的便利。&lt;/li&gt;
&lt;li&gt;《&lt;a href=&#34;https://queue.acm.org/detail.cfm?id=3746174&#34; title=&#34;When Is WebAssembly Going to Get DOM Support?&#34; rel=&#34;noopener ugc nofollow&#34;&gt;When Is WebAssembly Going to Get DOM Support?&lt;/a&gt;》本文分析了 WASM 与 DOM 等 Web API 的集成现状和未来。作者认为，WASM 最初和 JavaScript 分离，但可以通过 JS 间接操作 DOM。目前主流浏览器没有推动标准化原生 DOM 支持这方面标准。开发者应关注性能和可维护性，选好工具链高效开发，不必追求完全“无 JS”的 WASM 方案。&lt;/li&gt;
&lt;li&gt;《&lt;a href=&#34;https://frontendmasters.com/blog/liquid-glass-on-the-web/&#34; title=&#34;Liquid Glass on the Web&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Liquid Glass on the Web&lt;/a&gt;》 一个 Liquid Glass Web 实现合集 demo 整理，有几个实现的确实漂亮啊～&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://static.quail.ink/media/km88lix2y2.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://static.quail.ink/media/e3nn5hwlnm.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;《&lt;a href=&#34;https://tympanus.net/codrops/2025/07/22/interactive-text-destruction-with-three-js-webgpu-and-tsl/&#34; title=&#34;使用 Three.js、WebGPU 和 TSL 进行交互式文本销毁&#34; rel=&#34;noopener ugc nofollow&#34;&gt;使用 Three.js、WebGPU 和 TSL 进行交互式文本销毁&lt;/a&gt;》本篇文章系统地讲解了如何借助 Three.js、WebGPU 以及 Three Shader Language（TSL），实现炫酷的 3D 交互文字爆炸效果动画。内容覆盖从字体准备、场景搭建、顶点及物理模拟，到高级后处理，完整展示了现代 Web 图形技术的艺术与技术融合。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://static.quail.ink/media/4n664t43d5.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;编者按：看了这篇突然意识到我写的那篇好烂，完全不是面向基础的教程哈哈哈～感觉这种一步步来的真不好写。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;🎥【&lt;a href=&#34;https://www.youtube.com/watch?v=VGjJWXFYyQo&#34; title=&#34;Bun 的创建者谈构建 Bun 和 Node.js 兼容性&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Bun 的创建者谈构建 Bun 和 Node.js 兼容性&lt;/a&gt;】解析 Bun 作为 Node.js 生态“替代品”的兼容性挑战与工程实践。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;css-&#34;&gt;CSS 新特性&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;《&lt;a href=&#34;https://developer.chrome.com/blog/masonry-update?hl=en&#34; title=&#34;Brick by brick: Help us build CSS Masonry&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Brick by brick: Help us build CSS Masonry&lt;/a&gt;》Chrome 和 Edge 团队宣布 CSS Masonry 布局已在 Chrome/Edge 140 中开放开发者测试，文章详细介绍了 CSS Masonry 的概念、与现有布局的对比、两种正在讨论的语法提案等&lt;/li&gt;
&lt;li&gt;《&lt;a href=&#34;https://css-tricks.com/making-a-masonry-layout-that-works-today/&#34; title=&#34;Making a Masonry Layout That Works Today | CSS-Tricks&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Making a Masonry Layout That Works Today | CSS-Tricks&lt;/a&gt;》介绍了当前 CSS Masonry 的浏览器支持现状及其多种语法方案，并提出了一种通过简洁 JavaScript 实现兼容所有主流浏览器的马赛克布局方法。&lt;/li&gt;
&lt;li&gt;《&lt;a href=&#34;https://una.im/scroll-target-group/&#34; title=&#34;Creating a scroll-spy with 2 lines of CSS&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Creating a scroll-spy with 2 lines of CSS&lt;/a&gt;》：Chrome 140 浏览器引入 &lt;code&gt;scroll-target-group&lt;/code&gt; 和 &lt;code&gt;:target-current&lt;/code&gt;，可用两行 CSS 实现目录高亮跟踪效果，将其添加为用户的渐进式增强功能非常容易。&lt;em&gt;作为一项标准轨道功能，它最终应该会跨浏览器登陆。&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;heading-5&#34;&gt;代码、工具与库更新&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://codepen.io/jkantner/pen/pvjNNVz&#34; title=&#34;World Clock Slider&#34; rel=&#34;noopener ugc nofollow&#34;&gt;World Clock Slider&lt;/a&gt;：这是一款智能时钟组件，支持滑动快速查看各时区城市当前时间。操作流畅，还支持深色模式，非常酷。&lt;br /&gt;
&lt;img src=&#34;https://static.quail.ink/media/9477dbmeyp.webp&#34; alt=&#34;An image to describe post&#34; /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/craigbuckler/staticsearch&#34; title=&#34;StaticSearch&#34; rel=&#34;noopener&#34;&gt;StaticSearch&lt;/a&gt;：为静态站点增添搜索，无需后端，基于 Javascript，数据存储为 JSON。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://oklchroma.utilitybend.com/&#34; title=&#34;Oklchroma&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Oklchroma&lt;/a&gt;：基于 OKLCH 色彩空间的一键和谐色板生成器，内置曲线渐变算法。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://stronglytyped.uk/articles/audioteejs-macos-system-audio-capture-nodejs&#34; title=&#34;AudioTee.js&#34; rel=&#34;noopener ugc nofollow&#34;&gt;AudioTee.js&lt;/a&gt;：为 Node.js 捕捉 macOS 系统音频输出，并以 PCM 格式定期输出。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/stan-smith/FossFLOW&#34; title=&#34;FossFLOW&#34; rel=&#34;noopener&#34;&gt;FossFLOW&lt;/a&gt;：等距基础架构图形工具，支持丰富图标与数据管理&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/yoshiko-pg/difit&#34; title=&#34;difit&#34; rel=&#34;noopener&#34;&gt;difit&lt;/a&gt;：使用 GitHub 风格查看器查看和审查本地 git 差异的 CLI 工具，评论还可以作为 AI 提示进行复制。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://khang-nd.github.io/7.css/&#34; title=&#34;7.css&#34; rel=&#34;noopener ugc nofollow&#34;&gt;7.css&lt;/a&gt;：忠实还原经典 Windows 7/XP UI 的 CSS 设计系统&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://better-upload.com/&#34; title=&#34;Better Upload&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Better Upload&lt;/a&gt; 支持各类 S3 兼容存储的极简文件上传，适配 Next.js、TanStack Start、Remix 和 Hono 等框架。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/huggingface/transformers.js/releases/tag/3.7.0&#34; title=&#34;Transformers.js 3.7&#34; rel=&#34;noopener&#34;&gt;Transformers.js 3.7&lt;/a&gt;：在浏览器与 Node.js 侧支持 ONNX 预训练模型推理，v3.7 增加了 Voxtral（语音转录及音频理解）、LFM2 和 ModernBERT 支持。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/kentcdodds/match-sorter&#34; title=&#34;match-sorter 8.1&#34; rel=&#34;noopener&#34;&gt;match-sorter 8.1&lt;/a&gt;：为数组筛选和排序提供确定性算法，便于开发者实现可预期的最优匹配排序。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.swmansion.com/reanimated-4-stable-release-the-future-of-react-native-animations-ba68210c3713&#34; title=&#34;React Native Reanimated 4&#34; rel=&#34;noopener ugc nofollow&#34;&gt;React Native Reanimated 4&lt;/a&gt; 正式带来类 CSS 动画与过渡体验到 React Native，兼具复杂能力与高性能。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://rooks.vercel.app/docs&#34; title=&#34;Rooks.js 8.4&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Rooks.js 8.4&lt;/a&gt; 提供接近 100 个自定义 hooks，涵盖在线状态、窗口大小、语音合成、键盘输入等各类场景。&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;heading-6&#34;&gt;深入分析&lt;/h1&gt;
&lt;p&gt;本篇章为结合 AI 摘要对感兴趣的文章进行的一些详细分析～&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;使用我自己开发的 &lt;a href=&#34;https://github.com/yusixian/moe-copy-ai&#34; title=&#34;MoeCopy AI&#34; rel=&#34;noopener&#34;&gt;MoeCopy AI&lt;/a&gt; 浏览器插件进行的网页总结！超轻量级，填入自己的 apikey 即可使用，欢迎尝试~喜欢的话可以给个 star。 &lt;a href=&#34;https://chromewebstore.google.com/detail/moe-copy-ai/dfmlcfckmfgabpgbaobgapdfmjiihnck&#34; title=&#34;Chrome 商店&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Chrome 商店&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;公众号排版受限，请移步 &lt;a href=&#34;https://news.cosine.ren/p/1-hello-world&#34; title=&#34;外部博客&#34; rel=&#34;noopener ugc nofollow&#34;&gt;外部博客&lt;/a&gt; 查看完整版～&lt;/p&gt;
&lt;h1 id=&#34;refs&#34;&gt;Refs&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://react.statuscode.com/issues/438&#34; title=&#34;⚛️ React Status #438 — July 30, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;⚛️ React Status #438 — July 30, 2025&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://nodeweekly.com/issues/588&#34; title=&#34;📢 Node Weekly #588 — July 29, 202&#34; rel=&#34;noopener ugc nofollow&#34;&gt;📢 Node Weekly #588 — July 29, 202&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://frontendfoc.us/issues/703&#34; title=&#34;Frontend Focus #703 — July 30, 2025&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Frontend Focus #703 — July 30, 2025&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;heading-7&#34;&gt;结语&lt;/h1&gt;
&lt;p&gt;周刊第一期到这里就结束啦，欢迎多多反馈纠错！&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;其实这些新闻平常自己都能看，我只不过借助 AI 和自己的总结做了一些汇总以及翻译的工作，因为现在中文互联网的前端精品周刊现在难得一见，大多数都停更了或是扩圈了，索性自己做了～我希望这个周刊不那么严肃，更自然一些，但是还在摸索阶段，暂时是我一个人维护，所以很依赖 AI 和自动化，相对的就少了些人味儿，非常欢迎评论反馈。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;感谢观看～&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;推荐使用 &lt;a href=&#34;https://folo.is/&#34; title=&#34;Folo&#34; rel=&#34;noopener ugc nofollow&#34;&gt;Folo&lt;/a&gt; 订阅本周刊的 &lt;a href=&#34;https://quaily.com/cosine/feed/atom&#34; title=&#34;Quaily RSS&#34; rel=&#34;noopener&#34;&gt;Quaily RSS&lt;/a&gt;。&lt;br /&gt;
本周刊同时也开源在 &lt;a href=&#34;https://github.com/yusixian/fe-bits-weekly&#34; title=&#34;fe-bits-weekly&#34; rel=&#34;noopener&#34;&gt;fe-bits-weekly&lt;/a&gt;，欢迎关注&lt;/p&gt;
&lt;/blockquote&gt;

      
    </content>
    
  </entry>
  
</feed>
