普通视图

发现新文章,点击刷新页面。
昨天 — 2025年8月16日首页

使用自定义高亮API增强用户‘/’体验

2025年8月16日 16:48

本篇依然来自于我们的 《前端周刊》 项目!

由团队成员 0bipinnata0 翻译,这位佬有技术追求、翻译风格精准细腻,还擅长挖掘原文背后的技术细节~

欢迎大家 进群 同该佬深度交流😁 以及持续追踪全球最新前端资讯!!

原文地址:Using the Custom Highlight API

生成前端周刊图.png

最近 CSS Custom Highlight API 引起了我的注意,因为 Firefox 最近开始支持它(Firefox 140,2025年6月),这使得所有主流浏览器都支持了这个 API。通过它,你可以对通过 JavaScript 中的 Range() 类获取的文本应用(某些)样式。我本来想说是你选择的文本,但这里实际上并没有涉及真正的普通选择器,这对于像我这样的 CSS 开发者来说是相当不寻常的。

我认为这里需要一个基本的文字说明,因为当我第一次开始研究它时,这样的说明肯定会对我有帮助:

  1. 你需要一个 textNode(例如 document.querySelector("p").firstChild

  2. 然后你需要一个 Range(),在其上执行 setStartsetEnd,这意味着范围现在在这两个整数之间。

  3. 然后你在该 Range 上调用 CSS.highlights.set(),给它一个名称。

  4. 然后你在 CSS 中使用 ::highlight(),传入你刚才使用的名称。

如果我们在页面上有一个 <p> 文本,整个过程看起来是这样的:

const WORD_TO_HIGHLIGHT = "wisdom";
const NAME_OF_HIGHLIGHT = "our-highlight";

const textNode = document.querySelector("p").firstChild;
const textContent = textNode.textContent;

const startIndex = textContent.indexOf(WORD_TO_HIGHLIGHT);
const endIndex = startIndex + WORD_TO_HIGHLIGHT.length;

const range = new Range();
range.setStart(textNode, startIndex);
range.setEnd(textNode, endIndex);

const highlight = new Highlight(range);
CSS.highlights.set(NAME_OF_HIGHLIGHT, highlight); 

在开发者工具中看到这个效果很有趣,单词 "wisdom" 明显应用了自定义 CSS 样式,但在该单词周围没有你通常认为应用这些样式所必需的元素。

image.png

这很可能就是浏览器本身在需要仅对文本的某些部分应用样式时所做的事情,比如当你使用浏览器内置的查找功能时。

image.png

这是演示:

codepen.io/editor/anon…

为什么这很有用?

  • 能够在完全不需要操作 DOM 的情况下定位和样式化文本是很有趣的。有时,DOM API 被批评为缓慢,所以能够避免这种情况可能是有利的,特别是如果你需要大量这样做的话。

  • 添加和删除 <span> 元素,除了可能"缓慢"之外,还会影响 DOM 结构,从而可能影响其他处理 DOM 的 CSS 和 JavaScript。

  • DOM 复杂度可能是网页性能的一个问题。过多的 DOM 节点,重新计算可能非常"昂贵",页面上的用户体验可能会受到影响,比如动画和滚动变慢。

这是一个只有 17 个更改文件的 GitHub PR 页面。该页面已经有超过 4,500 个 span 元素,用于诸如代码差异着色和语法高亮等功能。这已经相当重了,而且肯定会变得更糟。

![image.png](使用自定义高亮API增强用户‘+’体验+54149756-b7ed-41c7-9c27-b0ec61235095/image 2.png)

我确信这个 API 存在的原因还有很多,但这些只是我立即想到的几个原因。

做更多事情(搜索示例)

创建一个 new Highlight() 可以接受多个 Range。这意味着 CSS 中的单个 ::highlight() 可以应用于许多文本范围。如果我们在页面上构建自己的搜索功能,这将很有用。如果搜索是你正在构建的 Web 应用程序的关键功能,我可以很容易地想象为它构建自己的 UI,而不是依赖内置的浏览器功能。

这次,让我们让要在文本中查找的单词来自用户:

<label>
  Search the text below
  <input type="search" value="oven" id="searchTerm">
</label>  

然后我们监听变化:

window.searchTerm.addEventListener("input", (e) => {
  doSearch(e.target.value.toLowerCase());
}); 

注意我们将输入的值传递给一个函数,并在传递时将其转换为小写,因为搜索在不区分大小写时通常最有用。

我们的 doSearch 函数然后将接受该搜索词并在所有文本上运行正则表达式:

const regex = new RegExp(searchTerm, "gi"); 

我们需要的是一个包含所有找到的文本实例索引的数组。这是一段有点冗长的代码,但就是这样:

const indexes = [...theTextContent.matchAll(new RegExp(searchTerm, 'gi'))].map(a => a.index); 

有了这个索引数组,我们可以循环遍历它们创建 Range,然后将所有 Range 发送到新的 Highlight。

const arrayOfRanges = [];

indexes.forEach(matchIndex => {
  // 从索引值创建一个 "Range"。
  const searchRange = new Range();
  searchRange.setStart(par, matchIndex);
  searchRange.setEnd(par, matchIndex + searchTerm.length);

  arrayOfRanges.push(searchRange);
})

const ourHighlight = new Highlight(...arrayOfRanges);
CSS.highlights.set("search-results", ourHighlight); 

总的来说,它创建了一个功能完整的搜索体验:

codepen.io/editor/anon…

用于语法高亮

感觉语法高亮代码是这个 API 的一个很好的用例。André Ruffert 已经采用了这个想法并付诸实践,制作了一个 [<syntax-highlight> Web Component](https://andreruffert.github.io/syntax-highlight-element/),它使用 Lea Verou 的 Prism.js 来解析代码,但然后不像开箱即用的 Prism 那样应用 <span>,而是使用这个自定义高亮 API。

示例:

codepen.io/editor/anon…

我认为这很棒,但值得注意的是,这个 API 只能在客户端使用。对于语法高亮这样的功能,这可能意味着在看到代码和语法高亮"生效"之间会有延迟。我承认在可能的情况下,我更喜欢服务器端渲染的语法高亮。这意味着如果你可以从服务器提供一堆像这样的 <span>(并且不会严重影响性能或可访问性),那可能会更好。

我也承认我仍然对内置语法高亮的字体有些着迷,这感觉像是字体厂商可以进入的未开发领域。

我们让 JSON.stringify 的速度提升了两倍以上

2025年8月16日 15:32

本篇依然来自于我们的 《前端周刊》 项目!

由团队成员 掘金安东尼 翻译,欢迎大家 进群 持续追踪全球最新前端资讯!!

原文地址:v8.dev/blog/json-s…

生成前端周刊图.png

译者小结

JSON.stringify 提速的核心为以下6点:

  1. 快速路径:避开一大堆通用检查(节省 CPU 时间)
  2. 专用版本:按字符串类型分开编译(减少分支判断)
  3. 批量扫描:一次看多字符(降低循环次数)
  4. 缓存形状:重复对象直接批量处理(跳过重复工作)
  5. 更快算法:数字转字符串的计算加速(核心耗时优化)
  6. 分段缓冲:内存分配更聪明(避免大搬家)

原文

JSON.stringify 是 JavaScript 中用于序列化数据的核心函数。它的性能直接影响着 Web 上的常见操作——从为网络请求序列化数据,到将数据保存到 localStorage。更快的 JSON.stringify 意味着页面交互更迅速、应用响应更灵敏。这就是为什么我们很高兴地分享:最近的一次工程改进,使得 V8 中的 JSON.stringify 性能提升了两倍以上。本文将拆解实现这一提升的技术优化。

无副作用的快速路径

此次优化的基础是一条新的快速路径,建立在一个简单的前提上:如果我们能够保证序列化对象时不会触发任何副作用,就可以使用更快的专用实现。这里的“副作用”指的是任何会打破对象简单、顺序遍历的情况。

这不仅包括明显的情况,比如在序列化过程中执行用户定义的代码,还包括一些更隐蔽的内部操作,比如可能触发垃圾回收的过程。有关哪些情况会导致副作用,以及如何避免它们的更多细节,请参见 Limitations

只要 V8 能确定序列化过程不会出现这些情况,就可以一直停留在高度优化的路径上。这使它能够绕过通用序列化器中许多昂贵的检查和防御逻辑,从而在处理最常见的、代表纯数据的 JavaScript 对象时获得显著加速。

此外,这条新快速路径是迭代式的,而不是像通用序列化器那样递归。这一架构选择不仅免去了栈溢出检查,并允许我们在编码改变后快速恢复,还能让开发者序列化比以前更深层嵌套的对象图。

处理不同的字符串表示

在 V8 中,字符串可以用单字节或双字节字符表示。如果一个字符串只包含 ASCII 字符,它会被存储为单字节字符串,每个字符占 1 个字节。但如果字符串中有一个字符超出 ASCII 范围,那么整个字符串都会使用双字节表示,内存占用翻倍。

为了避免统一实现中不断分支和类型检查的开销,整个字符串序列化器现在基于字符类型进行模板化。这意味着我们会编译两个独立的、专门优化的版本:一个完全针对单字节字符串优化,另一个针对双字节字符串优化。这确实会影响二进制大小,但我们认为性能提升绝对值得。

该实现还能高效处理混合编码。在序列化过程中,我们必须检查每个字符串的实例类型,以检测无法在快速路径处理的表示形式(比如 ConsString,它在扁平化时可能触发 GC),这些会回退到慢路径。这个检查同时也能知道字符串是单字节还是双字节编码。

因此,从乐观的单字节序列化器切换到双字节版本几乎是零成本的。当检查发现双字节字符串时,就会新建一个双字节序列化器,并继承当前状态。最后,只需将初始单字节序列化器的输出与双字节版本的输出拼接即可。这种策略确保了在常见情况下保持高度优化的路径,同时转向处理双字节字符的开销很小且高效。

使用 SIMD 优化字符串序列化

在 JavaScript 中,任意字符串在序列化为 JSON 时都可能包含需要转义的字符(例如 " 或 ``)。传统的逐字符循环查找这些字符速度很慢。

为了加速这一过程,我们基于字符串长度采用了两级策略:

  • 长字符串:使用专用的硬件 SIMD 指令(例如 ARM64 Neon)。这样可以将字符串的大块内容加载到宽 SIMD 寄存器中,并在几条指令内同时检查多个字节是否存在需要转义的字符。
  • 短字符串:使用 SWAR(寄存器内 SIMD)技术。该方法通过在标准通用寄存器上进行巧妙的按位逻辑运算,以极低开销一次处理多个字符。

无论采用哪种方法,流程都很高效:按块快速扫描字符串。如果某个块中没有特殊字符(这是常见情况),就可以直接复制整个字符串。

快速路径上的“快速通道”

即使在主快速路径中,我们也找到了进一步加速的机会。默认情况下,快速路径仍需遍历对象的每个属性,并对每个键执行一系列检查:确认不是 Symbol、确保可枚举、扫描字符串是否包含需要转义的字符(例如 " 或 ``)。

为消除这些步骤,我们在对象的隐藏类上引入了一个标志。一旦我们序列化了对象的所有属性,就会将其隐藏类标记为 fast-json-iterable,前提是属性键都不是 Symbol、全部可枚举、且不包含需要转义的字符。

当我们序列化另一个具有相同隐藏类的对象(这种情况很常见,比如一组形状相同的对象数组)并且它是 fast-json-iterable 时,我们可以直接将所有键复制到字符串缓冲区,而无需进一步检查。

我们还将这种优化应用到了 JSON.parse,当解析数组时,如果数组中的对象通常有相同的隐藏类,就可以用它来进行快速键比较。

更快的数字转字符串算法

将数字转换为字符串是一个出乎意料的复杂且性能关键的任务。在 JSON.stringify 的优化中,我们发现可以显著加速这一过程,于是升级了核心的 DoubleToString 算法。我们用 Dragonbox 替换了长期使用的 Grisu3 算法,用于最短长度的数字转字符串转换。

虽然这一优化是为了 JSON.stringify,但新的 Dragonbox 实现会惠及 V8 中所有 Number.prototype.toString() 的调用。这意味着任何数字转字符串的代码,不仅仅是 JSON 序列化,都会自动获得这一性能提升。

优化底层临时缓冲区

任何字符串构建操作中的一个主要开销是内存管理。之前,我们的序列化器会在 C++ 堆上构建一个单一的连续缓冲区。虽然简单,但这种方式有一个显著缺点:一旦缓冲区空间耗尽,就必须分配更大的缓冲区,并将全部现有内容复制过去。对于大型 JSON 对象,这种反复分配和复制的过程会造成很大的性能损耗。

关键洞察是,强制这个临时缓冲区保持连续并没有真正的好处,因为最终结果只会在最后一步组装成一个字符串。

基于此,我们将旧系统替换为分段缓冲区。不再是一个大的、不断增长的内存块,而是使用 V8 的 Zone 内存分配一组较小的缓冲段。当一个段写满时,我们直接分配一个新的段继续写,完全消除了昂贵的复制操作。

限制

新的快速路径通过专门优化常见、简单的情况来实现速度提升。如果被序列化的数据不满足这些条件,V8 会回退到通用序列化器以确保正确性。要获得全部性能提升,JSON.stringify 调用需要满足以下条件:

  • 无 replacer 或 space 参数:提供 replacer 函数或 space/gap 参数(用于美化输出)会使其进入通用路径。快速路径仅支持紧凑的、未转换的序列化。
  • 纯数据对象和数组:被序列化的对象应是简单的数据容器,即它们及其原型不能有自定义的 .toJSON() 方法。快速路径假设标准原型(如 Object.prototype、Array.prototype),且无自定义序列化逻辑。
  • 对象无索引属性:快速路径针对具有常规字符串键的对象进行优化。如果对象包含类数组的索引属性(如 '0'、'1'…),则会使用较慢的通用序列化器。
  • 简单字符串类型:某些内部 V8 字符串表示(如 ConsString)在序列化前需要分配内存进行扁平化。快速路径避免执行可能触发这种分配的操作,最适合处理简单的顺序字符串。作为 Web 开发者,这一点难以直接控制,但大多数情况下都能正常工作。

对于绝大多数使用场景(如为 API 响应序列化数据、缓存配置对象),这些条件都是自然满足的,开发者可以自动享受到性能提升。

结论

通过从高层逻辑到底层内存与字符处理的全方位重构,我们在 JetStream2 的 json-stringify-inspector 基准测试中实现了超过 2 倍的性能提升。下图展示了在不同平台上的结果。这些优化从 V8 版本 13.8(Chrome 138)开始可用。

image.png

昨天以前首页

🌍海外前端动态情报源清单(持续更新)

2025年8月12日 08:37

背景介绍

向大家介绍一个项目:前端周刊-翻译计划

我们发现:中文社区缺乏系统性跟踪海外一手前端动态的内容。而国外像 Medium、Smashing、LogRocket、WebKit Blog 等一线平台,每周都在迸发新洞见、新 API、新标准、新框架。

我们不靠算法推荐,而是靠前端开发者对技术趋势的敏锐、对知识分享的热爱,手动为你筛选每周全球社区中最新、最热、最值得关注的前端文章。

扫码加群 获取一手动态!

信息源

以下是周刊的信息源:

覆盖技术博客、浏览器厂商、框架团队、行业趋势等维度,便于系统性追踪海外一手动态。

📚 技术博客 / 社区刊物


🛠 浏览器厂商官方博客


⚙️ 前端框架 & 库团队博客


📈 行业趋势 & 前瞻

前端周刊第426期(2025年8月4日–8月10日)

2025年8月11日 11:56

前端周刊-PRO:

我们是一群热爱前端、乐于分享的技术博主,不靠算法推荐,而是靠对技术趋势的敏锐嗅觉,手动为你筛选每周全球社区中最新、最热、最值得关注的前端文章。我们跟踪 Medium、Smashing、LogRocket、WebKit Blog 等一线平台,系统性追踪海外一手前端动态,用地道的技术语言为中文开发者重构内容。

🙎 团队介绍 | 💬 扫码进群 | 🌍 海外情报源清单

处理图片文字.png

推荐语: 本期前端周刊(第426期,2025年8月4-10日)汇聚了Web开发的最新技术动态:从自定义高亮API的创新应用到国际化API的浏览器原生支持,从PostCSS创建经验分享到HTML发展的深度思考。CSS领域展现了令人惊艳的进展,包括自动填充列计算、滚动驱动动画、无限跑马灯效果等。JavaScript生态持续演进,TypeScript 5.9发布,React生态在类型安全导航和服务端组件方面取得重要突破。

🔍 Web 开发动态

  • 使用自定义高亮API增强用户体验 推荐指数:⭐⭐⭐⭐⭐
    Frontend Masters深度解析了浏览器原生的自定义高亮API,这是一个革命性的Web标准。文章详细介绍了如何使用这个API实现文本高亮、搜索结果标记、代码语法高亮等功能,无需依赖第三方库。相比传统的DOM操作方式,自定义高亮API提供了更好的性能和用户体验,特别适合构建文档编辑器、代码编辑器等应用。

  • Intl API强大功能指南:浏览器原生国际化解决方案 推荐指数:⭐⭐⭐⭐⭐
    Smashing Magazine出品的国际化权威指南,全面介绍了浏览器原生Intl API的强大功能。文章涵盖了日期时间格式化、数字本地化、货币显示、相对时间计算、列表格式化等核心功能,展示了如何构建真正的多语言Web应用。这个API的原生支持意味着开发者可以减少对第三方国际化库的依赖,获得更好的性能和更小的包体积。

  • VoidZero 2025年7月更新:前端工具链的新进展 推荐指数:⭐⭐⭐⭐
    VoidZero团队分享的最新技术进展,介绍了他们在前端工具链优化方面的重要突破。文章详细介绍了构建性能提升、开发体验改进、生态系统集成等方面的新特性,为现代前端开发提供了更高效的工具支持。

  • 创建PostCSS的经验教训 推荐指数:⭐⭐⭐⭐⭐
    Evil Martians团队回顾了PostCSS的创建历程和设计哲学。文章深入分析了PostCSS成功的关键因素,包括插件架构设计、生态系统建设、性能优化等方面的经验。对于想要创建开源工具或理解现代前端工具链设计原理的开发者来说,这是一篇极具价值的技术分享。

  • HTML已死,HTML万岁:Web标准的演进思考 推荐指数:⭐⭐⭐⭐
    一篇关于HTML发展现状和未来的深度思考文章。作者分析了HTML在现代Web开发中的地位变化,探讨了组件化、框架化对传统HTML的影响,以及Web标准的演进方向。文章提出了对Web平台未来发展的独特见解,值得每个Web开发者深入思考。

  • Canvas粒子背景效果实现 推荐指数:⭐⭐⭐⭐
    IO Digital团队分享的Canvas动画教程,详细介绍了如何创建令人印象深刻的粒子背景效果。文章涵盖了粒子系统设计、动画优化、性能调优等关键技术点,为创建引人注目的Web视觉效果提供了实用指导。

  • 图像格式、像素与图形:Web开发者必知指南 推荐指数:⭐⭐⭐⭐
    Mozilla开发者博客的权威指南,全面介绍了Web开发中的图像处理知识。文章详细解析了各种图像格式的特点、像素密度处理、图形优化策略等,帮助开发者做出正确的图像技术选择,提升Web应用的视觉质量和加载性能。


🎨 CSS 新知

  • 计算自动填充列数的CSS技巧 推荐指数:⭐⭐⭐⭐⭐
    Frontend Masters分享的CSS Grid高级技巧,解决了自动填充布局中列数计算的难题。文章详细介绍了如何使用CSS计数器和Grid属性来动态计算和显示当前的列数,这对于创建响应式网格布局和提供用户反馈具有重要价值。技术实现巧妙且实用性强。

  • 使用滚动驱动CSS动画重新定义视差效果 推荐指数:⭐⭐⭐⭐⭐
    CSS-Tricks的创新动画教程,展示了如何使用最新的滚动驱动动画API创建现代化的视差效果。相比传统的JavaScript实现,这种纯CSS方案提供了更好的性能和更流畅的用户体验。文章详细介绍了滚动时间线、动画进度控制等核心概念,代表了Web动画技术的重要进步。

  • CSS面试题准备指南 推荐指数:⭐⭐⭐⭐
    CSS-Tricks为求职者准备的实用指南,系统性地整理了CSS面试中的常见问题和答题技巧。文章涵盖了布局、选择器、动画、响应式设计等核心知识点,并提供了深度思考的方向,帮助开发者更好地准备CSS相关的技术面试。

  • 现代CSS无限跑马灯动画实现 推荐指数:⭐⭐⭐⭐⭐
    Frontend Masters的动画技术教程,展示了如何使用现代CSS特性创建流畅的无限跑马灯效果。文章详细介绍了CSS动画、变换、时间函数等技术的综合应用,提供了多种变化和优化方案。这种纯CSS实现避免了JavaScript的性能开销,特别适合用于品牌展示和内容轮播场景。

  • 主题设计与颜色命名的深度思考 推荐指数:⭐⭐⭐⭐
    CSS-Tricks关于设计系统的深度文章,探讨了主题设计和颜色命名的最佳实践。文章分析了语义化命名、可维护性、可扩展性等关键因素,为构建大型设计系统提供了系统性的方法论。对于设计师和前端开发者协作具有重要指导意义。

  • CSS顺序动画实现技巧 推荐指数:⭐⭐⭐
    CSS-Tip分享的动画技巧,介绍了如何创建具有时序控制的连续动画效果。文章提供了多种实现方案,包括延迟控制、动画链接、状态管理等,为创建复杂的交互动画提供了实用方法。

  • 实用的CSS默认样式设置 推荐指数:⭐⭐⭐
    Adam的实用CSS技巧分享,整理了一系列有用的默认样式设置。文章涵盖了重置样式、基础排版、表单优化等方面的最佳实践,为快速启动新项目提供了可靠的样式基础。


💡 JavaScript 进展

📚 核心技术篇

  • TypeScript条件类型与infer构建类型安全的fetch 推荐指数:⭐⭐⭐⭐⭐
    Piccalilli的高级TypeScript教程,展示了如何使用条件类型和infer关键字构建完全类型安全的fetch函数。文章深入解析了TypeScript的高级类型系统,通过实际案例演示了如何实现API响应的自动类型推断,大大提升了开发体验和代码安全性。这是TypeScript进阶学习的优秀资源。

  • TypeScript 5.9正式发布 推荐指数:⭐⭐⭐⭐⭐
    Microsoft官方发布的TypeScript 5.9版本介绍,带来了重要的类型系统改进和新特性。主要更新包括:推断类型谓词、条件类型的性能优化、新的编译器选项、更好的错误消息等。这些改进进一步增强了TypeScript的类型安全性和开发体验,对于TypeScript项目的升级具有重要参考价值。

  • V8引擎JSON.stringify深度解析 推荐指数:⭐⭐⭐⭐
    V8团队的技术深度文章,详细解析了JSON.stringify的内部实现机制和性能优化策略。文章介绍了V8如何处理不同类型的数据序列化、循环引用检测、性能瓶颈优化等技术细节,为理解JavaScript引擎工作原理和优化JSON处理性能提供了宝贵见解。

  • 停止使用桶文件:模块导入的最佳实践 推荐指数:⭐⭐⭐⭐
    JSdev.space的模块化开发指南,分析了桶文件(barrel files)的潜在问题和替代方案。文章详细解释了桶文件对打包体积、tree-shaking、开发体验的影响,提出了更好的模块组织和导入策略,对于优化大型JavaScript项目的模块结构具有重要指导意义。

  • ECMAScript 2025新特性概览 推荐指数:⭐⭐⭐⭐
    The New Stack对ECMAScript 2025标准的全面解读,介绍了即将到来的JavaScript新特性。文章涵盖了语言层面的改进、新的API、性能优化等方面,为开发者了解JavaScript发展方向提供了前瞻性视角。

  • TC39推进11项提案:数学精度、二进制API等重要进展 推荐指数:⭐⭐⭐⭐
    Socket.dev报道的TC39技术委员会最新进展,详细介绍了11项重要提案的推进情况。这些提案涵盖了数学计算精度改进、二进制数据处理API、新的语言特性等,代表了JavaScript语言的未来发展方向。

⚛️ React 生态

  • React Router类型安全导航实现 推荐指数:⭐⭐⭐⭐⭐
    JSdev.space的React Router高级教程,展示了如何实现完全类型安全的路由导航。文章详细介绍了TypeScript与React Router的深度集成,包括路由参数类型推断、导航函数类型安全、路由守卫等高级特性。这种类型安全的路由方案能够在编译时捕获路由错误,大大提升了大型React应用的开发体验和代码质量。

  • React Server Components的问题与挑战 推荐指数:⭐⭐⭐⭐
    The New Stack对React Server Components的批判性分析,客观地探讨了这项技术的优势和局限性。文章分析了RSC在开发复杂度、调试难度、生态系统兼容性等方面的挑战,为开发者在技术选型时提供了平衡的视角。

  • React Query选择器功能增强 推荐指数:⭐⭐⭐⭐
    TkDodo的React Query深度教程,介绍了选择器功能的高级用法和性能优化技巧。文章详细解析了如何使用选择器减少不必要的重新渲染、优化数据转换、提升组件性能等,为构建高性能的数据驱动应用提供了实用指导。

  • React Query完全指南 推荐指数:⭐⭐⭐⭐⭐
    Netguru团队的React Query权威指南,全面介绍了这个强大的数据获取库。文章涵盖了基础概念、高级特性、最佳实践、性能优化等各个方面,配备了丰富的示例和实战案例。对于想要掌握现代React数据管理的开发者来说,这是一份不可多得的学习资源。

  • ReactJS速查表 推荐指数:⭐⭐⭐
    CodeClash提供的React开发速查表,整理了React开发中的常用API、Hooks、模式等关键信息。这份速查表适合作为日常开发的参考工具,帮助开发者快速查找和回顾React的核心概念。

  • Next.js 15动态IO缓存机制 推荐指数:⭐⭐⭐⭐
    LogRocket对Next.js 15新特性的深度解析,重点介绍了动态IO缓存机制。文章详细分析了这个新特性如何改进服务端渲染的性能,包括缓存策略、失效机制、开发体验等方面的改进。对于使用Next.js构建高性能Web应用的开发者具有重要参考价值。


📌 喜欢这期周刊的内容吗?欢迎点赞、转发并关注,获取每周更新的《前端周刊》。也欢迎加入前端交流群,一起探索前沿技术、工具与框架演进路线!

image.png

❌
❌