所有文章

  • Published on
    在大多数情况下,使用自定义ref属性是比forwardRef更好的解决方案。它简化了我们的代码,提高了可读性,并避免了多个问题。forwardRef只在特定场景下是必需的,比如单一元素代理组件或模拟实例refs。随着新的RFC可能移除forwardRef,我们可以期待一种更简单、更直观的方式来处理React中的refs。
  • Published on
    React 19 版本引入了一个重要的新特性,即 React Compiler。这个编译器是 React 团队为了解决在状态变化时 UI 过度重新渲染的问题而开发的。React Compiler 旨在自动优化应用程序,通过在构建时分析代码,理解 JavaScript 和 React 的规则,从而自动地进行记忆化(memoization)处理,减少不必要的组件重新渲染
  • Published on
    在确保用户隐私的同时安全地浏览网络是我们的首要任务。在使用Cookie时,重要的是要确保它们安全并按预期目的服务,而不损害用户隐私。一个需要考虑的关键属性是SameSite,它规定了跨站点请求中Cookie的发送方式。
  • Published on
    在某些情况下,我们可能需要控制并发请求的数量。例如,当我们编写下载或爬虫工具时,一些网站可能对并发请求的数量有限制。
  • Published on
    在JavaScript中,您可能已经知道如何取消请求:XHR可以通过abort方法,而fetch可以结合AbortController实现请求取消。但是,如何取消一个普通的Promise呢?
  • Published on
    Vue.observable,让一个对象变成响应式数据。Vue 内部会用它来处理 data 函数返回的对象。
  • Published on
    diff是什么?先说一下Vue的响应式。Vue的template会转换成render函数,render函数会返回VNode。VNode是一个js对象,是对真实Dom的映射。Vue会通过Object的defineProperty或者Proxy监听js对象的变更,当数据变更后,需要更新到真实Dom上。如果每次都从0开始重新渲染,那会有较大损耗,可能有部分组件根本不需要更新。为了提高渲染的效率,就需要找到一个最高效的渲染方式。diff就是为了对比新的VNode和旧VNode的差异,实现最小化的更新。在vue里面 diff 算法是通过patch函数来完成的,所以有的时候也叫patch算法。
  • Published on
    V8的堆内存分为3部分,分别为年轻分代,年老分代,大对象空间。
  • Published on
    ReactScheduler是 react 的内部包,用于浏览器环境协同调度的,主要介绍出现的背景,以及解决的问题,和基本的设计思路。
  • Published on
    NPM v5 引入了 package-lock.json, 作为依赖树一致性的保障机制。由于npm以semver version作为版本管理工具,其描述的是一个版本的范围,并不是精确的版本,很容易导致不同人或者不同环境安装的版本不一致。