返回

React性能优化:8月更文“灵刃”让应用更“凌”厉!

前端


☺☺☺

在纷繁嘈杂的Web世界里,React,一款由Facebook鼎力推出的用于构建用户界面的JavaScript库,已然以其“声明性”和“组件”特色立足于技术汪洋中的绝礁之巅。如今,React的生态圈已经成熟到足以让一些人放手一搏,“React performance optimization”,翻译为大白话就是“React性能优化”亦成了技术老炮们磨刀霍霍的最新焦点。想听一听听我给你们的“8月更文”支支招么?OK,有请!

来,先让我们盘一遍React通常“缺钙”的一些根本原因:

  • 过多的re-render。 组件树的结构变化时,React将会重新render整个子树。如果子树庞大,React会非常痛苦。
  • 组件粒度把控不当。 过大或过小都会引起组件的过渡使用。组件过大影响性能,反之会让管理更加困难。
  • 过渡的prop传入。 大的 prop 会造成 prop diff(即对比两组旧有props与新传入prop的差值)的运算负载。
  • 过多的组件开销。 组件的渲染都会存在开销,所以尽量少使用组件可有效优化。
  • 不当的Key使用。 Keys是 React 标记各个节点的唯一标识,如果缺失或使用不当,会导致额外的diff。
  • 过渡的reconciliation。 React 通过diff子树来决定哪些组件更新,但是过大的树会导致reconciliation过渡。

为了彻底解决上述的“棘刺”,我们需要操刀以下几个层面的入手点:

  1. 组件结构优化。 在您的React程序里组件的代码逻辑往往凌乱繁多,可以通过以下几个步骤来改善:
  • 优化组件粒度,创建较小组件,保持组件可维护。
  • 使用子组件,将大组件分成更小粒度组件。
  • 利用React.memo()优化子组件。
  1. 组件性能优化。 毕竟,优化时刻都需要兼顾代码逻辑的执行能力。以下步骤可以帮助我们解决这个问题:
  • 优化prop的传入,尽量通过函数返回值代替。
  • 合理使用React Pure Component优化性能。
  • memo() 与 Pure Component对比优化性能。
  1. 优化组件渲染。 一番优化改进,咱还需要确保优化过程不会影响应用的展示效果。
  • 通过shouldComponentUpdate()实现按需更新。
  • 巧妙使用生命周期的钩子优化渲染。
  • 巧妙使用React.Fragment优化渲染。
  • 减少reconciliation以优化渲染性能。
  • 减少不必要的DOM diff以优化渲染性能。
  • 尝试使用PureComponent替代普通的React组件。
  • 使用React.memo()替代PureComponent。
  • 使用React.PureComponent优化prop传入。
  1. 应用性能优化。 听起来又是一个“挺专业”的优化点,其实,并不难。
  • 启用React的生产环境模式。
  • 代码拆分优化应用程序性能。
  • 使用CSS模块。
  • 使用Post CSS。
  • 使用 CSS 预处理器(CSS preprocessors)。
  • 使用 SASS。
  • 使用 LESS。
  • 使用 Stylus。
  • 使用 Tailwind CSS。

您瞧,用这些重点的举措,就可以顺利帮您的React程序来一次“身轻如燕”的改造!这个8月,咱们“更文”更文,和笔者一起,舞出最“凌”厉的代码华章!

☺☺☺