呜啦!日常碎碎念,偶尔掉落优质前端博文推荐、学习资源等
网页:https://tg.cosine.ren
本频道的搜索Bot 来辣 👉 @cosSearchBot
私聊直接发消息就可以搜索啦~
🔖tags
#优质博文 #资源推荐 #博客更新 #碎碎念 #项目更新 #手工 #书摘 #阮一峰的科技周刊 #新动态
图频:Cosine 🎨 Gallery @CosineGallery
猫片: @cosine_cat
网页:https://tg.cosine.ren
本频道的搜索Bot 来辣 👉 @cosSearchBot
私聊直接发消息就可以搜索啦~
🔖tags
#优质博文 #资源推荐 #博客更新 #碎碎念 #项目更新 #手工 #书摘 #阮一峰的科技周刊 #新动态
图频:Cosine 🎨 Gallery @CosineGallery
猫片: @cosine_cat
#优质博文 #开源 #前端
开源项目的「死与新生」
author 云游君(YunYouJun)
开源项目的「死与新生」
AI 摘要:作者以 Element UI → Element Plus 的亲历为主线,讨论开源项目从诞生、演化到走向结束与再生的路径,强调“为自己所需而作”的初心、拥抱社区标准与透明治理,借助 RFC(Request for Comments)、BDFL(Benevolent Dictator For Life)式决策、语义化版本(Semantic Versioning, SemVer)与渐进式迁移(Progressive Migration)等方法,在 Trade-Off(权衡)中小步快跑、稳步迭代;同时用产品化思维和良好社区运营,尽可能延长项目生命周期,并在必要时坦然宣布进入 maintenance mode,给出替代与迁移方案,促成“死与新生”的良性循环。
author 云游君(YunYouJun)
#优质博文 #CSS #前端 #开源
What we learned from creating PostCSS—Martian Chronicles, Evil Martians’ team blog
author Andrey Sitnik(PostCSS 与 Autoprefixer 作者),编辑 Travis Turner
What we learned from creating PostCSS—Martian Chronicles, Evil Martians’ team blog
AI 摘要:这是一篇 PostCSS 12 年演进的复盘:从 Autoprefixer 的诞生到 PostCSS 成为被 Google、Wikipedia、Tailwind 等采用、月下载量 4 亿的开源基础设施。作者围绕产品定位、插件策略、性能架构、版本演进、社区与生态、与竞品相处以及维护者防止倦怠的实践,给出一套贯穿前端工具链建设与开源运营的可复用方法论:以用户可用为先、以架构赢性能、以默认值减少配置、以人情味促协作、以渐进式变更稳生态。
1. 历史与定位:从 Autoprefixer 到 PostCSS
• 痛点出发:不想手写厂商前缀,于是做了 Autoprefixer,并需要一个更强的 CSS 解析器与 API(应用程序接口)。
• 启发与决策:Rework 无法满足“保留原始空白”等需求,遂自研 PostCSS;教训“−1”:对大用户更合作,给原项目提交原型的机会。
• 推广与文档同等重要:投入与写代码相当的时间做 README 与对外沟通,主动向 Webpack 推荐用 PostCSS 做解析器,带来关键增长。
• 定位转变:原打算做“幕后”框架,但终端用户对新工具敏感、对插件友好,因此把 PostCSS 做成对用户可见的“插件平台”,帮助新 CSS 工具降低接入阻力。
2. 产品形态与插件策略(Lesson 1)
• 默认可用优于“纯插件”:PostCSS 默认“无作为”导致用户被插件选择淹没;对比 Lightning CSS 内置常用能力与 Vite 的“开箱即用”,体现“约定优于配置”。
• 插件架构的收益:小内核易维护;拆分团队各司其职;利于做 CSS 工具实验(如 easing 渐变转为 CSSWG 草案);满足项目定制;开发工具需要灵活性。
3. 时机与竞争:不怕“来得晚”,要快验真(Lesson 2、Lesson 7)
• “太晚”的误判:Chrome 停增前缀与 CSS Houdini 的宣布,都未让 Autoprefixer 与 PostCSS 失去价值;实际落地速度与有效性才是市场检验。
• 行动原则:尽快做原型、看真实结果,不被“新技术将取代一切”的叙事带偏。
• 与“竞品”为友:与 Sass 协作、统一术语与基准;公开推荐 CSSTree、Lightning CSS 等新工具;在开源中,“竞争者”可以分担你的免费支持压力。
4. 性能与架构:架构比语言更重要(Lesson 3)
• 关键洞见:PostCSS 用 JS(JavaScript)比 C++ 的 Sass 快 4 倍,原因在于架构与内存管理,而非语言本身。
• 架构实践:采用令牌化-解析器(tokenizer-parser)拆分,80% 解析时间在令牌化,便于聚焦优化;用正则快速跳转定位结束符等微优化。
• 内存优化:CSSTree 通过对象复用减少垃圾回收(GC)次数,曾快于 PostCSS ≈1.5 倍;避免“Rust/C++ 一定更快”的二元迷思。
5. 维护者健康:防止问题复发,避免倦怠(Lesson 4)
• 问题“闭环”:用户误用导致的 issue,要加类型与运行时校验、警告与文档澄清,防止重复踩坑;文档常是最后手段,但 FAQ 有效减压。
• 实例:用户把 parser 当插件使用,直接在代码里给出警告信息,显著降低重复问题。
• 反内耗机制:尽快响应、邀请提问者补文档或提修复 PR;开源是协作,不是单向免费支持。被忽视的感觉才是用户最大挫败。
6. 版本演进与迁移策略(Lesson 5)
• “跳-合”节奏:首个大版本标记废弃,下一个大版本再移除;尽量提供迁移指南(如 PostCSS 8),并维护生态迁移进度 Wiki。
• 重大变更前置沟通:提前发布变更提案、开反馈通道,协调 Webpack、Vite 等生态构件的配合升级。
7. 塑形生态:用最佳实践驱动一致性(Lesson 6)
• 统一模板与规范:插件脚手架强制“输入/输出”示例,制定插件与运行器指南;文档示例会塑造社区习惯。
• 学习路径清晰化:提供从零到一的分步指南,甚至涵盖“如何对抗开发挫败”的内容。
8. 社区运营与人情味(Lesson 8)
• 人的纽带:给插件作者寄明信片/贴纸、出差拜访活跃贡献者,建立真实连接。
• 品牌风格:Autoprefixer 的“骑士”与 PostCSS 的“炼金术”主题,让项目更有趣、更易形成文化认同。
9. 开源维护小贴士
• 尽量无构建:库用原生 JS 源码配合手写 .d.ts 或 TypeDoc,方便直接安装分支测试与 node_modules 内即时调试复制。
• 静态站点别用 React:项目文档与官网用 Astro 或纯静态 HTML,维护成本更低、更稳。
author Andrey Sitnik(PostCSS 与 Autoprefixer 作者),编辑 Travis Turner
#优质博文 #前端 #CSS #新特性
A gentle introduction to anchor positioning
author Saron Yitbarek
A gentle introduction to anchor positioning
AI 摘要:本文以头像菜单为例,系统介绍了锚点定位(Anchor Positioning)如何让元素基于另一元素进行纯 CSS 定位,涵盖锚点与目标的关联(anchor-name、position-anchor、position),两种定位思维模型:基于九宫格的 position-area 与基于边缘的 anchor()(仅用于 inset 系列),并演示了使用逻辑方向、溢出切换(position-try)与 calc() 的实战技巧,帮助开发者在无需 JavaScript 的情况下实现响应式菜单、气泡与工具提示。
1. 基本概念与关联关系
• 角色定义:被依附的元素为锚点(anchor),需要定位的元素为目标(target)。
• 建立关联:在锚点上声明 anchor-name(如 --profile-button),在目标上使用 position-anchor 指向该锚点名。
• 定位前置:目标需设置 position: absolute 或 fixed 才能启用锚点定位。
2. position-area:基于九宫格的定位模型
• 九宫格心智模型:以锚点为中心,在其包含块(containing block)上选定九宫格中的区域放置目标。
• 优先使用逻辑方向:以 block-start/block-end、inline-start/inline-end 与 center 取代物理方向(top/right/bottom/left),以适配不同书写模式与语言。
• 对齐与溢出:当目标比锚点宽时,使用 block-end span-inline-end 可实现“下方左对齐且向行尾延展”;类似地,可用 block-end center、block-start inline-end 等组合控制位置。
• 响应式回退:通过 position-try 指定备选位置,当首选位置空间不足时自动切换(如窄屏从向右溢出改为向左溢出)。
3. anchor():基于边缘的精确定位
• 使用范围:仅可用于 inset 系列属性(物理:top/right/bottom/left;逻辑:inset-block-start/end、inset-inline-start/end;以及 inset-block、inset-inline 简写)。
• 边缘对齐:例如让菜单左边与头像左边对齐、菜单顶与头像底对齐,可写为 left: anchor(left), top: anchor(bottom);逻辑等价为 inset-inline-start: anchor(start), inset-block-start: anchor(end)。
• 指定锚点:anchor() 可接收可选的锚点名(如 anchor(--profile-button left)),默认使用 position-anchor 指定的锚点。
• 配合 calc():可将 anchor() 与 calc() 组合做细粒度偏移(如对齐去除内边距影响:inset-inline-start: calc(anchor(start) + 1.25em))。
4. 实战场景与模式选择
• 导航头像菜单:点击头像(可结合 Popover API)后,菜单基于头像精准定位且纯 CSS 控制。
• 桌面与移动自适应:桌面可向 inline-end 溢出,移动端通过 position-try 切换为 inline-start 溢出,减少遮挡与视口溢出。
• 心智模型选型:喜欢“区域网格”可用 position-area;偏好“边缘数值”可用 anchor()。两者都能完成相同目标。
5. 规范与资源指引
• 推荐实践:优先使用逻辑属性与方向,增强无障碍与国际化适配;目标元素需 absolute/fixed 定位。
• 学习与实验:文中提供了 CodePen 示例用于自由尝试;更多详细属性与值可参阅 MDN 文档;还有教学游戏 Anchoreum。
• 反馈与社区:作者与 WebKit 福音师在 BlueSky/Mastodon 等渠道互动;遇到问题可提交 WebKit Bug 报告。
author Saron Yitbarek
#优质博文 #CSS #前端 #面试
原来歪果仁面试也考经典圣杯布局啊
How to Prepare for CSS-Specific Interview Questions
author Shivam Bhalla
How to Prepare for CSS-Specific Interview Questions
AI 摘要:本文为前端开发者提供了一份全面的 CSS 面试准备指南,精选了 10 个从易到难的典型面试题。文章不仅给出了每个问题的建议回答方向和代码示例,还深入探讨了其背后的核心概念,内容涵盖响应式设计、CSS 预处理器、性能优化、现代布局技术以及 CSS-in-JS 等关键知识点,旨在帮助求职者系统性地巩固 CSS 技能,并自信地应对技术面试。
author Shivam Bhalla
#优质博文 #Chrome #前端 #CSS #新动态
Chrome 140 Beta 版
author Rachel Andrew
Chrome 140 Beta 版
AI 摘要:Chrome 140 Beta 版为 Web 开发者带来了一系列重要更新。在 CSS 与界面方面,新增了类型化算术 (Typed Arithmetic) 以增强 calc() 的能力,引入了 scroll-target-group 属性改进滚动导航,并对视图过渡 (View Transition) 进行了多项功能增强。Web API 方面,提供了 Uint8Array 与 Base64/十六进制的内建转换方法,并通过权限提示限制本地网络访问以提升安全性。此外,还为独立式 Web 应用 (IWA) 引入了 Controlled Frame API,并开启了 clipboardchange 事件、来电通知等新的源试验 (Origin Trial)。此版本也为提升无障碍性而弃用了一些历史性的 <h1> 字号规则。
1. CSS 类型化算术 (Typed Arithmetic):允许在 calc() 函数中进行带单位的数学运算,如 calc(10em / 1px),方便排版和单位转换。
2. 滚动与视图增强:scroll-target-group 属性:用于定义滚动标记组容器,配合 :target-current 伪类可高亮当前视图内的目标锚点。
3. ScrollIntoView 容器选项:新增 container: 'nearest' 选项,可仅滚动最近的祖先滚动容器。
4. 视图过渡 (View Transition) 增强:伪类可继承更多动画属性,并支持嵌套视图过渡,以实现更复杂的过渡效果。
5. overscroll-behavior 传播修复:该属性现在从根元素 (<html>) 而非 <body> 传播,与其他浏览器行为保持一致。
6. 排版与无障碍性:在 content 属性的替代文本中支持 counter() 和 counters() ;支持在 @font-face 规则中使用 font-variation-settings 描述符。弃用 <h1> 元素在特定容器内的特殊字号规则
7. API 与交互改进:caret-animation 属性允许开发者手动控制光标动画,避免与默认闪烁行为冲突;highlightsFromPoint API 允许通过坐标点检测自定义高亮区域;ToggleEvent 新增 source 属性,可获取触发该事件的源元素;修复 SVG foreignObject 污染画布 (Canvas) 的问题,使其在使用 blob 网址时行为与其他浏览器一致。
author Rachel Andrew
#优质博文 #视频制作 #YouTube #内容创作 #工作流程 #course
少见的技术视频制作工作流的分享,mark。
How I record, edit and publish YouTube videos
author Stefan Judis
少见的技术视频制作工作流的分享,mark。
How I record, edit and publish YouTube videos
AI 摘要:Stefan Judis 详细分享了他制作、编辑和发布 YouTube 视频的完整工作流程,特别是针对技术内容的视频。他强调了周密的规划与准备的重要性,包括如何选择主题、组织代码并进行充分练习。文章深入介绍了其使用的软件工具链,如用于录制和初步编辑的 Screenflow、用于字幕生成和音频优化的 Descript,以及 Keynote 和 Jitter 等辅助动画工具。此外,作者还分享了为录制优化的 VS Code 配置和所用的硬件设备,并提供了一份实用的录制前后检查清单,旨在帮助内容创作者提升视频质量和效率。
1. 视频内容规划与准备
• 想法来源与主题选择: 视频创意源于用户常见问题、近期学习所得和新产品功能,确保持续有内容可产出。
• 代码准备与演示流程: 提前在 GitHub (代码托管平台) 准备演示代码,并将其整理至易于录制的状态;对于复杂代码,会在第二块屏幕上显示最终版本以便参考。
• 脚本策略与练习方法: 通常不写完整脚本,而是通过纸质笔记规划故事线和演示步骤;进行多次大声演练 (通常 5-10 次),优化表达流畅度,并通过修改措辞或创建 VS Code snippets (代码片段) 解决卡顿或输入困难。
• 直播编程注意事项: 强调充分准备是关键,需预设意外情况 (如网络中断) 的备用方案;如果自身操作失误,通常是准备不足,需有 Git checkpoints (代码检查点) 或笔记以便快速恢复。
2. 录制与编辑工具
• 核心录制与编辑软件: 使用 Screenflow 进行屏幕和摄像头录制及一体化编辑,支持边录边暂停调整的灵活工作流,但也提到软件更新频率较低的担忧。
• 动画与视觉辅助工具: 利用 Apple Keynote 制作幻灯片式动画内容;在需要透明视频片段 (如 fly-ins 飞入、modals 模态框) 时,偶尔使用 Jitter 进行制作。
• 后期处理与字幕生成: 将初步编辑好的视频导入 Descript,用于自动生成高质量字幕、应用“Studio Sound”滤镜进行音频优化,并可访问免版税音效库;Descript 也能辅助生成视频标题和描述作为灵感。
3. 技术设置与硬件配置
• 编码环境优化 (VS Code): 采用定制化的“Presentation” (演示) 主题配置,特点包括:匹配品牌色彩、增大字体、移除干扰元素 (如标签页、状态栏)、禁用 AI 功能和悬停提示,以确保屏幕内容清晰简洁;录制时使用全屏模式。
• 硬件设备概览: 使用 MacBook Pro (M3 处理器, 36GB RAM) 保证流畅运行;Sony ZV-1 Camera (摄像头) 作为网络摄像头替代品;两盏 Elgato key lights (补光灯) 提供照明;Shure MV-7 麦克风用于音频录制;使用站立式办公桌并站立录制以保持精力。
• 录制工作室环境: 展示了其新搭建的录制工作室,强调了环境对录制质量的重要性。
4. 录制流程检查清单
• 录制前准备: 检查房间灯光、关闭窗户、清理背景杂物;关闭 macOS (操作系统) 通知;切换 VS Code 到“Presentation”模式。
• 录制后处理: 在 Screenflow 中应用“compressor” (压缩器) 滤镜、调整鼠标光标;在 Descript 中应用“studio sound” (工作室音效) 滤镜。
author Stefan Judis
#优质博文 #CSS #前端 #动画 #视差滚动 #新特性
Bringing Back Parallax With Scroll-Driven CSS Animations
author Blake Lundquist
Bringing Back Parallax With Scroll-Driven CSS Animations
AI 摘要:本文详细介绍了如何利用新兴的 CSS 滚动驱动动画技术,以纯 CSS 的方式重新实现经典的视差滚动 (Parallax) 效果。与传统的 JavaScript 方案相比,这种新方法将动画移出主线程运行,从而显著提升了性能和流畅度。文章通过实例讲解了 animation-timeline 属性的两种核心时间轴函数 scroll() 和 view() 的使用场景与区别,并进一步介绍了如何使用 animation-range 属性精确控制动画的触发时机与范围,最后还探讨了针对运动敏感用户的无障碍设计和浏览器兼容性的回退方案。
author Blake Lundquist
#优质博文 #前端 #React #course
React Query Selectors, Supercharged
author TkDodo
React Query Selectors, Supercharged
AI 摘要:本文深入探讨了 React Query 中 select 选项的高级用法,旨在实现极致的性能优化。文章从 select 的基本作用——创建精细化的数据订阅以避免不必要的组件重渲染——讲起,逐步深入到如何在 TypeScript 中为包含 select 的抽象进行类型定义。最后,文章聚焦于性能优化的核心,即“超级充电”,通过 React.useCallback 和外部 memoization 库(如 fast-memoize)解决昂贵计算在多次渲染和多组件实例中的重复执行问题,展示了如何将 select 的性能潜力发挥到极致。
author TkDodo
#HTML #前端 #优质博文
真长知识了~
A Few Things About the Anchor Element’s href You Might Not Have Known
author Jim Nielsen
真长知识了~
A Few Things About the Anchor Element’s href You Might Not Have Known
AI 摘要:本文深入探讨了 HTML 锚点 <a> 标签中 href 属性的一些不常见但非常实用的值。文章不仅回顾了 mailto: 、文本片段 (text fragments) 等已知用法,更重点介绍了一些鲜为人知的技巧,例如使用 ""、. 和 ? 对当前页面进行不同方式的重载,以及它们如何处理 URL 的查询参数和哈希。此外,文章还涵盖了 data: URL、媒体片段和 PDF 页面链接等高级应用,为前端开发者提供了更丰富的链接处理知识。
1. 页面导航与重载
• href="#" 或 #top 这两种写法都可以让页面滚动到顶部。特别的是,即使页面中不存在 id="top" 的元素,#top 依然会按规范 (spec) 生效。
• href="": 重新加载当前页面。此操作会保留 URL 中的查询参数,但会移除哈希值(# 及其后的部分)。
• href=".": 重新加载当前页面,同时移除查询参数和哈希值。注意:此行为对 URL 末尾是否有斜杠 / 非常敏感。如果 URL 是 /path,它会导航到父目录 /;如果 URL 是 /path/,它会导航到当前目录 /path/。
• href="?": 重新加载当前页面,移除查询参数和哈希值,但会在 URL 末尾保留一个 ? 字符。与 href="." 不同,此行为不受末尾斜杠的影响。
2. 特殊协议与片段链接
• href="data:": 可以创建指向 data: URL 的链接,将文本、HTML 等小型数据直接编码在链接中,实现不依赖外部资源的导航。
• 媒体片段 (Media Fragments): 允许链接到音视频文件的特定时间段。例如,video.mp4#t=10,20 会从视频的第 10 秒开始播放,到第 20 秒时停止。
• PDF 页面链接: 可以通过 #page=<页码> 的形式,直接链接到 PDF 文件中的某一页,例如 my-file.pdf#page=42。
author Jim Nielsen
#优质博文 #前端 #CSS #浏览器 #标准
质量很高的文章,推荐阅读。
HTML is Dead, Long Live HTML
author Steven Wittens
质量很高的文章,推荐阅读。
HTML is Dead, Long Live HTML
AI 摘要:作者系统性批判当代 Web 前端栈:DOM 与 HTML 停滞且臃肿、CSS 默认“自内向外”的布局心智与现代应用需求脱节,SVG 与 CSS 相互羡慕却难以统一;“HTML in Canvas”方向治标不治本。作者主张打开更低层的布局、文本与渲染原语,重构视图树与渲染树,以更小更清晰的数据模型拥抱多线程、多来源与异步的新时代,WebGPU 等新基建可成为更简洁的 UI 基元。
1. DOM/HTML 的困境与技术债
• DOM 膨胀失控:仅 Chrome 的 document.body 就有 350+ 键,style 内还有 660 个 CSS 属性;属性/方法边界模糊,部分 getter 触发布局抖动,遗留 onevent 成堆。
• 字符串类型负担:源自 SGML/XML 的“stringly typed”设计让 Web Components 等原生组件 API 笨重,Shadow DOM 引入额外嵌套/作用域,生态接受度低。
• 语义 HTML 的失约:十多年无实质演进,ARIA 兜底本应由语义标签承担的职责;常见结构(如 thread/comment)缺位,WHATWG 更多是边角“本轮加一圈”而非愿景驱动。
• 可编辑性鸡肋:contentEditable 实用化困难重重,富文本编辑器团队“血泪史”常谈。
• 应用现实的“拼装学”:为了做应用 UI,团队被迫以 HTML/CSS/SVG 套娃,承担滚动吸底、虚拟化列表/表格、右键菜单、查找等重复造轮子;UI 与“流式内容”的早期融合如今反成负担。
2. CSS 的本质:自外向内 vs 自内向外
• 正确心智模型:CSS 本质是“两次约束传播”——先自外向内分配可用空间,再自内向外回收实际尺寸;默认是文档导向的“自内向外”,需要手动从 body{height: 100%} 开始把约束往下传,所以“垂直对齐难”并非错觉。
• Flex 的代价与补药:Flex 通过测“自然尺寸”再伸缩,导致递归式“猜测布局”;深度嵌套和未知内容可能引发不可预期放大。可用 contain: size、明确 flex-basis、will-change 等打断全局约束,避免连锁反应。
• API 设计反思:理想的布局系统应把“容器行为”(自外向内)与“放置模型”(自内向外)作为可组合的正交维度提供,而非在单一语法下不断加“抑制/隔离”开关。
3. “好部分”与跨模型错配
• 可用但不优雅:Flexbox、Grid 在理解边界条件后“够用”,但语法“很 CSS”;若从零设计,不会做成今天这种减法式 API。
• 两种系统被硬绑:CSS 同时承担“文本样式的继承系统”和“盒模型布局系统”,前者需继承(如字体),后者主要是包含关系,级联语义不一致,合在一起是历史事故。
• 单位与像素:相对 em 的早期理念已式微,逻辑像素 vs 设备像素更符合用户预期。
• 与 SVG 的“互相羡慕”:SVG 既非 CSS 子集也非超集,变换模型等细节不同;CSS 想要曲线、遮罩、渐变、滤镜,却远不如 SVG 强;开发者在 HTML/CSS 与 SVG 间反复取舍。
• 三个“卡点范例”:
• 文本省略号 text-ellipsis 仅能裁单行不换行文本,段落裁切/检测截断与文本测量 API 皆孱弱。
• 粘性定位 position: sticky 想实现“无条件吸附”需多层荒诞嵌套,本应易如反掌。
• z-index 战争:绝对层级导致“+1/-1 拼数值”,缺少相对 Z 定位的语义。
4. “HTML in Canvas”的误区
• 设计目标错位:为“可编程渲染”而把 HTML 绘进 canvas,结果依旧被 DOM 裹挟(需作为 <canvas> 子树参与布局/样式/无障碍),离真正的可编程 UI 还很远。
• 交互负担转嫁:为了自定义外观,被迫全权接管命中测试 (hit-testing) 与事件,且仅有 2D 命中测试;在已有 CSS 3D 变换环境下显得荒诞。
• Reactivity 风险:让 canvas 回写/观察同一文档树,带来循环依赖与观察者复杂度。
• 文本与字体的“原罪”:Canvas 缺少系统字体、文本布局 API、Unicode 分词/换行等基础能力——真正的难题没有开放正确的底层原语。
• 本质诉求:不是“把 DOM 截图画出来”,而是要打开文本测量、命中测试、可编程布局、统一滤镜/着色器等低层 API;用 DOM 当黑盒无法解决 1990 年代 UI 水平的缺口。
5. 向下开口:重塑视图树与渲染树
• 方向样例:Use.GPU 的“类 HTML 渲染器”在 WebGPU 上实现 X/Y Flex,垂直居中与定位直观,无语义 HTML 或级联,仅“一级公民”的布局;给“div”挂着色器,90% DOM 功能以少量清晰原语重做可达。
• 核心问题重问:视图树应长什么样?如何降解成渲染树?当下是如何被“历史包袱”强行降解的?
• 新引擎机会:Servo、Ladybird 等新浏览器实现轻装上阵,更适合提出新提案;大厂亦可为之,但“品味与自小做起”的工程哲学重要。
• 进程/线程与安全现实:因 Spectre 等 CPU 攻击,SharedArrayBuffer 与 Web Worker 的多线程之路受阻;DOM 若重塑,可与多进程、跨来源隔离、结构化并发、所有权语义、函数式效果 (FP effects) 等现代模型同频共振。
• 最小第一步:以更小更干净的数据模型替换当前“每节点 350+ 属性”的怪物;别误以为问题不可解,关键在于抽丝剥茧、回到正确的内核抽象。
AI 摘要仅供参考和导读和索引,其中可能有失实部分,推荐自行阅读原文。
author Steven Wittens
#优质博文 #CSS #chrome #新特性
New in Chrome 139
author Rachel Andrew
New in Chrome 139
AI 摘要:Chrome 139 带来了多项面向开发者的重要新功能,包括本地 Web Speech API(语音识别)、CSS corner shaping(角样式)、CSS custom functions(自定义函数)等,进一步提升了 Web 应用的性能、安全性和界面设计能力。本文亮点简要梳理了此次版本中的主要更新和对开发者生态的影响。
1. 本地 Web 语音识别(Web Speech API)
• Web Speech API 现支持在本地进行语音识别,无需将音频数据上传至第三方服务,提升了隐私和安全性。
• 开发者可以检测本地语音识别能力、提示用户安装相关资源,并按需选择本地或云端识别方案。
• 有助于为多语言和对隐私敏感的场景提供更优支持。
2. CSS 角样式(CSS corner shaping)
• 新增 CSS 属性允许开发者自定义角的形状与曲度,超越传统的 border-radius。
• 支持创建如 squircles(圆角矩形)、notches(凹口)、scoops(挖口)等更为丰富的视觉样式,并可实现动画切换。
• 拓宽了 Web 设计在 UI 形状表现上的空间。
3. CSS 自定义函数(CSS custom functions)
• 引入 @function 规则,使开发者可像自定义属性一样定义函数,实现基于参数、条件的动态样式生成。
• 支持函数内调用变量,显著增强了 CSS 的可复用性与逻辑性,推动 CSS 向编程化发展。
• 这一特性属于 CSS Custom Functions and Mixins(函数与混入)规范的一部分。
4. 其他新特性与改进
• web app manifest 新增 scope_extensions 字段,方便多子域、多顶级域的站点整合作为单一应用呈现。
• Chrome 现在识别 WHATWG mimesniff 规范中定义的所有有效 JSON MIME 类型,提升兼容性。
• request-close 调用已集成至声明式 invoker commands API,优化 JavaScript 的事件处理模型。
author Rachel Andrew
#优质博文 #CSS #grid #容器查询
Get the number of auto-fit/auto-fill columns in CSS
author Ana Tudor
Get the number of auto-fit/auto-fill columns in CSS
AI 摘要:这篇博文深入探讨如何在纯 CSS 中获取 grid 布局中 auto-fit/auto-fill 自动列的列数,从而实现如高亮首/末列、斑马纹、响应式非矩形网格等复杂交互,无需任何 JavaScript 或媒体查询(breakpoints)。作者提出了通过 container query 单位、CSS 变量和数学函数自动计算列数的方法,并针对不同浏览器支持和 bug(尤其是 Firefox)提出了解决方案,使技巧能够跨浏览器使用。
author Ana Tudor
#优质博文 #CSS #动画 #前端 #新特性
Infinite Marquee Animation using Modern CSS
author Temani Afif
Infinite Marquee Animation using Modern CSS
AI 摘要:本文介绍了如何用现代 CSS 新特性(如 shape(), sibling-count(), sibling-index() 等)实现一个无限循环的简洁 Marquee(走马灯)动画,无需 JavaScript,并能自动适配任意数量、任意宽度的图片或元素。作者详细讲解了这一方案相比传统方法(如 <marquee> 或元素克隆)在性能、可维护性和响应式设计上的优势,并提供了完整、紧凑的 CSS 代码实例。相比以往需要繁琐计算或操作 DOM,此方法仅需 10 行 CSS 即可实现高效且灵活的无限轮播动画,同时分析了 shape() 函数的基本用法及其带来的灵活性。
author Temani Afif
#优质博文 #bundler #工程化 #前端
Bundler Tree Shaking 原理及差异 · web-infra-dev · Discussion #28
author web-infra-dev ahabhgk
Bundler Tree Shaking 原理及差异 · web-infra-dev · Discussion #28
AI 摘要:Tree shaking(摇树优化)已成为现代前端打包(bundler)领域的重要优化手段。不同 bundler 工具(如 Webpack、Rollup、esbuild、Turbopack)由于应用场景和关注点不同,实现 tree shaking 的原理与细节也有所差异。文章系统对比了这些工具的 tree shaking 实现,包括分析粒度、副作用(side effects)判定、模块/语句/AST(抽象语法树)层面的优化,以及各自的优势与局限性,并详细剖析了典型案例。对于需要深入理解前端 build 工具原理与优化策略的开发者极具参考价值。
author web-infra-dev ahabhgk
#优质博文 #AI #ClaudeCode #VSCode #course
我现在也是这个流程了,不过我是不用
How I use Claude Code (+ my best tips)
author Steve Sewell
我现在也是这个流程了,不过我是不用
--dangerously-skip-permissions
,rm 权限不敢给。How I use Claude Code (+ my best tips)
AI 摘要:本文作者作为 Claude Code 的深度用户,详细介绍了自己从 Cursor 转向全程使用 Claude Code 的开发体验,总结出一系列高效实用的使用建议。文章覆盖了 Claude Code 的 VS Code 插件启动、终端界面、权限系统、GitHub 集成、大型代码库表现、经济性、队列系统、自定义扩展、可视化界面及团队协作等方面,旨在帮助开发者最大化 Claude Code 在日常工作中的价值与便捷性。
author Steve Sewell
#优质博文 #AI #RAG #NodeJS #向量检索 #NLP
浅谈 RAG 并基于 NodeJS 实现基础向量检索服务
author WindRunnerMax
浅谈 RAG 并基于 NodeJS 实现基础向量检索服务
本文系统介绍了 RAG(Retrieval-Augmented Generation,检索增强生成)模型的基本原理、实际应用场景及其在 NodeJS 环境下的基础实现。作者围绕文本数据的预处理、向量化、向量检索、多路召回、召回重排,以及 LLMs(大语言模型)在流程中的作用展开,详细讲解了如何以轻量级工具搭建一个实用的 RAG 检索服务,并讨论了分片策略、编码方法、检索优化及与开箱即用方案的取舍,为构建定制化AI知识问答系统提供了开源思路和技术参考。
1. RAG 简介与应用场景
• RAG 是结合检索(Retrieval)与生成(Generation)的 AI 架构,能提升对专业领域、高时效性内容的问答、代码生成等场景的回答质量。
• 适用于最新知识获取、特定领域知识补充、提升透明度与可解释性、长尾数据检索、垂直智能问答等实际需求。
• RAG 以内容检索为核心,兼容多种方式(如向量检索、倒排索引、图谱检索等),并与 LLMs 配合工作。
2. 文本向量化流程设计
• 数据预处理包括文本清洗和分片,分片方式有固定长度、overlap 重叠、句段分割、结构分片等,应兼顾语义完整性与检索效率。
• 分片时建议结合元信息(如标题、作者、时间等)以辅助召回与重排。
• 编码方式的演变从 one-hot,TF-IDF,到更先进的 Word2Vec、Transformer-based Embedding。实际项目推荐使用现成高效模型如 all-MiniLM-L6-v2。
• 分片及编码细节优化显著影响检索召回质量和成本。
3. 向量检索与多路召回机制
• 检索的核心是计算 Query 与候选文本的向量相似度,常用余弦相似度(Cosine Similarity),因其只关注方向信息,适合高维稀疏空间。
• 采用 hnswlib-node 快速完成高维向量检索,实际实现还需与实际内容并行存储,便于元数据同步。
• 多路召回建议综合关键词检索、向量召回、图谱召回等互补方式,通过加权、融合、重排序等策略提升检索全面性和精度。
4. 召回重排(Re-Ranking)及其优化
• 初次召回后需对候选结果做重排,提升真正相关内容在前,常见方法如下:
• 传统交叉编码器(如 BERT NSP)精排。
• LLMs 或专门 ReRanker 模型(如 BGE-Reranker)基于上下文深度理解排序。
• 分片元信息和人工打标可进一步增强重排效果,提升系统最终响应准确性和相关性。
• 重排虽可提升体验,但不可避免加大系统复杂度和响应耗时,需按场景权衡。
5. LLMs 在 RAG 流程中的多重角色
• 查询改写:修正拼写、分解多意图、格式化表达、扩展关键词等,显著提高召回精准度。
• 输入优化:用LLMs提升分片、编码智能化水平,以及用于多模态信息抽取、知识图谱构建等。
• 生成增强:将高相关检索片段作为上下文,辅助 LLMs 生成更自然、连贯、有据可溯的答案,并可提升系统的可用性与信任度。
• LLMs 贯穿流程多环节,兼具结构化与半结构化内容的处理与优化能力。
6. 方案总结与工程实践建议
• RAG 作为 AI Infra 基础模块,值得深入学习和灵活定制。开箱服务适用于通用场景,复杂定制或增量优化建议自行实现。
• 流程各节点(分片、编码、检索、重排、生成)都可精调优化,针对需求选择技术方案、服务模型和参数设定。
• RAG 在提升 LLMs 时效性、知识深度、成本控制等方面具备不可替代优势。
author WindRunnerMax
#优质博文 #CSS #Vite #前端 #工具链 #社区动态
What’s New in ViteLand: July 2025 Recap
author VoidZero Inc.
What’s New in ViteLand: July 2025 Recap
本文总结了 ViteLand 生态系统在 2025 年 7 月的主要动态,包括 Vite、Vitest、Oxc、Rolldown 等关键项目的最新进展,以及社区即将举办的线下盛会 ViteConf 的首场线下会议预告。Vite 团队将发布全新产品 Vite+,并聚焦前端开发领域的未来趋势。文章还预告了 Vite 纪录片的上线情况,为开发者提供了丰富的行业洞察和社区信息。
1. 生态系统进展
• 概述了 Vite、Vitest、Oxc、Rolldown 等项目在本月取得的主要更新和迭代。
• 着重强调了团队在提升开发者体验(DX, Developer Experience)方面的持续努力。
2. ViteConf 线下大会预告
• 预告 10 月将在阿姆斯特丹举行的首届线下 ViteConf,此前已有三届线上大会成功举办。
• 届时将首次发布 Vite+,介绍其功能和对团队工作流的提升作用。
• 大会将邀请知名演讲嘉宾,包括 Bolt.new/StackBlitz CEO Eric Simons 和 Netlify CEO Mathias Biilmann。
• 会议主题将围绕下一代开发工具(next-generation tooling)、智能 agent 体验等前端领域热点展开。
3. 社区与纪录片
• 宣布由 CultRepo 出品的 Vite 纪录片即将在活动中全球首映,展示 Vite 团队及 Svelte、Solid、Astro 等明星项目作者的未公开故事。
• 官方预告片已发布,可供提前观看,进一步增强社区凝聚力。
author VoidZero Inc.
#优质博文 #前端 #CSS #React #新特性
Frontend Focus #703
author Frontend Focus 编辑团队
Frontend Focus #703
AI 摘要:本期 Frontend Focus 报道了前端领域的最新动态和趋势,涵盖 CSS 新规范(如无 JavaScript 的走马灯、Masonry 布局、Scroll-Spy)、React/Next.js 开发中的常见陷阱、MDN 发展二十周年纪念,以及一批最新实用工具和开发资源。此外,简要提及了 Safari/Edge 等主流浏览器新特性和业界法规、社区大事件,适合前端开发者了解行业资讯和提升技术能力。
1. 前端社区动态与大事件
• MDN 文档网站庆祝成立 20 周年,目前拥有超 14,000 页内容,是 Web 开发的重要资料库
• 2025 Stack Overflow 开发者调查结果公布,涵盖开发工具、AI 代理、LLM 使用现状等
• W3C 发布关于组织使命与价值观的重要新文档
• HTML Day 活动将举办超 40 场全球盛会,HTML 技术持续推进
• Wikimedia 积极挑战英国在线安全法案,关注数字法规生态
2. CSS 新特性与最佳实践
• CSS Masonry 布局:探讨新规范进展与当前解决方案,兼顾未来性与可用性,附带交互反馈征集
• CSS Scroll-Spy :Chrome 140 浏览器引入 scroll-target-group 和:target-current,可用两行 CSS 实现目录高亮跟踪效果
• Responsive Video is (Almost) Easy Now:如何处理垂直和横向视频以适应不同场景,在上下文需要时提供垂直和水平版本。
• “现代 CSS 杀死 SPA”观点:提倡服务器渲染与页面级动画,倡导 CSS 动画和意图性预加载
3. Web 技术深度/创新话题
• The Useless useCallback:React 状态管理与性能相关实践讨论,分析 useCallback、useMemo 潜在问题,展望 React Compiler 与 useEffectEvent 等新工具的改善能力。
• Performance Extensibility API:允许自定义轨迹供 Chrome DevTools 性能面板分析
• WebAssembly(WASM)与 DOM 互操作性进展,工具链提升正降低 WASM 开发门槛
• Liquid Glass :苹果新一代视觉样式的网页实现尝试
• Web Components 及 Shadow DOM 实践解析
4. 工具、组件与资源推荐
• World Clock Slider:多城市世界时钟组件,支持暗黑模式
• FossFLOW:等距基础架构图形工具,支持丰富图标与数据管理 【这个挺酷炫的】
• StaticSearch:为静态站点增添搜索,无需后端,基于 Javascript,数据存储为 JSON
• Oklchroma:基于 OKLCH 色彩空间的色板生成器,提供基色,使用三角函数生成不同色阶
• difit:使用 GitHub 风格查看器查看和审查本地 git 差异的 CLI 工具,评论还可以作为 AI 提示进行复制。
• 7.css:忠实还原经典 Windows 7/XP UI 的 CSS 设计系统
• 使用 Three.js、WebGPU 和 TSL 进行交互式文本销毁
author Frontend Focus 编辑团队
#优质博文 #css #Unicode #前端 #字素簇 #动画
太酷了。
Project AIRI DevLog @ 2025.08.01 | Clustr
author Makito
太酷了。
Project AIRI DevLog @ 2025.08.01 | Clustr
AI 摘要:本文由 Makito 首次在 Project AIRI 的 DevLog 分享,聚焦于如何在前端应用中处理和实现流式 UTF-8 字节流的文本动画,尤其是在聊天或语音转写等实时场景下正确分割和显示「字素簇」(grapheme cluster)。作者深入探讨了 Unicode 编码、多码点合成字符的边界难题,以及利用 Web API,如 TextDecoder、Intl.Segmenter,实现安全高效的字素簇流式提取,并介绍了自己的开源库 Clustr。文章结合了丰富的实例和交互组件,面向希望在项目中实现高质量文本动画及多语言兼容的前端开发者,具有较高参考价值。
1. 背景与动机
• 投稿者首次在 DevLog 发文,介绍参与 Project AIRI 过程。
• 动画文本在现代 UI(如聊天消息)中的作用和实现难点。
• 第三方库(Anime.js, splt, GSAP)在文本动画实现上的进展与现有不足。
• 项目的需求:需实时处理和动画化接收自 UTF-8 字节流的数据。
2. Unicode 基础与「字素簇」难题
• 码点(Code point)与 UTF-8 字节流的对应关系,字节组装所需注意事项。
• Unicode「字素簇」的定义,即多个码点合为视觉整体的最小文本单元。
• 通过实际 Emoji 和南亚文字示例,阐释组合字符的裸数据和视觉表现。
• 传统 Web API 如 TextDecoder 能将字节流还原为码点字符,但不足以分割复杂字素簇。
3. Web API 应用与完善方案
• 利用 TextDecoder.decode(stream选项)实现流式解码,拼接字符串缓冲区。
• 使用 Intl.Segmenter 拆分字符串为字素簇,支持多语言处理。
• 提出解决方案:因为流数据随时变化,需确保不完整的字素簇不被导出,因而采用「丢弃最后一个」策略缓冲输出,避免合成字符的过早显示。
4. 流式字素簇库 Clustr 的诞生
• 市场调研发现缺乏专门处理流式 UTF-8 字节流并输出字素簇的库。
• 作者自研 Clustr,核心代码不到100行,实现了上述需求。
• Clustr 能帮助前端实时渲染流式文本动画,兼容多语言复杂字符。
5. 互动组件与社区交流
• 提供探索字素簇组合和实时代码交互的小组件。
• 鼓励开发者参与 Project AIRI 相关 GitHub 仓库,共同讨论和改进工具。
author Makito