第1期:创刊号:WWDC25 前端新特性
苹果带来了全新的设计语言 Liquid Glass,以及 Safari 26 Beta 带来了大量的新特性,pnpm 10.12.1 带来了全局的虚拟存储和扩展的版本目录,Node.js 18 正式进入 End-of-Life,VS Code 2025 年 6 月更新,Astro 5.9 带来了内容安全策略、Markdown 改进和更多,10+ CSS & JavaScript 粘性元素的代码片段
对于所有的文章,我都会进行深度总结,可以先打开总结,如果看了总结之后,觉得有价值,再去看原文,因为原文可能会有很多细节,而总结会帮你过滤掉很多细节,只保留最重要的信息。

卷首语
这是前端周刊第一期,从本周开始,我会在每周一更新一期,总结上周前端领域的热点,以及我的一些思考。
关于我为什么要做这个周刊:
因为我们处在一个信息爆炸的时代,每天都有大量的信息涌入我们的视野,我们很难有时间去整理和思考这些信息,而现在随着 AI 的兴起,我们可以通过 AI 来帮助我们整理和思考这些信息,然后通过这个周刊来分享给更多的人。
最后是因为输出可以倒逼输入,通过输出,我可以更好地吸收和理解这些信息,然后通过这个周刊来分享给更多的人。
由于这是第一期,所以无论是排版还是内容,都还比较粗糙,我之前虽然写过博客,但是没有做过周刊,一切都还在摸索中。
本周 WWDC 绝对是前端领域的热点,因为苹果发布了 Liquid Glass,虽然网上说回到了 Windows Vista 时代,但其实苹果发布的这个与 Windows 的玻璃效果完全不同,简单来说一个是液态玻璃,一个是毛玻璃,苹果的液态玻璃是基于物理的,实现难度非常高,效果非常惊艳,但是让用户对于性能消耗十分担忧。
Liquid Glass 有一个最大的特色就是空间感,感觉就像是把 visionOS 的那种空间感和层次感,直接搬到了 iOS、macOS、iPadOS、watchOS 和 tvOS 上。
Liquid Glass 到底是什么?
简单来说,Liquid Glass 是一种全新的界面材质。它的核心特性是“通透”和“流动感”。你可以把它想象成现实生活中的玻璃,但又比玻璃更灵动。比如说,按钮、菜单、tab bar、sidebar 这些控件,现在都像是用一层会呼吸的玻璃做成的。它会根据你屏幕上的内容、环境光线,甚至你的操作动态变化,反射和折射周围的色彩和光影。
举个例子:你在 iPhone 上滑动页面时,tab bar 会自动缩小,把更多空间让给内容;当你往回滑,它又会流畅地恢复原状。这种“流动感”真的很有未来感。
设计师视角:美感与挑战并存
让我印象深刻的是,Liquid Glass 不只是视觉上的升级,更是交互体验的提升。控件和内容之间的层级关系变得更清晰,整个界面看起来更有空间感。比如 macOS 的 Dock、桌面小组件、App 图标,现在都能用多层 Liquid Glass 叠加出不同的光影效果,甚至可以自定义明暗、色调和透明度。
但很多用户实装后,大量的负面反馈 Liquid Glass 的高透明度有时候会影响可读性,尤其是背景比较复杂或者光线强烈的时候。对于有视觉障碍的用户来说,这种设计可能会带来额外的阅读负担。这只有看苹果未来的更近一步优化。
开发者体验:API 和工具的变化
从开发角度看,苹果这次也同步更新了 SwiftUI、UIKit 和 AppKit 的 API。开发者可以直接用新的 Liquid Glass 材质和控件,快速适配新版 UI。还有一个叫 Icon Composer 的新工具,可以帮我们一键生成适配多平台、多主题(比如明亮、暗色、彩色、透明)的 Liquid Glass 风格图标。
我觉得这对我们来说是个好消息,毕竟不用再自己造轮子去模拟那种复杂的玻璃质感了。但同时,如何在保证美观的同时兼顾可用性和性能,还是需要我们在实际项目中多做权衡。
个人感受
我个人很喜欢 Liquid Glass 带来的那种“界面在呼吸”的感觉。它让 UI 不再是死板的平面,而是有了更多的层次和动态反馈。每次点开控制中心、切换 app,都会有一种“哇,这也太丝滑了吧”的体验。
Liquid Glass 很酷,但如果用得太过,反而会让用户分心。所以我在实际项目里,肯定会多关注对比度、可读性这些细节,尤其是在多样化的使用场景下。
总结一下我的看法
Liquid Glass 是苹果近十年来最大的一次 UI 设计革新。它让界面更有生命力,也给我们开发者和设计师带来了新的工具和挑战。我很期待看到社区里更多基于 Liquid Glass 的创新玩法,也希望苹果能持续优化可访问性,让美感和实用性真正兼得。
我个人是在第一时间就升级了 macOS 26 的 beta 版本,我还是推荐亲自体验后,再做评论。
本周头条
对于新的事物我的接受度是非常高的,目前我已经在 macOS 26 的 beta 版本上体验了 Liquid Glass,我非常喜欢这种设计,自从苹果上一次更新设计语言还是在 2014 年,距离现在已经有 11 年了,这 11 年里,苹果的设计语言一直没有太大的变化,而这次它终于做出了巨大的改变。
深度总结
Apple于2025年6月发布了覆盖iOS 26、iPadOS 26、macOS Tahoe 26、watchOS 26和tvOS 26的全新软件设计。此次更新的核心在于引入了“Liquid Glass”这一新型设计材料,并实现了跨平台的统一视觉体验。
Liquid Glass:动态玻璃材质
Liquid Glass是一种具备高透明度和流动感的界面材质。它能够根据周围内容的色彩和环境光线智能调整自身的外观。例如,在浅色和深色模式下,Liquid Glass会自动适配,确保界面元素始终与背景和内容和谐共存。其动态高光和实时渲染能力,使按钮、滑块、文本等控件在交互时呈现出类似真实玻璃的反射和折射效果。
举例来说,用户在操作按钮时,Liquid Glass材质会根据手指的移动和界面内容的变化,实时调整高光和透明度。这种设计不仅提升了界面的层次感,也让交互过程更加直观。
控件与导航的重构
新设计对控件、工具栏和导航结构进行了全面重构。以往的控件多为矩形,适配传统直角屏幕。现在,所有控件都与设备的圆角屏幕和窗口保持同心,视觉上更加统一。控件采用Liquid Glass材质,悬浮于内容之上,能够根据用户需求动态变化。例如,tab bar在用户滚动时会自动收缩,突出内容本身;当用户需要导航时,tab bar又会流畅展开。
侧边栏同样采用了Liquid Glass,能够折射和反射背景内容,增强空间感。用户在iPadOS和macOS上使用Apple TV等应用时,侧边栏的这种动态表现让界面更具沉浸感。
系统级体验的提升
Liquid Glass不仅应用于应用内部,还延伸至系统级体验。例如,锁屏界面的时间显示采用Liquid Glass材质,能够根据壁纸主体自动调整字体的粗细、宽度和高度,使其自然嵌入画面。主屏幕和桌面上的Dock、应用图标和小组件也都采用多层Liquid Glass设计,支持多种个性化外观,包括明亮、深色、彩色和透明等多种风格。
在macOS Tahoe 26中,菜单栏实现了完全透明化,进一步扩大了显示空间的视觉感受。
开发者支持与API更新
Apple为开发者提供了全新的API,支持在SwiftUI、UIKit和AppKit中快速集成Liquid Glass材质和新控件。开发者可以通过Icon Composer等工具,设计出在不同主题下都能自适应的Liquid Glass风格图标。这一更新为应用带来更高的视觉一致性和交互体验。
Apple此次软件设计更新以Liquid Glass为核心,强调动态、透明和统一的视觉语言。通过对控件、导航和系统级元素的重构,提升了内容聚焦和交互的直观性。开发者可借助新API和工具,快速适配这一全新设计体系,进一步提升用户体验。
2、Safari 26 Beta 带来了哪些新的变化(英文)
开发过 WAP 的开发者应该对于 Safari 是深恶痛绝,Safari 在渲染的时候会出现各种各样的问题,而 IOS 上面的用的最多的浏览器就是 Safari,IOS 的用户占比又很高,所以不得不对 Safari 进行做一些兼容性处理。
深度总结
Safari 26 beta 带来了大量面向前端开发者和 UI 设计师的更新,涵盖 SVG、Web App、图像、3D、CSS、Web API、调试工具等多个领域。以下是主要内容梳理:
版本号统一
Safari 版本号直接跳跃至 26,与 macOS、iOS、iPadOS、visionOS、watchOS 保持一致。今后所有平台的 Safari 都将以相同主版本号发布,便于开发者追踪新特性。
SVG 图标支持
Safari 26 beta 全面支持 SVG 格式作为界面图标,包括 favicon。SVG 具备无限缩放能力,能自动适配不同尺寸需求,且文件体积通常小于 PNG。Data URL 形式的图标也被支持,便于内嵌小型图像。
Web App 体验一致化
iOS 和 iPadOS 现已默认将所有添加到主屏幕的网站以 Web App 形式打开,无需额外配置 manifest 或 meta 标签。用户可自主选择是否以 Web App 方式打开。开发者如配置了 Web Application Manifest,相关功能(如离线、图标等)依然生效。
HDR 图像
Safari 26 beta 支持在网页中嵌入 HDR 图像,提升亮度和色彩表现。新增 CSS 属性 dynamic-range-limit
,可控制混合显示 HDR 与 SDR 内容时的表现,支持 no-limit
和 standard
两种模式。
WebKit SwiftUI API
WebKit 推出全新 SwiftUI API,核心为 WebView
和 WebPage
类型。WebView
作为 SwiftUI 视图,直接加载 URL。WebPage
提供可观察属性和方法,便于与 SwiftUI 结合,实现内容响应和自定义导航、对话框等。支持自定义 URL scheme 及并发处理。
<model>
元素与 3D 交互
visionOS 下 Safari 支持 <model>
元素,允许网页直接嵌入 USDZ 格式的 3D 模型。支持环境光贴图(如 .hdr)、动画(autoplay、loop)、交互(stagemode=“orbit”)、以及通过 JS 控制模型变换。用户可将模型拖拽到现实空间中查看。
沉浸式视频与音频
visionOS Safari 支持空间视频、Apple Immersive Video、180°/360°/广角视频等多种沉浸式媒体格式。支持 APMP 规范和 HLS 流媒体,视频可在 3D 空间曲面上播放。
WebGPU
Safari 26 beta 支持 WebGPU,允许开发者通过 WGSL 语言直接调用 GPU 进行图形渲染和通用计算。WebGPU 性能优于 WebGL,兼容 Babylon.js、Three.js、Unity 等主流框架。
CSS 新特性
- Anchor Positioning:通过
anchor-name
、position-anchor
、position-area
实现元素锚定布局,简化弹窗、菜单等定位。 - Scroll-driven Animations:CSS 动画可与滚动进度绑定,使用
animation-timeline: view()
和animation-range
控制动画触发区间。 - text-wrap: pretty:优化文本换行,减少短行和不均匀边缘。
- contrast-color():自动选择黑或白字体色,提升对比度。
- progress():CSS 数学函数,计算某值在区间内的进度百分比。
- margin-trim: block inline、
overflow-block
、overflow-inline
、绝对定位下的align-self
/justify-self
、crossorigin()
/referrerpolicy()
修饰符等。
数字凭证 API
Safari 26 beta 支持 W3C Digital Credentials API,允许网站安全请求如驾照等数字身份凭证。API 基于 Credential Management,采用国际标准协议,提升身份验证安全性和便捷性。
Web API 与 JavaScript
- Trusted Types API:防止 XSS,确保输入经过开发者定义的净化函数处理。
- URL Pattern Standard:高效匹配 URL 路径。
- WebAuthn Signal API:支持网站与凭证提供方同步凭证变更。
- File System WritableStream API:直接写入本地文件。
- IntersectionObserver 支持 scrollMargin:更精确的可见性检测。
- RegExp Pattern Modifiers:正则表达式支持更细粒度的 flag 控制。
- Explicit Resource Management:支持
@@dispose
、@@asyncDispose
、SuppressedError
、DisposableStack
。
媒体与 WebRTC
- ALAC/PCM 音频录制,WebCodecs API 新增音频编解码。
- MediaSource API 支持可分离对象,便于无缝切换。
- WebRTC 多项增强,包括 CSRC 信息、Speaker Selection API、帧序列化、
ImageCapture.grabFrame
等。
Web Inspector 与调试
- 支持自动检测和暂停 Service Worker,便于调试推送等异步事件。
- Timelines、Elements、Debugger 等工具增强,支持 Worker 归属、Shadow DOM 可视化、异步代码单步调试等。
Web Extensions
- 新的 Web Extension Packager 工具,便于将扩展打包分发到 App Store。
- 扩展命令可在 macOS/iPadOS 菜单栏显示,支持自定义快捷键。
其他改进
- WebAssembly 性能提升,采用 in-place interpreter。
- 隐私保护:阻止已知指纹脚本访问敏感 API 和存储。
- 网络:
<link rel=dns-prefetch>
支持扩展至 iOS/iPadOS/visionOS。 - Lockdown Mode:安全模式下支持更多 web 字体。
- 兼容性:用户可直接在页面菜单中报告网站问题。
- 大量 bug 修复,涵盖可访问性、CSS、Canvas、DOM、表单、JavaScript、媒体、渲染、SVG、滚动、Service Worker、表格、文本、URL、Web API、Web Animations、Web Extensions、Web Inspector、WebRTC 等模块。
Safari 26 beta 的更新聚焦于提升开发体验、增强性能与安全、扩展多媒体与 3D 能力,并持续完善 CSS、Web API 及调试工具。前端开发者和 UI 设计师可据此探索新特性,优化跨平台 Web 应用与界面设计。
3、pnpm 10.12.1: 全局的虚拟存储和扩展的版本目录(英文)
我大部分情况下都是使用的pnpm
,使用它会在安装依赖的时候少走很多弯路,并且更值得一提的是,它安装依赖的速度非常快,并且它还支持 monorepo 的开发。
深度总结
pnpm 10.12.1 带来了两项核心更新:实验性的 Global Virtual Store(全局虚拟存储)和 Version Catalog(版本目录)功能的扩展。
Global Virtual Store:加速依赖安装的新机制
传统的 pnpm 会将依赖链接到每个项目的 node_modules/.pnpm
目录。新版本引入的 Global Virtual Store,则将依赖链接指向一个全局共享目录 <store-path>/links
。每个依赖包根据其完整依赖图生成哈希,存储在对应的文件夹中。
举例来说,假设有多个项目依赖同一个库及其相同的依赖树。启用 Global Virtual Store 后,这些项目会直接复用同一份依赖,无需重复 relink 或重新下载。这样,安装速度大幅提升,尤其在本地缓存已存在的情况下。该机制与 NixOS 的包管理方式类似,强调依赖隔离和图结构存储。
需要注意,pnpm 会在 CI 环境下自动禁用此功能,因为 CI 通常没有可复用的本地缓存。
Version Catalog:依赖版本一致性的进一步保障
Version Catalog 机制帮助 monorepo 或 workspace 保持依赖版本一致。此次更新带来了以下改进:
pnpm update
现已支持catalog:
协议依赖的更新,并能同步更新pnpm-workspace.yaml
中的版本声明。- 新增
catalogMode
配置项,允许开发者选择 catalog 的强制程度:manual
:默认模式,不自动添加依赖prefer
:优先使用 catalog 中的版本strict
:只允许使用 catalog 已声明的依赖
- 新的 CLI 选项支持在添加依赖时直接保存到 catalog。
其他更新
- side-effects 缓存 key 发生变化,旧缓存将不再被使用。
- 新增
ci
配置项,允许用户显式声明是否处于 CI 环境。 pnpm patch
命令现在按语义化版本排序。- 依赖版本不匹配时,错误信息会显示更清晰的 diff。
生态与趋势
过去三年,pnpm 的月下载量已接近一亿,广泛应用于大型开源项目。其依赖隔离、内容寻址存储和高效安装机制,尤其适合 monorepo 和大型 workspace。Global Virtual Store 的引入,进一步强化了 pnpm 的性能导向设计。
4、Node.js 18 正式进入 End-of-Life(英文)
为了兼容之前的老项目,有时候不得不使用一些比较老的版本,现在 Node.js 18 已经正式进入 End-of-Life,之前对于一些老项目我还专门切到 14.20.0 这个版本。
深度总结
Node.js 18及更早版本已进入End-of-Life(EOL)阶段,意味着这些版本不再获得任何更新,包括安全补丁。继续使用这些版本,项目将暴露在已知且无法修复的安全漏洞之下。例如,Node.js 18、16、14等版本均受到llhttp、openssl、npm等组件的多项中高危漏洞影响。根据官方统计,Node.js 18每月下载量仍高达五千万,16及更早版本也有数千万,显示大量应用仍运行在不受支持的环境中。
Node.js官方建议直接升级到Node.js 22,而非先升级到20。原因有三:首先,Node.js 22的LTS支持周期更长,至2027年4月,远超20的2026年4月。其次,直接升级可避免短期内再次大版本迁移,减少工程资源消耗。最后,Node.js 22集成了最新的性能优化和特性,包括原生TypeScript支持(需开启flag)。
对于开发团队,建议全面审查现有Node.js版本,制定直接迁移到22的计划。DevOps团队应同步更新CI/CD流程、Docker镜像及部署脚本,跳过20。开源项目维护者可将Node.js 22设为新版本的最低要求,以获得更长的支持周期。
如果因历史代码、合规或依赖链复杂等原因无法立即升级,可考虑HeroDevs等商业支持服务,获得EOL版本的安全补丁和技术支持。但这只是权宜之计,最终目标应是迁移到官方支持的最新LTS版本。
Node.js 22不仅提供最长的支持窗口,还带来最佳性能和新特性。对于希望保障应用安全、减少维护负担的团队,直接升级到22是最具前瞻性的选择。
VS Code 是很多 AI 编辑器的基础,最近的一些大更新都是针对 AI 的,比如 Chat、Copilot 等。
深度总结
MCP(Model Context Protocol)能力扩展
- Prompt 支持:MCP 服务器可定义 prompt,用户可通过
/mcp.servername.promptname
形式在 chat 中调用。这类似于为 AI 预设常用指令模板,提升复用效率。 - Resource 支持:MCP 服务器返回的资源可直接保存、拖拽到 Explorer,或作为上下文添加到 chat。资源模板也得到支持,便于跨服务器浏览和管理。
- Sampling(实验性):MCP 服务器可向模型发起采样请求,首次请求需用户确认。采样模型和请求日志可在 MCP 服务器列表中管理。
- 认证支持:MCP 服务器现支持多种认证规范,包括 GitHub、Entra 等主流授权服务器。用户可在账户菜单中管理已授权的 MCP 服务器和账户,支持动态客户端注册和多种授权流程。
- 开发模式:通过在配置中添加
dev
字段,支持文件变更自动重启和 Node.js/Python 服务器调试,提升开发效率。
Chat 相关增强
- 工具集(Tool Sets):可通过 UI 或 API 定义工具集,将相关工具分组,便于在 agent mode 下统一启用或禁用。例如,管理 GitHub 通知的工具集可统一调用。
- 自定义 Chat 模式:支持自定义 chat mode,用户可指定 LLM 行为和可用工具,适用于特定工作流,如只读规划模式。
- 上下文管理优化:当前文件可作为建议上下文项,便于快速添加或移除。agent mode 下,编辑器状态(如文件名、光标位置)会作为提示信息提供给 agent。
- Chat 体验提升:用户消息与 AI 回复视觉区分更明显,撤销操作更直观,附件导航性增强。新增用户操作提示音,提升可访问性。
编辑与搜索体验
- 高效应用编辑:文件编辑支持整体重写或多点小幅修改,UI 会根据情况自动调整 auto-save 和 squiggles 行为。Keep/Undo 命令快捷键统一,避免与常用编辑命令冲突。
- Find as you type:Find 控件可配置为输入即查或回车后查找,提升灵活性。
- AI 搜索建议:设置页新增 AI 搜索切换,支持语义搜索,能根据意图而非关键词返回结果。搜索视图支持关键词建议和语义搜索行为自定义。
- EditContext API:编辑器输入默认启用 EditContext API,修复多项输入法相关问题,为后续输入体验升级打下基础。
源码管理与协作
- Source Control Graph 视图:可在图视图中查看文件详情,支持树状或列表展示。可将历史项作为上下文添加到 chat,便于基于特定 commit 或 PR 进行讨论。
- Copilot Coding Agent 集成:可直接在 VS Code 内分配和跟踪 Copilot 代理的任务,查看其工作状态和进度。
Python 相关增强
- Python Chat 工具:Python 扩展集成多项 chat 工具,如环境信息获取、包安装、环境配置等,自动识别并适配当前工作区环境。
- 项目模板创建:Python Environments 扩展支持基于模板快速创建包或脚本项目,自动生成虚拟环境和基础文件结构。
- PyEnv/Poetry 支持:环境和包管理工具 pyenv、poetry 得到原生支持,便于多环境协作。
其他重要更新
- 扩展安全:VSCE 打包时自动扫描密钥和敏感信息,防止泄露。可通过参数跳过特定检查。
- Electron 35 升级:内置 Chromium 134 和 Node.js 22.15.1,提升运行时性能和兼容性。
- ESM 支持:NodeJS 扩展主机支持 ESM,GitHub Issue Notebooks 已率先采用,需注意 web worker 兼容性。
- 窗口与菜单体验:支持自定义菜单样式,Linux 下原生窗口菜单,浮动窗口支持更多操作。
- 终端智能补全:Python REPL 终端支持语言服务器补全,提升交互效率。
本次更新聚焦于 AI 能力集成、编辑与协作体验提升,以及开发者工具链的现代化。许多功能仍在持续完善,建议关注 Insiders 版本以体验最新进展。
6、Astro 5.9: 内容安全策略、Markdown 改进和更多(英文)
Astro 是一个非常强大的静态网站生成器,它支持很多现代的 Web 技术,比如 React、Vue、Svelte 等,当前网站就是基于 Astro 构建的。
深度总结
Astro 5.9 带来了多项关键更新,聚焦于提升站点安全性、内容渲染灵活性以及开发体验。以下是本次版本的主要亮点及其实现原理。
实验性 Content Security Policy(CSP)支持
CSP 是防御 XSS(跨站脚本攻击)的核心手段。它通过限制页面可加载的脚本和样式来源,降低恶意代码注入的风险。Astro 5.9 引入了实验性 CSP 支持,简化了安全策略的配置流程。
实现方式
Astro 兼容多种部署环境,包括静态托管、Serverless、Node.js 及边缘运行时。为适配这些场景,Astro 选择了 hash 方案而非 nonce 方案:
- nonce 方案:每次请求生成随机值,插入到 HTML 的
<script>
和<style>
标签,并通过响应头下发。此方法依赖服务端动态生成,不适用于静态站点和 SPA。 - hash 方案:对所有脚本和样式内容计算 hash,允许浏览器仅执行这些已知内容。Astro 自动生成
<meta http-equiv='content-security-policy'>
标签,包含所有必要的 hash,适配静态站点和 SPA。
开发者可通过配置项自定义算法、添加指令、扩展 style-src
和 script-src
,实现更细粒度的安全控制。例如,可以指定 SHA-512
算法、添加图片 CDN 白名单、为外部样式或脚本补充 hash。
Markdown 渲染能力增强
Astro 内容集合一直支持通过 render()
和 <Content />
渲染 Markdown 文件。5.9 版本新增 renderMarkdown
辅助函数,允许在 content loader 内直接渲染 Markdown 内容。
使用场景
以往在 loader 中处理 Markdown,需要手动解析,且配置不统一。现在,renderMarkdown
直接复用 Astro 的 Markdown 配置和插件,返回 HTML 及元数据。这样,无论内容来源于本地还是外部 CMS,渲染体验保持一致。
响应式图片默认样式可选
Astro 的实验性响应式图片功能默认会注入样式,确保图片自适应布局。对于使用 Tailwind 4 等框架的项目,这些默认样式可能难以覆盖。5.8.1 版本起,开发者可通过 image.experimentalDefaultStyles
选项关闭默认样式,避免样式冲突。
适配器日志输出优化
Astro 在构建时会检测适配器对特性的支持情况,并输出相关日志。5.9 版本允许适配器作者通过 suppress
选项控制日志输出,避免重复或矛盾的信息,提升开发者排查体验。
Astro 5.9 的这些更新,进一步提升了框架的安全性、灵活性和易用性。开发者可以更高效地实现安全策略、内容渲染和样式定制,适应多样化的项目需求。
深度阅读
本期的深度阅读,我选择了 Tailwind CSS v4 和 React 19 的发布,虽然这两篇文章已经发布了很久了,但作为前端领域的热点,还是值得我们关注一下。
1、Tailwind CSS v4 发布,带来全新的配置方式和性能提升(英文)
Tailwind CSS 的 v4 版本,带来了全新的配置方式和性能提升,以及一些新的特性,它使用 Rust 重写了引擎,性能提升非常明显。但是也带来了一些问题,首先需要 Rust 环境,因为它使用了太多的新 CSS 特性,所以存在着严重的兼容性问题,我个人推荐生产环境使用要谨慎,因为国内大部分用户的浏览器都不支持这些新特性。
深度总结
Tailwind CSS v4.0 是一次全面的框架重构,聚焦于性能提升与灵活性扩展。此次版本不仅优化了底层引擎,还重塑了配置与定制体验,充分利用了现代 Web 平台的新特性。
性能提升
新引擎带来了显著的构建速度提升。全量构建速度提升至原来的 3.78 倍,增量构建速度提升至 8.8 倍,部分场景下增量构建可达 182 倍。开发过程中频繁使用的类如 flex
、col-span-2
、font-bold
,在无新 CSS 生成时,构建几乎瞬间完成。
现代 Web 特性集成
v4.0 深度集成了 cascade layers、registered custom properties(如 @property
)、color-mix()
等现代 CSS 特性。例如,color-mix()
允许直接在 CSS 中调整颜色透明度,无需额外工具。逻辑属性的引入简化了 RTL 支持,减少了样式表体积。
安装与配置简化
安装流程大幅简化,仅需一行 CSS @import "tailwindcss"
即可,无需额外配置。内容检测自动化,无需手动维护 content
数组。通过 @source
指令可灵活引入额外源文件,自动排除二进制等无关文件。
CSS-first 配置模式
配置方式由 JavaScript 文件迁移至 CSS 文件。开发者可直接在 CSS 中通过 @theme
定义设计 token、断点、色板等。所有设计 token 会自动暴露为 CSS 变量,便于在运行时引用或动画处理。
动态工具类与变体
工具类支持动态取值,无需预先配置。例如,mt-8
、w-17
、pr-29
等 spacing 工具类可直接使用任意数值。数据属性变体如 data-current:opacity-100
可直接使用,无需额外配置。
色彩与渐变能力升级
默认色板全面升级为 oklch 色彩空间,色彩表现更为鲜明。渐变工具类支持线性角度、插值模式(如 sRGB、OKLCH)、conic 与 radial 渐变。通过如 bg-linear-45
、bg-conic-*
、bg-radial-*
等类实现更丰富的视觉效果。
容器查询与 3D 变换
容器查询(container queries)成为核心功能,无需插件。支持 @container
、@max-*
、@min-*
等变体,便于响应式布局。3D 变换工具类如 rotate-x-*
、scale-z-*
、translate-z-*
等,扩展了视觉表现力。
新增与扩展的工具类
inset-shadow-*
、inset-ring-*
:支持多层阴影叠加。field-sizing
:自动调整 textarea 尺寸。color-scheme
:优化暗色模式下的滚动条等细节。font-stretch
:支持可变字体宽度调整。inert
、nth-*
、in-*
、descendant
等变体,提升选择器灵活性。@starting-style
支持,实现元素初始状态动画,无需 JavaScript。
工具链与生态
v4.0 提供官方 Vite 插件,进一步提升集成效率。内置 import 支持,无需额外 PostCSS 插件。升级工具与文档完善,便于现有项目平滑迁移。
Tailwind CSS v4.0 以更高的性能、更现代的特性和更简洁的开发体验,为前端开发者提供了更强大的工具集。无论是新项目还是现有项目升级,都能显著提升开发效率与代码质量。
2、React 19 发布,带来全新的渲染机制和性能提升(英文)
React 离上一个稳定版本已经过去了两年,本次最大的变化就是支持了 Server Components,以及一些性能提升。最近各个主流框架都开始研究 Server Components,React 19 的发布,也意味着 Server Components 正式进入主流框架的视野。
深度总结
React 19 已正式发布,带来了大量面向开发者体验和应用性能的更新。以下内容梳理了本次版本的主要特性与改进,并结合实际开发场景进行解释。
Actions 机制
在以往的 React 应用中,处理表单提交、异步请求、错误状态和乐观更新通常需要手动管理多个状态变量。React 19 引入了 Actions 概念,允许开发者通过 async 函数和新的 hooks 自动管理这些流程。
- 自动管理 pending 状态:通过
useTransition
或<form>
Actions,异步操作的 pending 状态会自动切换,无需手动设置。 - 乐观更新:配合
useOptimistic
,可以在请求未完成时先行渲染预期结果。例如,用户修改昵称时,界面可立即显示新昵称,待后端确认后再同步最终状态。 - 错误处理:Actions 支持自动回滚乐观更新,并能与 Error Boundary 配合,统一处理异常。
- 表单集成:
<form>
、<input>
、<button>
的action
和formAction
属性可直接传入函数,表单提交后会自动重置。
新增 Hooks
- useActionState
简化了异步操作的状态管理。开发者只需提供一个异步函数,React 会自动返回错误信息、提交函数和 pending 状态。 - useFormStatus
设计系统中常见的表单状态获取需求可通过该 hook 实现,无需层层传递 props。 - useOptimistic
用于实现乐观 UI。比如在评论区,用户提交评论后,界面可立即显示新评论,后端响应后再做最终确认。
use API
React 19 新增 use
API,可在渲染阶段读取 Promise 或 Context。
- 读取 Promise 时,组件会自动 Suspense,直到数据加载完成。
- 读取 Context 时,支持在条件分支后调用,解决了
useContext
只能在顶层调用的限制。
React DOM 静态 API
react-dom/static
新增 prerender
等 API,支持在静态站点生成时等待数据加载,适用于流式渲染环境。
例如,服务端可在所有数据准备好后输出完整 HTML,提升首屏体验。
React Server Components 与 Server Actions
- Server Components
支持在构建时或服务端渲染时提前生成组件内容,减轻客户端负担。 - Server Actions
允许客户端组件调用服务端异步函数,前后端协作更为紧密。通过"use server"
指令声明,框架自动处理调用与数据返回。
其他重要改进
- ref 作为 prop
函数组件可直接通过ref
prop 获取引用,无需再用forwardRef
。未来forwardRef
将被废弃。 - Context 作为 Provider
<Context>
可直接作为 Provider 使用,语法更简洁,原有<Context.Provider>
方案将逐步淘汰。 - ref 回调支持清理函数
ref
回调可返回清理函数,组件卸载时自动执行,便于资源释放。 - useDeferredValue 支持 initialValue
新增initialValue
参数,首次渲染时可指定初始值,后续异步更新。 - 原生支持文档元数据与样式表
<title>
、<meta>
、<link>
、<style>
等标签可直接在组件中声明,React 会自动提升到<head>
,无需第三方库。 - 异步脚本与资源预加载
<script async>
可在组件树任意位置声明,React 自动去重。
新增prefetchDNS
、preconnect
、preload
、preinit
等 API,优化资源加载顺序和性能。 - 自定义元素支持
完善了对 Web Components 的支持,属性与属性值的处理更符合标准。 - 更友好的错误与 hydration 报告
Hydration 错误信息更直观,提供差异对比,便于定位问题。
新增onCaughtError
、onUncaughtError
、onRecoverableError
三种根级错误处理回调。
兼容性与升级建议
React 19 的部分新特性涉及 API 变更和弃用,建议参考官方升级指南,逐步迁移现有代码。对于 Server Components、Actions 等新能力,建议结合实际业务场景逐步引入,充分利用其带来的开发效率和性能提升。
3、10+ CSS & JavaScript 粘性元素的代码片段(英文)
这个文章介绍了如何使用 CSS 和 JavaScript 来实现一个粘性元素,这个技术在 Liquid glass 中被广泛使用,所以值得我们关注一下。
深度总结
本网页系统梳理了八种实现“sticky”元素的CSS与JavaScript代码片段,旨在提升长页面的可用性与用户体验。Sticky元素常用于固定导航栏、广告、社交分享按钮等,使用户在滚动页面时始终能访问关键功能或信息。以下为主要内容梳理:
1. Pure CSS Header Animation to Sticky Navigation
通过CSS实现的header动画,支持在滚动时将高而窄的header转变为全屏导航栏。动画效果依赖keyframe,兼容性在Chromium浏览器最佳。对于不支持的浏览器,则退化为简单的sticky header。该方案轻量且易于集成。
2. Sticky Responsive Sidebar Navigation
侧边栏导航采用sticky定位,支持响应式设计。鼠标悬停时,侧边栏会展开显示文本标签,移动端同样适用。适合大屏设备,移动端可切换为“hamburger”菜单。
3. CSS Sticky Table Header & Column
针对长表格的可读性问题,利用position:sticky
固定首行和首列。这样用户在滚动时不会丢失表头和关键列信息,提升数据表的易读性。
4. Long Scroll Sticky Sections
通过sticky定位与calc()
属性,实现在长页面中每个section的编号在滚动时始终可见。适用于章节分明的内容展示,增强用户的定位感。
5. Just Another Sticky Section Layout
将sticky元素用于产品特性展示。页面滚动时,文本与视频内容动态切换,布局全屏且响应式,适配移动端。适合需要高交互性的产品介绍页面。
6. Multi-Navigation Sticky Bars & Layout
多导航栏场景下,首个导航栏默认sticky,滚动到特定区域后,第二个子导航栏也会固定在页面顶部,并带有毛玻璃特效。适合内容层级丰富的网站。
7. Sticky Video with CSS @container scroll-state()
实现视频播放器在滚动时自动吸附到页面角落。通过CSS container queries动态调整播放器位置,用户可边浏览内容边观看视频。配置面板可实时调整动画效果。
8. Dynamic Sticky Sidebar Component
适用于电商购物车等场景。侧边栏组件在页面滚动时始终可见,便于用户随时查看和操作购物车内容,提升转化率。
Sticky元素不仅限于导航栏,还可广泛应用于表格、视频、侧边栏等多种场景。CSS已能满足大部分需求,复杂交互可结合JavaScript实现。合理运用sticky设计,有助于优化信息架构与用户操作流程。
开源精选
1、vue-equipment:Vue Equipment 是由 Magic as a Service GmbH 推出的开源前端工具包,旨在解决 Vue 生态中现有方案不足、开发者需重复造轮子的痛点,提供一套即插即用的插件与组合式 API,助力现代 Web 应用高效开发。该项目目前处于 beta 阶段,虽承诺尽量减少破坏性变更,但在正式稳定版发布前仍可能有较大调整,并会随每次发布明确告知变更内容。
2、react-native-reanimated:React Native Reanimated 是由 Software Mansion 维护的开源动画库,旨在为 React Native 提供流畅高效的动画体验,并以卓越的开发者体验著称。该库目前已更新至 4.x 版本,仅支持 React Native 新架构及最近三个主版本,老架构用户需停留在 3.x 版本或尽快迁移。