呜啦!日常碎碎念,偶尔掉落优质前端博文推荐、学习资源等
网页:https://tg.cosine.ren
本频道的搜索Bot 来辣 👉 @cosSearchBot
私聊直接发消息就可以搜索啦~
🔖tags
#优质博文 #资源推荐 #博客更新 #碎碎念 #项目更新 #手工 #书摘 #阮一峰的科技周刊 #新动态

图频:Cosine 🎨 Gallery @CosineGallery
猫片: @cosine_cat
联系频道主:@cosine_yu
#优质博文 #前端 #CSS #锚点定位 #course
Drawing Connections with CSS Anchor Positioning - Roland Franke
锚点定位真好玩儿吧:在无需 JavaScript 的情况下实现 UI 元素(如评论与其回复)之间的视觉连线。

[以下是方便搜索索引的大纲 (AI 生成),请读原文]
• 核心挑战: 在 CSS 中视觉化连接相关元素(如评论线、Tooltip 工具提示)通常很棘手,传统方案往往依赖 JavaScript 计算、额外的标签或不稳固的布局假设。
• 锚点定位机制:
• 使用 anchor-name (锚点名称) 为一个元素命名作为参考点。
• 使用 anchor-scope (锚点作用域) 限制锚点名称的影响范围,确保组件的独立性。
• 在另一个元素中使用 anchor() (锚点函数) 获取参考元素的边界位置(如 start, end, center)。
• 代码实现:
• 通过为 .comment 和 .reply 定义锚点名,在回复的 ::after 伪元素中利用 inset 属性引用这些锚点,从而精确绘制连接线。
• 结合 Logical Properties (逻辑属性) 如 inset-block-start,使布局能够自适应不同的语言和书写方向。
• 技术优势:
• 无需 JavaScript: 减少了脚本负担,提升了性能。
• 布局感知: 当内容增长或容器变动时,连接线会自动更新位置。
• 代码简洁: 减少了冗余的 Wrapper (包装) 元素。
• 浏览器兼容性: 目前处于 Baseline: Newly available (基线:新近可用) 阶段,主要在最新版本的 Chromium 系浏览器中得到支持,建议作为 Progressive Enhancement (渐进增强) 使用。


author Roland Franke Drawing Connections with CSS Anchor Positioning - Roland Franke
#优质博文 #前端 #CSS #JavaScript #新特性 #Chrome
New to the web platform in January
汇总了 2026 年 1 月 Web 平台的重大进展,重点介绍了 Chrome 144 和 Firefox 147 稳定版的发布。其中,CSS 锚点定位 (CSS Anchor Positioning) 和 Navigation API 随着 Firefox 的支持正式达到 Baseline Newly Available 状态。此外,Chrome 144 引入了期待已久的 Temporal API、声明式的 <geolocation> 元素以及用于自定义页内搜索样式的 ::search-text 伪元素

[以下是方便搜索索引的大纲 (AI 生成),请读原文]
1. 稳定版浏览器发布(Stable browser releases)
• Baseline 状态更新:随着 Firefox 147 的发布,CSS 锚点定位 (CSS Anchor Positioning) 和 Navigation API 现已在所有主要引擎中可用,正式进入 Baseline 阶段。
• CSS 锚点定位 (CSS Anchor Positioning):允许元素相对于“锚点”元素进行定位,适用于工具提示 (Tooltips)、菜单和弹出层。
• Navigation API:提供了一种现代化的方式来启动、拦截和管理应用程序中的导航,是单页应用 (SPA) 的核心增强。
• Temporal API:Chrome 144 引入了这一重磅 JavaScript API,作为 Date 对象的现代替代方案,提供更强大的日期和时间处理功能。
• 声明式 <geolocation> 元素:Chrome 144 新增了由用户激活的地理位置控制控件,简化了权限流程并减少了对复杂 JavaScript API 的依赖。

2. CSS 与样式增强(CSS Enhancements)
• ::search-text 伪元素:Chrome 144 支持自定义浏览器“页内查找”结果的样式,类似于 ::selection。
• caret-shape 属性:开发者现在可以指定文本插入光标的形状,如条状 (bar)、块状 (block) 或下划线 (underscore)。
• 视图过渡 (View Transition) 增强:Firefox 147 开始支持单页应用 (SPA) 的视图过渡类型识别,并支持通过 Document.activeViewTransition 获取当前活动的过渡对象。

3. Beta 版预览与未来动态(Beta browser releases)
• Chrome 145 Beta:引入了 text-justify 属性、多列布局改进(column-wrap 和 column-height)以及可自定义的 <select> 列表框。
• Firefox 148 Beta:支持 Location.ancestorOrigins,用于检测文档是否被嵌入到 <iframe> 中以及被哪些站点嵌入。


