呜啦!日常碎碎念,偶尔掉落优质前端博文推荐、学习资源等
网页:https://tg.cosine.ren
本频道的搜索Bot 来辣 👉 @cosSearchBot
私聊直接发消息就可以搜索啦~
🔖tags
#优质博文 #资源推荐 #博客更新 #碎碎念 #项目更新 #手工 #书摘 #阮一峰的科技周刊 #新动态
图频:Cosine 🎨 Gallery @CosineGallery
猫片: @cosine_cat
联系频道主:@cosine_yu
网页:https://tg.cosine.ren
本频道的搜索Bot 来辣 👉 @cosSearchBot
私聊直接发消息就可以搜索啦~
🔖tags
#优质博文 #资源推荐 #博客更新 #碎碎念 #项目更新 #手工 #书摘 #阮一峰的科技周刊 #新动态
图频:Cosine 🎨 Gallery @CosineGallery
猫片: @cosine_cat
联系频道主:@cosine_yu
#优质博文 #React #性能优化 #JavaScript #course
How to Measure and Optimize React Performance | DebugBear:全面介绍了衡量和优化 React 应用性能的工具与技术,重点讲解了 React 19.2 的新特性以及各类运行时和构建时的优化策略。
[以下是方便搜索索引的大纲 (AI 生成),请读原文]
How to Measure and Optimize React Performance | DebugBear:全面介绍了衡量和优化 React 应用性能的工具与技术,重点讲解了 React 19.2 的新特性以及各类运行时和构建时的优化策略。
AI 摘要:文章深入探讨了如何应对 React 应用随规模增长而出现的性能退化问题。内容涵盖了从 React 19.2 新引入的性能轨道(Performance Tracks)到经典的 Profiler 工具的使用方法。作者详细讲解了运行时优化(如记忆化、虚拟列表和状态管理)、并发特性(useTransition 和 useDeferredValue)、包体积控制、服务端渲染(SSR)以及最新的 React Compiler。最后,文章强调了在生产环境中使用真实用户监控(RUM)来持续跟踪性能表现的重要性。
[以下是方便搜索索引的大纲 (AI 生成),请读原文]
1. 衡量 React 性能的工具
• React 性能轨道 (React Performance Tracks):介绍了 React 19.2 引入的新功能,在 Chrome DevTools 的性能面板中可视化调度器、组件渲染及服务器请求。
• React DevTools Profiler:讲解了如何使用火焰图(Flame Chart)定位瓶颈,并利用“记录组件渲染原因”功能排除不必要的重绘。
• Profiler API 与 Chrome 性能面板:介绍如何通过代码编程式地收集渲染时长,以及如何在主线程时间线中分析 JavaScript 的执行耗时。
2. 运行时优化策略
• 记忆化:详细对比了 memo()、 useMemo() 和 useCallback() 的使用场景,强调避免对简单计算过度使用。
• 代码分割:利用 lazy() 和 Suspense 实现组件按需加载,减少初始加载负担。
• 列表虚拟化:推荐使用 react-window 等库处理长列表,仅渲染可视区域内的 DOM 节点。
• 状态管理优化:提倡状态共存(State Colocation)原则,并建议在复杂场景下使用 Zustand 或 Jotai 等支持选择器优化的轻量库。
3. 并发特性与编译器
• 并发渲染挂钩 (Concurrency Hooks):讲解了 useTransition 如何标记非紧急更新以保持 UI 响应,以及 useDeferredValue 如何延迟处理从父级传递的频繁变动的值。
• React Compiler:介绍了 2025 年推出的自动记忆化工具,它能在构建时自动优化组件,减少手动编写 useMemo 的需求。
4. 交付与架构优化
• 包体积控制:使用 Lighthouse Treemap 和 Webpack Bundle Analyzer 分析依赖,提倡按需引入(Tree Shaking)以减少解析耗时。
• 服务端渲染与流式传输 (SSR & Streaming):探讨了 renderToPipeableStream 带来的流式 HTML 交付,以及 React 服务端组件(RSC)如何通过零客户端 JavaScript 提升性能。
#优质博文 #CSS #JavaScript #前端
Bytes I can delete after all this time:由于 CSS 和 JS 的进步,越来越多的技术我们不再需要了,Remy Sharp 分享了一份我们可以抛弃的技术清单。
[以下是方便搜索索引的大纲 (AI 生成),请读原文]
author Remy Sharp
Bytes I can delete after all this time:由于 CSS 和 JS 的进步,越来越多的技术我们不再需要了,Remy Sharp 分享了一份我们可以抛弃的技术清单。
[以下是方便搜索索引的大纲 (AI 生成),请读原文]
1. CSS 布局与样式增强
• 使用 text-underline-offset 属性轻松控制文本下划线的距离,无需再用复杂的伪元素模拟。
• 在 Flexbox 布局中直接使用 gap 属性,告别过去需要通过处理 margin (外边距) 来设置间距的繁琐操作。
• 采用原生 CSS 嵌套 (Nesting) 和在选择器内嵌套媒体查询 (Media Queries),使样式结构更清晰且无需预处理器。
• 利用 clamp(min, variable, max) 实现流体响应式尺寸,简化了复杂的断点计算。
• 使用 content: open-quote 结合 q 标签实现根据语言自动适配的本地化引号。
2. JavaScript 语法与交互优化
• 采用可选的 catch 绑定 (Optional catch binding),在不需要错误对象时直接写 catch { ... },避免定义未使用的变量。
• 指针事件 (Pointer Events) 的普及使得开发者可以用一套逻辑替代旧有的 click (点击) 和 touch (触摸) 事件的混合逻辑。
• 弃用旧的性能黑科技,如使用 ~~ 或 | 0 取整,现代引擎下 Math.floor() 的可读性更高且性能不再是瓶颈。
3. 资源优化与现代格式
• AVIF 图像格式已获得全面支持,相比 JPEG 可轻松实现 50% 以上的体积缩减。
• 提供了使用命令行工具 avifenc 批量转换图片的实用脚本示例。
author Remy Sharp
#优质博文 #前端 #JavaScript #V8 #benchmark #性能优化
JavaScript's for-of loops are actually fast (V8):探讨现代 V8 引擎中 for-of 循环的性能表现,打破了开发者社区中关于其性能显著弱于传统循环的固有印象。作者建议现在除非是处理极端海量数据且对每一毫秒都敏感的场景,否则应优先使用语义更佳的 for-of 循环。
author Suren Enfiajyan
JavaScript's for-of loops are actually fast (V8):探讨现代 V8 引擎中 for-of 循环的性能表现,打破了开发者社区中关于其性能显著弱于传统循环的固有印象。作者建议现在除非是处理极端海量数据且对每一毫秒都敏感的场景,否则应优先使用语义更佳的 for-of 循环。
AI 摘要:这篇文章通过一系列严谨的基准测试(Benchmark),对比了 JavaScript 中六种不同的数组遍历方式。测试结果显示,在现代 V8 引擎(如 Chrome 143)中,曾经被认为因为迭代协议(Iteration Protocol)开销而较慢的 for-of 循环,现在的性能已几乎与缓存了长度的经典 for 循环持平。文章强调,虽然在大规模数组的首次执行中 for-of 可能存在优化延迟,但经过引擎预热(Warmup)后,其表现非常出色。作者建议在非极端性能敏感的场景下,应优先考虑 for-of 的开发易用性。
author Suren Enfiajyan
#优质博文 #Markdown #技术文化 #AI #软件工程
How Markdown took over the world:回顾 Markdown 的诞生历程及其如何从一个小众博客工具演变为统治现代互联网和 AI 交互的通用文本标准。
author Anil Dash
How Markdown took over the world:回顾 Markdown 的诞生历程及其如何从一个小众博客工具演变为统治现代互联网和 AI 交互的通用文本标准。
AI 摘要:这篇文章由资深科技人 Anil Dash 撰写,深入探讨了 Markdown 这一简单纯文本格式如何从 2004 年的一个个人项目,演变成如今统治全球科技行业的标准。它由 John Gruber 创立,并由天才少年 Aaron Swartz 协助测试。Markdown 的成功不仅在于其技术上的简洁(易读、易写、基于现有邮件习惯),更在于其开源和去中心化的精神。文章指出,即使是当今最尖端的 AI 系统(如 ChatGPT 和 Claude),其核心交互和指令也高度依赖 Markdown。这种由个人创造并免费赠予世界的工具,证明了互联网的进步往往源于普通人的慷慨与对细节的执着,而非仅由科技巨头推动。
author Anil Dash
#Newsletter #前端 #周刊更新
周刊第 23 期,这周都在肝项目,所以周刊短短的。
FE Bits Vol.23 | jQuery 4 发布,Chrome 新增垂直标签页功能,Astro 被 Cloudflare 收购
周刊第 23 期,这周都在肝项目,所以周刊短短的。
FE Bits Vol.23 | jQuery 4 发布,Chrome 新增垂直标签页功能,Astro 被 Cloudflare 收购
Playing With CodePen slideVars | CSS-Tricks:介绍 CodePen 官方推出的 slideVars 工具,它可以自动检测 CSS 变量并生成交互式控制面板,现在在 codepen 里写交互式 Demo 更方便了。
GitHub: https://github.com/codepen/slideVars
AI 摘要:这篇文章介绍了 CodePen 新推出的原生工具 slideVars,帮助开发者快速为演示项目添加交互式调节面板。相比以往需要引入第三方库(如 TweakPane 或 Knobs)或编写复杂的 JavaScript,slideVars 能够自动识别 CSS 变量并生成 UI 控件。作者详细展示了从快速起步到手动配置参数、自定义单位、处理作用域(Scope)以及调整面板布局的高级用法,是提升前端 Demo 交互体验的利器。
#碎碎念 #优质博文 #前端
非常好文章推一下,Tauri WebKit 坑点大全(
珍爱生命远离 WebKit!
这个标题和 url 真是直抒胸臆
https://gethopp.app/blog/hate-webkit
非常好文章推一下,Tauri WebKit 坑点大全(
珍爱生命远离 WebKit!
这个标题和 url 真是直抒胸臆
https://gethopp.app/blog/hate-webkit
#优质博文 #React #LLM #前端 #AI #逆向工程
How to Steal Any React Component
网页做的还挺有趣的,介绍如何使用 React 的内部数据结构(通过 Fiber)和 LLM 来重建生产 React 应用程序中的组件,而无需原始源代码。
[以下是方便搜索索引的大纲 (AI 生成),请读原文]
How to Steal Any React Component
网页做的还挺有趣的,介绍如何使用 React 的内部数据结构(通过 Fiber)和 LLM 来重建生产 React 应用程序中的组件,而无需原始源代码。
[以下是方便搜索索引的大纲 (AI 生成),请读原文]
1. 核心原理:理解浏览器中的两棵树
• DOM 树:浏览器渲染的 HTML 结构,可以通过开发者工具查看。
• React Fiber 树:React 维护的内部结构,记录了组件层次、属性 (Props) 和状态 (State)。
• 切入点:从 React 16 开始,React 将 Fiber 节点挂载在 DOM 元素上,通过遍历 DOM 即可获取组件的内部信息。
2. 数据采集:建立属性与输出的映射
• 组件归类:利用 Fiber 节点的 type 属性(内存引用)识别相同类型的组件。
• 样本收集:记录同一个组件在不同 Props 下产生的不同 HTML 输出,为 LLM 提供训练样本。
• 获取源码线索:通过 type.toString() 提取混淆后的源代码,辅助 LLM 理解业务逻辑。
3. 组件重建:LLM 与自动化验证
• LLM 提示词:向模型提供 Props 示例、HTML 输出和压缩后的源码,要求其写出干净的 React 代码。
• 验证循环 (Verification Loop):自动渲染 LLM 生成的组件,对比其 HTML 输出与原站点的差异,并根据 Diff 反馈给 LLM 进行修复。
4. 组装策略:拓扑排序与局限性
• 拓扑排序 (Topological Sort):根据依赖关系,先还原最底层的叶子组件(如 Button、Avatar),再逐步向上还原复杂的父组件(如 LoginForm)。
• 处理失效情况:针对 JS 动画导致的 DOM 状态不匹配或复杂的内部交互状态,如果 LLM 无法还原,则退而求其次使用 HTML 快照 (Snapshot)。
• 最终集成:将还原的组件与 CSS、静态资源 (Assets) 整合,构建出功能完整的 React 项目
#优质博文 #开源 #前端 #TypeScript #course
📘 《The Concise TypeScript Book》 是一本简短精炼的 TypeScript 指南,免费开源。
📘 《The Concise TypeScript Book》 是一本简短精炼的 TypeScript 指南,免费开源。
《简明 TypeScript 入门指南》全面而简洁地概述了 TypeScript 的功能。它清晰地解释了最新版本语言的各个方面,从强大的类型系统到高级特性,无所不包。无论您是初学者还是经验丰富的开发者,本书都是提升您 TypeScript 理解和技能的宝贵资源。
#优质博文 #JavaScript #前端 #新动态
jQuery 4.0.0:时隔近十年,jQuery 发布了 4.0.0 正式版,带来了大量现代化改进,包括移除对旧版浏览器(IE 10 及更早版本)的支持、引入新特性以及优化内部实现
[以下是方便搜索索引的大纲 (AI 生成),请读原文]
jQuery 4.0.0:时隔近十年,jQuery 发布了 4.0.0 正式版,带来了大量现代化改进,包括移除对旧版浏览器(IE 10 及更早版本)的支持、引入新特性以及优化内部实现
AI 摘要:本文宣布了 jQuery 4.0.0 正式版的发布。恰逢 jQuery 诞生 20 周年,该版本移除了对 IE 10 及以下旧版浏览器的支持,将源码从 AMD 迁移至 ES Modules (ES 模块),引入了 Trusted Types (可信类型) 以增强安全性,并清理了大量过时的 API 和内部方法。虽然包含一些重大变更,但团队提供了迁移指南和插件,旨在让大多数用户能平滑升级。
[以下是方便搜索索引的大纲 (AI 生成),请读原文]
1. 社区动态与版本概览
• 庆祝 jQuery 诞生 20 周年(2006-2026)。
• 这是近 10 年来的首个主要版本,包含重大变更但尽量保持升级平滑。
• 提供 升级指南 和 jQuery Migrate 插件 协助过渡。
2. 浏览器支持变更
• 移除 IE 10 及更早版本的支持,计划在 jQuery 5.0 移除 IE 11。
• 移除 Edge Legacy (旧版 Edge)、旧版 iOS (11 以下)、Firefox (65 以下) 及 Android 浏览器支持。
3. 架构现代化与安全性
• 源码迁移:从 AMD 迁移至 ES Modules (ES 模块),改用 Rollup 打包,兼容现代构建工具。
• 安全增强:支持 Trusted Types (可信类型),确保符合 require-trusted-types-for 等 CSP (内容安全策略) 指令。
• 异步加载:大多数异步脚本请求改用 <script> 标签以避免 CSP 错误。
4. API 变更与瘦身
• 移除过时 API:删除了 jQuery.isArray, jQuery.trim, jQuery.now 等已有原生替代方案(如 Array.isArray, String.prototype.trim)的方法。
• 原型链清理:从 jQuery 原型中移除了本用于内部的数组方法(如 push, sort, splice)。
• 移除魔法行为:删除了部分未公开的内部参数和过于复杂的“神奇”行为,Gzip 压缩后的体积减小了约 3 KB。
5. 事件与规范对齐
• 事件顺序对齐:Focus (聚焦) 事件顺序现在遵循 W3C 规范(顺序为:blur, focusout, focus, focusin),不再覆盖原生行为。
• Slim Build (精简版) 优化:进一步移除了 Deferreds (延迟对象) 和 Callbacks,体积缩减至约 19.5 KB (Gzipped)。
6. Ajax 与功能增强
• 支持二进制数据:允许通过 Ajax 传输 FormData 等二进制数据。
• 脚本执行逻辑:除非明确提供 dataType,否则不再自动执行脚本;不执行失败的 HTTP 响应脚本。
#优质博文 #CSS #前端 #course
纯 CSS 实现两个元素之间折线自动相连
author 张鑫旭
纯 CSS 实现两个元素之间折线自动相连
AI 摘要:张鑫旭的这篇博文展示了如何纯粹利用 CSS 锚点定位 (CSS Anchor Positioning API) 来实现两个元素之间自动相连的折线效果。文章从回顾锚点定位的设想开始,通过具体的代码示例详细阐述了定义锚点、计算线条位置、以及利用渐变和遮罩绘制连接线的实现原理。作者也坦诚指出了当前方案在特定对齐情况下的局限性,并简要提及了更复杂的解决思路,但认为其实现成本可能已超出 JavaScript (JS) 方案。
author 张鑫旭
#优质博文 #前端 #新特性 #CSS #锚点定位 #course
Connecting Circles With Anchor Positioning II
以下是方便搜索索引的大纲(AI 生成),请读原文:
author Temani Afif
Connecting Circles With Anchor Positioning II
AI 摘要:本文是作者关于使用 CSS 锚点定位技术连接圆圈系列的第二部分,主要关注在连接两个圆圈的箭头内部计算并显示它们之间的距离。文章展示了改进后的 HTML 结构和 CSS 变量定义,并通过交互式 CodePen 示例演示了拖动圆圈时距离实时更新的效果,但目前该功能仅支持 Chrome 浏览器。
以下是方便搜索索引的大纲(AI 生成),请读原文:
1. 引言与目的
• 前言回顾:基于前一篇关于连接圆圈的实现。
• 核心改进:在箭头形状内增加计算并显示两个圆圈之间距离的功能。
2. 技术实现细节
• HTML 结构:展示了使用 div 元素分别表示圆圈 (circle) 和连接箭头 (arrow) 的基本结构,其中 arrow 元素通过 x, y 等属性引用圆圈。
• CSS 变量:定义了用于控制箭头尺寸(--r, --a, --d)、圆圈与箭头间距(--g)以及颜色(--c)的关键 CSS 变量。
3. 交互式演示与局限性
• 实时更新:通过 CodePen 演示,用户可以拖动圆圈,观察距离值如何在箭头内部实时更新。
• 多圆圈示例:提供了一个包含多个圆圈的 CodePen 演示,展示了该技术在更复杂场景下的应用潜力。
• 浏览器兼容性:目前该功能仅在 Chrome 浏览器中支持。
4. 相关资源与拓展阅读
• 前作链接:提供了《Connecting Circles With Anchor Positioning》的链接,方便读者了解原始实现。
• 其他 CSS 技巧:列举了作者的其他 CSS 技巧文章,如《Fizz Buzz using Modern CSS (no HTML)》。
author Temani Afif
#新动态 #Astro #Cloudflare #前端 #开源
好啊,Astro 被 Cloudflare 收购了。
The Astro Technology Company joins Cloudflare | Astro
author Fred Schott
好啊,Astro 被 Cloudflare 收购了。
The Astro Technology Company joins Cloudflare | Astro
AI 摘要:Astro 框架背后的公司 The Astro Technology Company 宣布加入 Cloudflare,此举旨在确保 Astro 能够获得充足资源并重新聚焦于核心框架的开发。Astro 将继续保持开源、MIT 许可,并支持所有部署目标,包括 Cloudflare 之外的平台。这次结合是基于双方对“内容驱动型网站 (content-driven websites)”未来发展的共同愿景,Cloudflare 提供基础设施支持,而 Astro 则专注于构建高效的框架,共同推动 Web 技术进步,并已将重心回归到 Astro 6 和未来路线图的开发中。
author Fred Schott
#优质博文 #Chrome #浏览器 #新动态
这个真的好耶!Chrome 145 实验性支持垂直标签页,2026 了 Chrome 终于把这个学过来了啊!
Chrome 145 adds Experimental Support for Vertical Tabs
以下是方便搜索索引的大纲(AI 生成),请读原文:
author Bramus!
这个真的好耶!Chrome 145 实验性支持垂直标签页,2026 了 Chrome 终于把这个学过来了啊!
Chrome 145 adds Experimental Support for Vertical Tabs
AI 摘要:Chrome 145 引入了一项实验性功能——垂直标签页 (Vertical Tabs),允许用户将浏览器标签页显示在侧边而非顶部。该功能目前处于 Beta 阶段,用户可以通过访问 chrome://flags/#vertical-tabs 启用相关旗标,重启浏览器后,再通过右键标签栏选择“Move Tabs To The Side”来激活,从而体验更高效的标签页管理,并且支持将侧边栏折叠。
以下是方便搜索索引的大纲(AI 生成),请读原文:
1. Chrome 145 新功能介绍
• Chrome 145 实验性地增加了对垂直标签页 (Vertical Tabs) 的支持。
• 垂直标签页功能可以将标签页显示在浏览器侧边,而非传统顶部。
• 该功能还支持将标签栏折叠成最小形式,以节省屏幕空间。
2. 垂直标签页的启用步骤
• 用户需首先在 Chrome 145 (当前 Beta 版) 中启用一个功能旗标 (feature flag)。
• 具体步骤包括导航至 chrome://flags/#vertical-tabs。
• 将该旗标的下拉菜单设置为“Enabled”。
• 重启 Chrome 浏览器。
• 右键点击标签栏,并选择“Move Tabs To The Side”以应用垂直标签页布局。
author Bramus!