在一个典型的 React 应用中,数据是通过 props 属性自上而下(由父及子)进行传递的,但此种用法对于某些类型的属性而言是极其繁琐的(例如:地区偏好,UI 主题),这些属性是应用程序中许多组件都需要的。Context 提供了一种在组件之间共享此类值的方式,而不必显式地通过组件树的逐层传递 props。 当 Context Provider 接收的 value 发生变化的时候,React 会向下深度优先遍历组件树,找到消费了该 Context 的组件并标志为需要更新,在组件更新的 render 阶段,这些消费了该 Context 的组件就会重新渲染,读取到最新的 Context 值。 我们通常传递给 Context Provider 的 value 是一个对象,对象里包含多个字段,然而这种常见的场景却可能导致多次不必要的重复渲染。以下述代码为例:
随着行业的快速发展和业务的高速迭代,数据量也呈爆炸式增长,传统的大数据架构在资源利用、高效运维、可观测性等方面存在诸多不足,已经越来越无法适应当下的发展需求。具体来讲,传统大数据架构主要存在以下几方面的问题: 传统大数据组件繁多,安装运维复杂,在生产使用中需要大量的人力支持; 在线业务和大数据业务各自使用独立的资源池,使得资源流转困难,利用率低,成本上升; 传统大数据架构没有 CICD 机制,缺少测试和质量控制流程; 传统大数据缺少开箱即用的高可用、多租户、日志、监控、告警、认识、授权、审计、计费等能力。
DataTester是由火山引擎推出的A/B测试平台,覆盖推荐、广告、搜索、UI、产品功能等业务应用场景,提供从A/B实验设计、实验创建、指标计算、统计分析到最终评估上线等贯穿整个A/B实验生命周期的服务。DataTester经过了字节跳动业务的多年打磨,在字节内部已累计完成150万次A/B实验,在外部也应用到了多个行业领域。 指标查询的产品高性能是DataTester的一大优势。作为产品最复杂的功能模块之一,DataTester的指标查询能够在有限资源的前提下,发挥出最极致的A/B实验数据查询体验,而在这背后是多次的技术方案的打磨与迭代。 本文将分享DataTester在查询性能提升过程中的5个优化思路。
rescript 跟 typescript 类似,也是一门 js 方言。在现在 typescript 大流行的背景下,为什么会写这篇文档去介绍 rescript 呢? 最初接触 rescript 的原因是惊讶于作者居然是国人大牛,感到十分钦佩。初步探索时发现这门语言本身有着很多亮眼的地方,比如更健壮的类型系统、更纯粹的函数式编程支持、强大的语言特性、原生语言编写的性能极致的编译器等等,当然也有着相应的劣势。本文会着重介绍 rescript 强大的特性,周边的生态以及和我们日常使用最紧密的 react 的结合。
2023 年 1 月 11 日,2022 年度 StateOfJS 调查结果正式公布!此次问卷于 2022 年 11 月 21 日至 12 月 22 日进行,共收集了 39472 份问卷。此调查的目的是确定 Web 开发生态系统中即将出现的趋势,以帮助开发人员做出技术选择。因此,该调查的重点是预测未来几年会发生什么,而不是分析现在流行什么,这就是为什么并不包括目前最普遍的功能或技术。