author Rachel Andrew New to the web platform in January  |  Blog  |  web.dev
#优质博文 #前端 #CSS #锚点定位 #layout #course
Solving Shrinkwrap: New Experimental Technique
好文,利用 CSS Anchor Positioning(锚点定位)和 Scroll-Driven Animations(滚动驱动动画)解决网页排版中“自动换行导致的容器宽度无法自动收缩(Shrinkwrap)”这一经典难题。

AI 摘要:本文提出了一种创新的 CSS 实验性方案,旨在解决困扰开发者多年的“Shrinkwrap”难题:当块级元素内的文本自动换行时,容器宽度依然占据最大可用空间而非紧贴文本内容的现象。
作者 Roman Komarov 通过巧妙结合 Anchor Positioning(锚点定位)进行尺寸测量,并利用 Scroll-Driven Animations(滚动驱动动画)将测量值跨层级传递给父元素,从而动态调整容器尺寸。尽管该技术在 HTML 结构上有一定要求且目前仍处于实验阶段,但它为实现真正的紧凑包裹效果(如聊天气泡、自适应提示框等)提供了全新的纯 CSS 路径。

[以下是方便搜索索引的大纲 (AI 生成),请读原文]
1. 核心挑战与背景 (The Problem)
• 解释“Shrinkwrap”问题:当元素内的内容(如文本)自动换行时,CSS 的 shrink-to-fit 算法通常会让容器扩展到最大可用宽度,导致视觉上出现多余的空白。
• 回顾该问题在 CSS 规范(CSSWG)中长达十年的讨论,以及 text-wrap: balance 等新属性如何凸显了这一缺陷。

2. 技术实现原理 (The Base Technique)
• 结构设计: 采用四层嵌套 HTML 结构,包括容器、内容包装器、源元素和探测元素 (probe)。
• 远程测量 (Remote Dimension Measuring): 利用 Anchor Positioning(锚点定位)来确定内部行内元素的边界。
• 数值传递: 结合 Scroll-Driven Animations(滚动驱动动画)和自定义属性(CSS Variables),将测量到的像素值转换成可以在父元素中使用的数值,从而动态设置 inline-size(行向尺寸)。

3. 代码实现与 API (Code & Limitations)
• 展示核心 CSS 代码,利用 @property 定义变量,通过 animation-range 和 view-timeline 实现尺寸捕捉。
• 使用限制: 元素必须仅包含 Phrasing Content(短语内容,即行内元素);目前主要在 Chrome 和 Safari 中运行,且 Safari 存在某些实验性 Bug。
• API 定义: 提供 --sw-limit(限制宽度)和 --sw-padding(间距调整)等自定义属性。

4. 进阶复杂场景 (Complex Content)
• 多锚点策略 (Multiple Explicit Anchors): 演示如何处理具有多个 Flex(弹性布局)或 Grid(网格布局)项的容器包裹。
• 链式锚点 (Chained Anchors): 针对不确定数量的项目,提出一种基于容器查询(Container Queries)和锚点链的自动化测量方案(目前仅 Chrome 支持较好)。
• 内容重复法: 探讨解决导航菜单等具有复杂相互依赖关系的布局方案。

5. 实际应用案例 (Use Cases)
• 聊天气泡 (Chat Bubbles): 让气泡背景完美贴合换行后的文本,保持美观的视觉边距。
• 表单分组标题 (Fieldsets and Legends): 解决 legend 标签在换行时导致的边框对齐问题。
• 覆盖图注 (Overlay Image Captions): 实现图片上的半透明遮罩背景随文本长度动态收缩。
• 提示框 (Tooltips): 优化设计系统中的气泡提示,使其在不同文本长度下都能保持紧凑。

