内容提要
本文介绍 fetch 的两个阶段:首次 await 等待响应头,第二次等待响应体,response.body 是 ReadableStream。此外还提到 Firefox Nightly 支持链接参数模块,可为外部 SVG 传颜色变量;容器样式查询已进入 Baseline,可用于命名断点;text-box 简写和 checkVisibility() 方法也已广泛可用。
延伸解读
fetch 两次 await 的机制
文章解释了 fetch 需要两次 await 的原因:第一次 await 等待响应头到达,第二次 await 等待响应体完全接收。response.body 是一个 ReadableStream,这意味着你可以流式处理数据,而不仅限于一次性读取。理解这一点有助于更高效地处理大文件或实时数据,避免不必要的内存占用。
链接参数模块的进展
Firefox Nightly 已支持链接参数模块规范的第一部分,允许为外部 SVG 传递颜色变量等参数。此前,外部 SVG 无法接收动态值,这一新特性解决了长期痛点。虽然目前仅在 Nightly 中可用,但为未来跨浏览器支持奠定了基础,值得关注后续发展。
容器样式查询进入 Baseline
容器样式查询已进入 Baseline,意味着主流浏览器都支持。文章提到可以用它来命名断点,弥补 @custom-media 未能实现的遗憾。开发者现在可以基于容器样式而非视口宽度来应用样式,使组件响应式设计更加灵活和模块化。
新近广泛可用的 CSS 与 JS 特性
text-box 简写和 checkVisibility() 方法现已广泛可用。text-box 可以控制文本盒模型,去除字体特定的空白;checkVisibility() 则提供了一种标准方式来判断元素是否可见。这些特性简化了日常开发,减少了 hack 和 polyfill 的需求。
Q&A
fetch 为什么需要 await 两次才能获取响应体?
因为 fetch 有两个阶段:第一次 await 等待响应头到达,第二次 await 等待响应体到达。response.body 是一个 ReadableStream,所以需要再次等待。
Firefox Nightly 新支持的链接参数模块有什么作用?
链接参数模块允许为外部加载的 SVG 传递颜色变量等参数,解决了之前无法向外部 SVG 传递变量的问题。
容器样式查询进入 Baseline 后可以用来做什么?
容器样式查询进入 Baseline 后,可以用它来命名断点,通过一个小技巧实现类似 @custom-media 的功能。
text-box 简写和 checkVisibility() 方法现在可以安全使用了吗?
是的,text-box 简写已随 Firefox 154 进入 Baseline 新可用,checkVisibility() 方法也已广泛可用,可以安全地在所有地方使用。
response.body 是什么类型?
response.body 是一个 ReadableStream。
如何为外部 SVG 传递颜色变量?
可以使用 Firefox Nightly 新支持的链接参数模块,通过链接参数为外部 SVG 传递颜色变量。