H5开发中常见的性能优化

1、H5页面scroll滚动在iOS设备上抖动及安卓显示不完整优化

场景一:
1
这种情况下就删除heigth:100%,调整样式如下

.news-list {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  }

场景二:
滚动过程中ref回调refScroll中使用了大数据量计算导致

场景三:
检查页面是否有多个滚动条引起,chrome去除移动模式可以看到具体有多少个滚动条

场景四:
在这里插入图片描述
页面中有使用自动滚动组件,在页面滚动时禁止组件内滚动即可.

.am-notice-bar-marquee.scroll{
  right: 0 !important;
}

    refScroll(el) {
      super.refScroll(el);
      if ($('html').hasClass('theme-white')) {
        $(el).off("scroll", this.scrollFn).on("scroll", this.scrollFn);
      }
    }

    scrollFn() {
      $('.am-notice-bar-marquee').addClass('scroll');
      clearTimeout(this.time);
      this.time = setTimeout(() => $('.am-notice-bar-marquee').removeClass('scroll'), 1000);
    }
    

强制固定位置即可

安卓显示层级过多忽隐忽现显示不全
渲染层级过多出现页面显示不可控制,解决方案减少cpu渲染压力将未显示层级进行隐藏

if (bool) {
     $(".container-pages").css("display", "none")
     $(".container-pages:last").attr("style", "");
} else {
     $(".container-pages").attr("style", "");
}
2、首屏显示空白页时间过长优化

(1)第三方首屏无用js异步加载

<script async src="http://pingjs.qq.com/mta/app_link_h5_stats.js" name="MtaLinkH5"></script>

(2)第三方css本地化处理,防止阻塞首屏页面渲染及阻塞其后面的js语句的执行
(3)加入首页数据缓存及骨架屏处理

3、样式结构优化
  • 动画实现过程中,启用GPU硬件加速:transform: tranlateZ(0)
  • 为复杂动画元素新建图层,提高动画元素的z-index
  • 不要一条一条地修改DOM的样式,预先定义好class,然后修改DOM的className
  • 元素位置移动变换时尽量使用CSS3的transform来代替对top left等的操作
    变换(transform)和透明度(opacity)的改变仅仅影响图层的组合
  • 将DOM离线后再修改, 由于display属性为none的元素不在渲染树中,对隐藏的元素操作不会引发其他元素的重排。
4、React优化

(1)使用key可以说已经成为React开发中的最佳实践了
原因是使用key能够让组件保持结构的稳定性。我们都知道React以其DOM Diff算法而著名,在实际比对节点更新的过程中带有唯一性的key能够让React更快得定位到变更的节点,从而可以做到最小化更新。

5、光标跳入父页面

1
但页面应用上下移动光标会跳入父页面中解决方法,给父页面加上如下样式

.@{container-prefix}-hide{
  display: none;
  pointer-events: none;
}
6、子页面滑动手势干扰父页面

子页面添加如下事件阻止冒泡

 $(e)
                .parents(".upload-modal")
                .on("touchstart", (e) => e.stopPropagation())
                .on("touchmove", (e) => e.stopPropagation())
                .on("touchend", (e) => e.stopPropagation());
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React H5性能优化开发过程非常重要的一部分,下面是一些常见优化策略: 1. 使用React.memo()来优化组件渲染:React.memo()可以将组件包裹起来,以减少不必要的渲染。它会对组件的 props 进行浅比较,如果 props 没有变化,则不会重新渲染组件。 2. 使用shouldComponentUpdate()或React.PureComponent来避免不必要的渲染:这些方法可以在组件更新之前进行比较,如果 props 或 state 没有变化,则可以阻止组件重新渲染。 3. 避免在render()方法进行昂贵的计算或操作:render()方法应该只负责渲染组件,不应该包含复杂的计算逻辑或操作。 4. 使用React.lazy()和React.Suspense来实现按需加载:将大型组件拆分为多个小组件,并使用React.lazy()和React.Suspense实现按需加载,可以减少初始加载时间。 5. 使用Key属性来优化列表渲染:在使用map()方法渲染列表时,为每个子元素添加唯一的key属性,这样React可以更高效地更新列表。 6. 使用shouldComponentUpdate()或React.memo()来减少子组件的重新渲染:如果子组件的props没有变化,则可以通过shouldComponentUpdate()或React.memo()阻止子组件的重新渲染。 7. 使用虚拟化技术来优化大型列表的渲染:使用React-virtualized或react-window等库可以只渲染可见区域内的列表项,以提高性能。 8. 使用性能分析工具来找出性能瓶颈:使用React DevTools或Chrome DevTools等工具可以帮助你分析组件的渲染性能,找出潜在的性能问题。 以上是一些常见的React H5性能优化策略,你可以根据具体情况选择合适的方法来提升应用的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值