6. 总结与未来趋势 (What's Next)
• 作者呼吁浏览器厂商提供原生的 CSS 属性或函数来简化这一过程。
• 强调简单场景的解决方案已趋于成熟,而跨依赖的复杂布局仍是未来探索的方向。


author Roman Komarov
#优质博文 #前端 #性能优化 #JavaScript
The Browser Hates Surprises

AI 摘要:文章指出,浏览器的渲染引擎实际上是一个高效的约束求解器。当开发者中途“惊吓”浏览器(如延迟加载图片、动态插入滚动条等)时,会强制触发回流(Reflow),导致累积布局偏移(CLS)和用户体验的卡顿(Jank)。作者通过对比实验,提出了四种具体的优化方案:利用 scroll-margin-top 处理粘性布局遮挡、使用 scrollbar-gutter 预留滚动条空间、配置 aspect-ratio 预留图片位置,以及通过 Promise.all 编排数据加载。核心观点是:优化不仅是为了更快的加载,更是为了实现更平稳(Calm)的渲染。


author Durgesh Rajubhai Pawar The Browser Hates Surprises
#优质博文 #前端 #CSS
CSS @scope: An Alternative To Naming Conventions And Heavy Abstractions

AI 摘要:本文探讨了在复杂前端界面开发中,传统 CSS 命名规范(如 BEM)以及现代抽象工具(如 Tailwind 或 CSS-in-JS)的局限性。作者重点介绍了现已达成 Baseline 兼容的 CSS @scope 特性。@scope 允许开发者在不牺牲 CSS 级联(Cascade)和继承特性的前提下,实现精确的样式隔离。通过支持“甜甜圈作用域(Donut Scoping)”和引入邻近性(Proximity)原则,@scope 有效解决了样式泄露和特异性(Specificity)战争问题,为构建现代、可维护的 UI 提供了一种更符合原生 Web 标准的替代方案。


author Blake Lundquist CSS @scope: An Alternative To Naming Conventions And Heavy Abstractions — Smashing Magazine
#优质博文 #前端 #CSS #grid #新特性
CSS Bar Charts Using Modern Functions | CSS-Tricks:本文介绍了如何利用 CSS 现代函数 sibling-index() 和升级后的 attr() 函数(可以接受 data- 属性),以更简洁、高效的方式构建纯 CSS 柱状图。

[以下是方便搜索索引的大纲 (AI 生成),请读原文]
1. 核心技术原理 (Core Technical Principles)
• 使用 display: grid 创建图表容器,并通过 grid-template-rows: repeat(100, 1fr) 建立百分比基准。
• 引入 sibling-index() 函数:自动为列表项分配连续的 grid-column 索引,无需手动编写选择器或 CSS 变量。
• 引入增强版 attr() 函数:直接从 HTML 的 data-value 属性中读取数值,并将其转换为 CSS 可用的 <number> 类型,用于控制 grid-row 的跨度 (span)。

2. 自动布局实现 (Automatic Layout Implementation)
• 详细拆解 sibling-index() 的工作方式:如何智能生成网格顺序,减少对 nth-child 等样式的依赖。
• 解释 attr(data-value number) 的类型转换功能:如何将字符串属性无缝转换为网格行数。
• 探讨浏览器兼容性:目前在 Chrome 和 Safari 中已有支持,但 Firefox 和部分移动端浏览器仍待完善。

3. 多样化图表应用 (Diverse Chart Applications)
• 纵向柱状图:通过调整 grid-row 的起始和结束位置改变增长方向。
• 标记图表 (Marker Charts):跳过完整的柱条,仅在特定网格点显示标记元素。
• 横向柱状图:交换行与列的逻辑,实现水平方向的数据展示。

4. 历史回顾与演进 (Historical Evolution)
• 对比 2015 年至 2022 年间的传统图表实现方法(如利用伪元素、手动 Grid 布局及 CSS 自定义属性)。
• 强调新技术如何通过减少“黑科技” (Hacks) 和冗余代码来优化开发流程。


author Preethi CSS Bar Charts Using Modern Functions | CSS-Tricks
#优质博文 #CSS #动画 #前端 #新特性
Elastic/Bouncy Text Effect:仅使用纯 CSS 实现一种有趣的悬停弹跳文字动画。目前该效果属于实验性特性,仅支持 Chrome 浏览器。

AI 摘要:这篇文章介绍了如何仅使用纯 CSS 实现一种有趣的弹性文字(Elastic/Bouncy Text)效果。作者 Temani Afif 通过组合使用最新的 CSS 特性,如 shape() 函数、 sibling-index() / sibling-count() 索引函数以及 linear() 缓动函数,实现了文字在悬停时的动态曲线跳动。虽然该技术目前仅支持 Chrome 浏览器且对 HTML 结构有特定要求(如每个字母需独立包装并使用等宽字体),但它展示了现代 CSS 在路径动画和动态计算方面的强大能力。


author Temani Afif Elastic/Bouncy Hover Effect
#优质博文 #HTML #性能优化 #前端
Performance-Optimized Video Embeds with Zero JavaScript

AI 摘要:本文介绍了一种利用原生 HTML 标签 <details> 和 <summary> 来优化视频嵌入(Video Embeds)性能的创新方法。通过这种方案,开发者可以在完全不使用 JavaScript 的情况下实现视频的按需加载(Lazy Loading),有效降低页面初始加载时的资源消耗,显著提升首次内容绘制(First Contentful Paint, FCP)和最大内容绘制(Largest Contentful Paint, LCP)等性能指标。该方法不仅能防止累积布局偏移(Cumulative Layout Shift, CLS),还具备原生辅助功能支持,是替代传统重型第三方视频插件的高效方案。


author Stefan Bauer
#优质博文 #CSS #前端 #新特性 #html
Nice Select · February 3, 2026
本文展示了如何利用最新的 CSS 特性(如 appearance: base-select )在保持原生无障碍性的同时,打造高度可定制且视觉华丽的 <select> 下拉组件。
真的很酷,Codepen 示例

AI 摘要:这篇文章深入探讨了使用现代 CSS 增强原生 <select> 元素的技术。通过 appearance: base-select 这一新特性,开发者可以在保留浏览器内置无障碍支持和键盘导航的基础上,完全自定义下拉框的样式。文章详细列举了锚点定位 (Anchor Positioning)、滚动驱动动画 (Scroll-driven animations)、滚动状态查询 (Scroll-state queries) 以及 ::picker() 等伪元素的应用。虽然目前主要在 Chrome 中提供最佳体验,但其渐进增强 (Progressive enhancement) 的设计思路确保了在其他浏览器中的基本可用性。


author Adam Argyle Nice Select
#优质博文 #前端 #React #性能优化
Cache components in Next.js: Faster pages with partial pre-rendering
AI 摘要:文章深入探讨了 Next.js 的新特性——缓存组件(Cache Components)。传统 Next.js 路由通常被视为整体的静态或动态,而缓存组件打破了这一限制,允许开发者在组件粒度决定哪些部分可以被缓存复用。通过结合局部预渲染(Partial Pre-rendering, PPR)和 Suspense,缓存组件能够让页面立即渲染静态外壳(Static Shell),并渐进式地流式传输动态内容,从而将首屏白屏时间从数秒降低至毫秒级,极大地提升了用户体验和服务器效率。

[以下是方便搜索索引的大纲 (AI 生成),请读原文]
1. 局部预渲染 (Partial Pre-rendering, PPR) 的演进
• 现代网页通常由可预测的布局数据、偶尔变化的各种内容以及必须实时计算的个性化数据组成。
• PPR 允许页面分阶段渲染:首先发送静态外壳(Static Shell)以建立结构,而动态部分则包裹在 Suspense 边界(Suspense boundaries)中独立处理。
• 虽然 PPR 改善了交付方式,但它默认在每次请求时重新运行动态部分,无法直接复用渲染结果。

2. 缓存组件 (Cache Components) 核心概念
• 缓存组件将缓存决策从路由级别移至组件级别(Component level),解决了 PPR 的复用局限。
• 开发者可以使用 'use cache' 指令标记特定的 UI 部分,使其在多次请求之间复用渲染输出。
• 在多次请求中,被标记为缓存(C)的组件直接读取存储结果,而动态(D)组件则继续按需在服务器上运行。

3. 配置与代码实践
• 在 next.config.ts 中开启实验性功能标志 useCache: true 以启用组件级缓存。
• 通过自定义缓存配置文件(Cache Profiles)来管理数据的保鲜度(Stale)、重新验证(Revalidate)和过期(Expire)时间。
• 使用 cacheLife() 函数在组件内定义具体的缓存策略,并通过 Suspense 配合加载占位图(Loading Skeleton)来隔离慢速数据源。

4. 性能对比与最佳实践
• 性能对比显示:使用缓存组件后,首屏内容呈现时间(Time to First Content)从约 7 秒骤降至 100 毫秒以内。
• 渲染模型从“全或无”(All-or-nothing)转变为“渐进式渲染”(Progressive rendering)。
• 最佳实践建议:不要在缓存组件中混用运行时 API(Runtime APIs)、保持清晰的 Suspense 层次结构、仅缓存确定性的 UI 部分(如导航、产品列表)。


author Temitope Oyedele Cache components in Next.js: Faster pages with partial pre-rendering - LogRocket Blog
#优质博文 #React #CSS #设计 #前端 #demo
好喜欢!

React Tilt Button - 3D Tactile React Button Component:一个具备 3D 触感、支持倾斜和深度效果的 React 交互按钮组件。它利用 CSS 的 3D 变换(3D Transforms)技术,为传统的按钮元素注入了物理深度(Depth)和动态倾斜(Tilt)效果。组件不仅内置了从复古游戏(Arcade)到现代金属(Steel)等多种预设主题,还开放了高度细粒度的自定义参数,让开发者可以轻松调整按钮的海拔高度(Elevation)、圆角(Radius)及光泽感(Glare),从而打造出极具表现力的用户界面。

GitHub 地址 https://github.com/archisvaze/react-tilt-button
#优质博文 #CSS #Chrome #无障碍 #新特性
Try text scaling support in Chrome Canary:介绍 Chrome Canary 中新增的 <meta name="text-scale"> 标签,该功能允许网页响应移动端操作系统的全局字体大小设置。
[以下是方便搜索索引的大纲 (AI 生成),请读原文]

1. 特性概览与背景
• Chrome Canary 现已支持通过 <meta name="text-scale" content="scale" /> 标签来响应系统级的文本缩放。
• 解决了 iOS 和 Android 用户在系统设置中调大字体后,网页内容依然保持原样的问题。
• 该提案已正式进入 CSS Fonts 5 规范,旨在提升移动端网页的无障碍 (Accessibility) 体验。

2. 为什么需要手动开启 (Opt-in)
• 自动强制缩放会导致大量现有网站布局崩溃(例如 LinkedIn 在强制缩放下的导航栏重叠问题)。
• 遵循 WCAG 2.2 标准中关于“调整文本大小 (Resize Text)”和“屏幕回流 (Reflow)”的指南。
• 类似于早期的移动端视口 (Viewport) 标签,需要开发者确认网页能够处理非标准的文字比例。

3. 开发者适配指南
• 技巧 1:不要在 CSS 中覆盖初始字号 (Initial font size)。避免在 :root 级硬编码 px 数值,否则缩放将失效。
• 技巧 2:仅对内容(文字、图标、图像)使用字体相对单位 (Font-relative units),如 em 或 rem。
• 技巧 3:布局间距(如 padding、margin 或 gap)建议使用固定单位(如 px),以为放大后的文字腾出更多回流空间。
• 技巧 4:在 320px 宽度且 200% 缩放的极端条件下进行测试,确保网站在窄屏手机上依然可用。

4. 未来挑战与展望
• 探讨大标题 (Heading) 与正文 (Body) 缩放比例的差异化处理,避免标题过大导致排版异常。
• 期待其他主流浏览器在未来跟进支持该标准。


author Josh Tumath
#优质博文 #AI #前端
Vercel 的最新研究表明,在针对 Next.js 16 开发的最新评估中,他们发现将 8KB 的压缩后的文档索引塞进 AGENTS.md 文件比使用 skills 效果更好,因为 skills 无法可靠地触发。

原文如下,还挺符合直觉的。
我们原本以为技能测试能够解决编码代理学习框架特定知识的问题。但在构建了专注于 Next.js 16 API 的评估系统后,我们发现了一些意想不到的情况。

直接嵌入 AGENTS.md 中的 8KB 压缩文档索引实现了 100% 的通过率,而即使有明确的指令告知代理使用技能,技能的最高通过率也仅为 79%。如果没有这些指令,技能的表现甚至不如完全没有文档。

AI 编码代理依赖于会过时的训练数据。Next.js 16 引入了诸如 'use cache' 、 connection() 和 forbidden() 等 API,而这些 API 并不包含在当前的模型训练数据中。当代理不了解这些 API 时,它们会生成错误的代码或回退到旧的模式。
反过来也可能出现这种情况,即您运行的是较旧的 Next.js 版本,而模型却建议使用项目中尚不存在的较新 API。我们希望通过让代理访问版本匹配的文档来解决这个问题。


author Jude Gao Software Engineer, Next.js AGENTS.md outperforms skills in our agent evals - Vercel
#优质博文 #CSS #前端 #层叠上下文 #course
Unstacking CSS Stacking Contexts — Smashing Magazine
非常好的好文章!条理清晰,深入剖析 CSS 层叠上下文 (Stacking Contexts) 的工作原理,解释为什么 z-index 会失效,并提供实用的调试技巧与解决方案。

被安利了 Better CSS Stacking Contexts 这个 vscode 插件

AI 摘要:这篇文章详细介绍了 CSS 中层叠上下文 (Stacking Contexts) 的核心逻辑,解决了开发者经常遇到的 “为什么设置了 z-index: 9999 元素还是被遮挡” 的困惑。作者将层叠上下文比作“文件夹”,解释了一旦元素被困在父级文件夹中,其 z-index 就只能在内部生效。文章分析了 opacity、transform 等属性如何意外触发层叠上下文,并提供了针对模态框 (Modal)、下拉菜单 (Dropdown) 和工具提示 (Tooltip) 等常见场景的调试清单与修复方案(如 HTML 重构、Portal 传送门、以及 isolation: isolate 属性的应用)。

[以下是方便搜索索引的大纲 (AI 生成),请读原文]
1. 层叠上下文的基础概念 (Understanding Stacking Contexts)
• 文件夹比喻:网页像桌面,HTML 元素像纸张。层叠上下文就像“文件夹”,文件夹内的纸张(子元素)无论 z-index 多高,都无法超越文件夹本身的层级。
• 黄金法则:子元素的 z-index 仅在当前文件夹内部有效。浏览器首先对文件夹(父级上下文)进行排序,然后再排序其内部的纸张。
• 触发因素:除了定位属性外,opacity (透明度)、transform (变换)、filter (滤镜) 和 contain (包含) 等属性也会因为浏览器性能优化(GPU 加速)而自动创建新的层叠上下文。

2. 常见问题场景分析 (The “Unstacking” Problem)
• 被困的模态框 (The Trapped Modal):当模态框的父容器(如 Header)层叠顺序低于主体内容时,模态框即便设置极高 z-index 也会被遮挡。
• 没顶的下拉菜单 (The Submerged Dropdown):导航栏与主体内容的父子层级关系导致菜单显示在下方内容之后。
• 被裁剪的工具提示 (The Clipped Tooltip):overflow: hidden 会无视 z-index 直接裁剪超出边界的内容,这是另一种特殊的层叠陷阱。

3. 调试与排查工具 (Identifying The Trapped Layer)
• 调试清单:从问题元素开始,逐级向上检查 DOM 树,寻找可能触发层叠上下文的 CSS 属性。
• 高级工具:利用浏览器(如 Edge/Firefox)的 3D 视图查看层级;使用 “CSS Stacking Context Inspector” 插件或 VS Code 插件进行可视化排查。

4. 解决方案与最佳实践 (Unstacking And Regaining Control)
• 重构 HTML 结构:将模态框等组件移出嵌套容器,直接放在 <body> 下,这是最彻底的修复方式。
• 调整父级上下文:修改父容器的 z-index 或移除不必要的上下文触发属性。
• 传送门 (Portals):在 React/Vue 框架中使用 Portal 技术将组件逻辑上保留在原位,但在 DOM 上渲染到顶层。
• 无副作用的隔离 (isolation: isolate):利用 isolation 属性显式创建层叠上下文,有效解决负 z-index 导致的背景遮挡问题,且不会像其他属性那样产生布局副作用。


author Gabriel Unstacking CSS Stacking Contexts — Smashing Magazine
#优质博文 #前端 #AI #Coding #编程技巧 #ClaudeCode
如何在保持“负责任”的前提下,将 AI 编码工具深度集成到日常开发工作流中。
Practical Use Of AI Coding Tools For The Responsible Developer

是个比较贴合大部分正常工程师结合 AI 开发的文章。

[以下是方便搜索索引的大纲 (AI 生成),请读原文]
1. 负责任的 AI 开发原则
• 定义责任范围: 负责任的开发者必须确保代码质量,不给同事增加评审负担,并遵守公司的安全与隐私政策。
• 安全与验证: 严禁向 AI 泄露密钥 (Secrets) 或敏感客户数据 (PII);始终将 AI 生成的代码视为“陌生人的代码”,必须经过严格测试。
• 工具准入: 使用前需确保工具已获得公司批准,妥善处理专有代码的合规性。

2. 八大实战场景
• 理解陌生的代码库: 通过 AI 代理快速获取架构概览(入口点、路由、鉴权等),并让 AI 推荐阅读文件的优先级。
• 处理依赖升级的破坏性变更: 在升级 npm 包(如从 plotly.js v2 升至 v3)遇到问题时,利用 AI 快速定位 API 变更并寻找替代方案。
• 跨文件安全复用重构: 在一个文件完成重构后,利用 AI 将相同的重构逻辑安全地推广到其他具有相同模式的文件中。
• 在陌生技术领域实现功能: 借力 AI 在短时间内完成不熟悉领域的任务,例如使用 GLSL 编写复杂的着色器动画。
• 自动化编写测试: 将枯燥的单元测试和集成测试编写工作“外包”给 AI,并要求其涵盖正常路径与边界情况。
• 开发内部分析工具: 利用 AI 快速编写脚本,处理诸如代码重复率分析、数据导出至 Excel 等临时性的辅助任务。
• 现代化改造陈旧代码: 辅助进行重大的架构迁移,例如将十年前的构建流程(如 requireJS)迁移至现代的 Vite 栈。
• 总结与起草: 自动生成 Git 提交信息摘要或起草代码变更说明。

3. 优化建议与最佳实践
• 精细化提示词工程: 提示词越具体,输出质量越高。推荐在 Prompt 结尾增加“开始前你有什么问题要问我吗?”,让 AI 补充缺失的上下文。
• 结合版本控制: 采用小步快跑的提交方式,以便在 AI 生成错误代码或过度修改时能快速回滚。
• 坚持彻底的代码评审: AI 可能会产生幻觉 (Hallucination) 或生成“代码垃圾 (Slop)”。开发者必须逐行审查 AI 输出,保持最后一道质量关卡。

4. 行业反思与挑战
• 警惕技能萎缩: 担心新人开发者过度依赖 AI 而跳过了“解决问题的磨砺过程”,导致基础能力不足。
• AI 非万能钥匙: 卓越的开发能力和解决问题的核心素质永远不会过时,AI 应定位为辅助开发者进行高层级思考的盟友。


author Stefan Kaltenegger Practical Use Of AI Coding Tools For The Responsible Developer — Smashing Magazine
#优质博文 #AI #CLI
pi0/skillman

感觉不错诶~看到 antfu star 了这个,好奇的看了看,skillman 比较像 AI Agent 界的 npm,通过 skills.json 声明式管理技能依赖,底层给予 Vercel 的那个 skills CLI,让你能像执行 npm install 一样一键安装技能,从而避免将庞大的技能源码推送到 Git 仓库。

AI 摘要:skillman 是一个基于 Vercel Labs skills 构建的轻量级命令行界面(CLI)工具,旨在为 AI 智能体提供类似软件包管理器的体验。通过引入 skills.json 配置文件,它允许开发者锁定项目所需的技能版本与来源,实现技能的自动化安装与跨环境同步,支持包括 Claude Code 在内的多种智能体终端。
GitHub - pi0/skillman: 🤹 Manage project skills and lock them in skills.json
#优质博文 #JavaScript #DOM #新特性
告别insertBefore,使用moveBefore移动DOM元素
介绍了原生 DOM 新 API moveBefore 的用法、优势及其在 Web Components 中的应用,并对比了传统 insertBefore 的局限性。

AI 摘要:本文详细介绍了原生 DOM 的一项重要更新 moveBefore 方法。与传统的 insertBefore 不同,moveBefore 能够直接移动节点而无需经历“销毁与重建”的过程,从而完美保留元素的 CSS 动画、焦点状态、<iframe> 加载状态及 Web Components 的生命周期稳定性。作者提供了该方法的实践指南、Polyfill (兼容性补救) 方案。


author zhangxinxu
#优质博文 #React #前端 #性能优化
React Compiler: An Introduction, Pros, Cons & When to Use It | DebugBear
本文深入探讨了 React Compiler(原名 React Forget)的工作原理、优势与局限,以及如何在项目中实际应用这一自动记忆化(Memoization)工具。

AI 摘要:React Compiler 是 Meta 推出的构建时(Build-time)优化工具,旨在通过自动执行记忆化(Memoization)来减少不必要的组件重渲染(Re-render),从而提升应用性能。它能将开发者从繁琐的手动 useMemo 和 useCallback 中解放出来,使代码更简洁。虽然它已在 Meta 等大厂生产环境验证了显著的性能提升,但在处理第三方库兼容性、旧代码重构以及“黑盒”调试方面仍面临挑战。

[以下是方便搜索索引的大纲 (AI 生成),请读原文]
1. 技术概览与入门指南
• React Compiler 是 Meta 开发的构建时(Build-time)工具,自动为代码添加记忆化逻辑,目标是消除手动管理缓存的负担。
• 经过多年开发,该工具于 2025 年 10 月正式发布稳定版,现已良好支持 Vite、Next.js 和 Rsbuild 等主流构建工具。
• 使用前提是代码必须遵循“React 规则”(Rules of React),建议配合 eslint-plugin-react-hooks 插件进行静态代码分析。
• 开发者可以通过 React Developer Tools(v5.0+)中的 “Memo ” 徽章验证组件是否被成功优化。

2. 核心机制与工作原理
• 编译器并不直接使用 React.memo 或 useMemo 等公开 API,而是在编译阶段插入更细粒度(Granular)的缓存逻辑。
• 它可以独立缓存每个 JSX 元素(如 <h2>、<button> 等)和计算过程,而非仅对整个组件进行记忆化。
• 这种细粒度的处理方式确保只有当特定的输入(Props 或 State)改变时,相关的 UI 片段才会重新生成。

3. 核心优势与生产环境表现
• 提升代码质量:减少了为了性能优化而添加的模板代码,使逻辑更直接、更具可读性。
• 避免人为错误:消除了手动维护依赖项数组(Dependency Arrays)时容易产生的闭包陷阱或引用失效问题。
• 实战成效:Meta 在 Instagram 应用中实现了全站 3% 的性能提升;Sanity Studio 报告渲染性能提升了 20-30%;Wakelet 的交互到下次绘制(Interaction to Next Paint, INP)指标提升了近 30%。

4. 局限性与潜在挑战
• 徽章误导性:DevTools 的 “Memo ” 徽章仅代表编译器处理过该组件,并不意味着优化一定成功(例如若 Props 存在不稳定的内联引用,组件仍会重渲染)。
• 第三方库兼容性:某些库(如 TanStack Query 或 MUI)的 Hook 会在每次渲染时返回新对象,这会打破编译器的记忆化链,此时仍需手动干预。
• 旧代码重构压力:对于存在大量技术债或违反 React 规则的旧项目,引入编译器可能需要进行大规模的重构。
• 调试难度增加:由于优化逻辑是在构建时生成的“黑盒”逻辑,当出现非预期的重渲染时,排查问题的直观性不如手动代码。

5. 适用场景与性能监控
• 最适合新项目或遵循现代 React 实践、依赖库较少的干净代码库。
• 在启用编译器后,大多数 React.memo 变得冗余,可以安全移除,但对于需要显式控制的场景,仍可保留 useMemo。
• 建议使用真实用户监控(Real User Monitoring, RUM)工具来追踪性能指标(如 INP)在生产环境中的实际改观。


author Anna Monus React Compiler: An Introduction, Pros, Cons & When to Use It | DebugBear
#优质博文 #CSS #前端 #新特性
介绍 Chrome 144 新推出的 ::search-text 伪元素,以及如何利用 CSS 相对颜色语法统一美化各种文本高亮样式。
How to Style the New ::search-text and Other Highlight-y Pseudo-Elements | CSS-Tricks

AI 摘要:这篇文章探讨了 Chrome 144 新引入的 ::search-text 伪元素,它允许开发者自定义浏览器“页面内查找”(Ctrl+F)匹配到的文本样式。作者对比了 ::selection、::target-text 等多种高亮相关伪元素的功能差异,并重点分享了如何利用 CSS 相对颜色语法(Relative Color Syntax)构建一套自动适应背景、高对比度且能区分不同高亮类型的动态样式方案,旨在提升 Web 内容的可访问性与用户体验。

[以下是方便搜索索引的大纲(AI 生成),请读原文]
1. 核心特性:认识 ::search-text
• ::search-text 专门用于选中页面内查找(find-in-page)匹配到的文本。
• 默认情况下,Chrome 中匹配项为黄色,当前目标项(::search-text:current)为橙色。
• 该伪元素的推出让开发者能够突破浏览器默认 UI,自定义搜索反馈的视觉呈现。

2. 高亮伪元素全集概览
• ::search-text:页面查找匹配文本,包含 :current 状态。
• ::target-text:URL 文本片段(Text fragments)高亮,常用于从搜索引擎跳转后的自动定位。
• ::selection:用户通过光标手动选中的文本。
• ::highlight():通过 JavaScript 的 Custom Highlight API 定义的自定义高亮。
• ::spelling-error 与 ::grammar-error:主要用于可编辑内容中的拼写和语法错误标记。

3. 设计思路:可访问性与动态样式
• 为什么要自定义:解决默认颜色在特定背景下对比度不足(Color contrast)的问题,并增强视觉强调。
• 技术限制:高亮伪元素支持的 CSS 属性有限,例如 background-clip 和 backdrop-filter 通常无法使用。
• 相对颜色语法(Relative color syntax):利用 rgb(from var(--bg) calc(255 - r) ...) 实现自动颜色反转,确保高亮色始终与背景色形成强烈对比。

4. 进阶实战:区分重叠的高亮状态
• 视觉区分:当用户在搜索结果中又手动选中了文字,需要确保不同类型的高亮(如 ::selection 和 ::search-text)能被同时辨识。
• 差异化策略:通过反转不同的 RGB 通道(如只反转 R 和 G,或只反转 B)来赋予每种伪元素独特的色调。
• 透明度处理:为非当前目标的高亮添加 alpha 透明度,使它们在相互叠加时产生融合效果,方便用户识别每个高亮的起止位置。
• 兼容性与未来:提及了 contrast-color() 函数在 CSS Color Module Level 5 中的潜力,作为未来更简便的替代方案。


author Daniel Schwarz How to Style the New ::search-text and Other Highlight-y Pseudo-Elements | CSS-Tricks
 
 
Back to Top