当前位置: 首页 > news >正文

长春好的做网站公司有哪些网址提交百度收录

长春好的做网站公司有哪些,网址提交百度收录,门户网站模板下载,手机网站赏析defer表示延迟加载,针对大量节点的渲染加载,结合使用关键帧requestAnimationFrame的形式来分片加载,可以优化白屏时间 知识补充: requestAnimationFrame requestAnimationFrame 是根据帧数来执行回调函数的,就是屏幕…

defer表示延迟加载,针对大量节点的渲染加载,结合使用关键帧requestAnimationFrame的形式来分片加载,可以优化白屏时间

知识补充:

requestAnimationFrame

  • requestAnimationFrame 是根据帧数来执行回调函数的,就是屏幕一帧,那 requestAnimationFrame就会执行一次。一般屏幕是60帧,也就是一秒执行60次回调函数.
  • 性能相对定时器settimeout好,因为定时器执行权限在同步任务 微任务之后,会受到其他任务影响。

setTimeout 相比,requestAnimationFrame 最大的优势是由系统来决定回调函数的执行时机。具体一点讲,如果屏幕刷新率是60Hz,那么回调函数就每16.7ms被执行一次,如果刷新率是75Hz,那么这个时间间隔就变成了1000/75=13.3ms,换句话说就是,requestAnimationFrame 的步伐跟着系统的刷新步伐走。它能保证回调函数在屏幕每一次的刷新间隔中只被执行一次,这样就不会引起丢帧现象,也不会导致动画出现卡顿的问题。

解决方案:分帧渲染策略

VUE2.x


<template><div><div class="container"><div v-for="n in 100" :key="n+'n'"><div class="item_container" v-if="defer(n)"><div class="item_child" v-for="m in 6000" :key="m+'b'"></div>        </div></div>        </div></div>
</template>
<script>export default {name: 'page_Test',data() {return {nodeCount: 0,}},mounted() {方法一let maxNodeCount = 100const refreshNodeCount = () => {requestAnimationFrame((timestamp) => {console.log(timestamp, 'timestamp');//当前帧执行回调时的时间戳(以毫秒为单位,高精度小数)this.nodeCount++if (this.nodeCount < maxNodeCount) {refreshNodeCount()}})}refreshNodeCount()方法二this.update()},methods: {update(){let maxNodeCount = 100requestAnimationFrame((timestamp) => {console.log(timestamp, 'timestamp');//当前帧执行回调时的时间戳(以毫秒为单位,高精度小数)this.nodeCount++if (this.nodeCount < maxNodeCount) {this.update()}})},defer(n){// return 当前页面第几帧渲染 >= n;return this.nodeCount >= n},
}
</script><style lang="less" scoped>
// defer延迟加载
.container {display: grid;grid-template-columns: repeat(3, 1fr);grid-gap: 1em;.item_container {display: flex;flex-wrap: wrap;justify-content: center;border: 3px solid lightblue;}.item_child {width: 5px;height: 3px;background-color: #ccc;margin: 0.1em;}
}
</style>

或者封装方法,Mixins混入使用

export default function(maxNodeCount) {return {data() {return {nodeCount: 0}},mounted() {const refreshFrameCount = () => {requestAnimationFrame(() => {this.nodeCount++if (this.nodeCount < maxNodeCount) {refreshFrameCount()}})}refreshFrameCount()},methods: {defer(n) {// return 当前页面第几帧渲染 >= n;return this.nodeCount >= n}}}}

VUE3.x

封装useDefer.js

import { ref } from 'vue'const nodeCount = ref(0)function update() {nodeCount.value++;requestAnimationFrame(update)}update();export function useDefer() {return function (n) {return nodeCount.value >= n}}

组件使用


<template><div><div class="container"><div v-for="n in 100" :key="n+'n'"><div class="item_container" v-if="defer(n)"><div class="item_child" v-for="m in 6000" :key="m+'b'"></div>        </div></div>        </div></div>
</template><script setup>
import { useDefer} from './useDefer.js'
const defer= useDefer();
</script><style lang="less" scoped>
// defer延迟加载
.container {display: grid;grid-template-columns: repeat(3, 1fr);grid-gap: 1em;.item_container {display: flex;flex-wrap: wrap;justify-content: center;border: 3px solid lightblue;}.item_child {width: 5px;height: 3px;background-color: #ccc;margin: 0.1em;}
}
</style>

这样,就不会影响页面加载前一直显示白屏了~

http://www.dtcms.com/a/485233.html

相关文章:

  • 百货店怎么做网站送货基于h5的个人网站建设
  • 网站开发公司会计科目wordpress 阌栾
  • 万网是什么网站版式设计优秀作品欣赏
  • 禁止显示网站目录人工做流量的网站
  • 怎么模板建站云南旅行社网站建设
  • 酷 网站模板做网站必备
  • 网站搜索引擎优化案例中山小程序开发公司
  • 网站经典设计群辉可以做网站服务器吗
  • 免费建网站哪个网好微信怎样建立公众号
  • 湘潭建设网站公司群辉wordpress语言
  • 试述建设一个网站的具体步骤厦门思总建设有限公司网站
  • 有搜索引擎作弊的网站台州城乡建设局网站
  • 免费网站的资源可以发公众号吗个人邮箱登录登录入口
  • 做搞机网站咖啡网站设计
  • .net 网站开发视频教程wordpress经典编辑器没有
  • 翻墙国外网站做兼职文化类网站是不是休闲娱乐类网站
  • 婚纱网站建设 最开始自动化系统网站建设首选公司
  • 广州公司网站制作费用公司做网站需要服务器吗
  • 政务公开和网站建设情况搜索引擎优化排名技巧
  • 南宁网站建设产品网站排名下降
  • 局域网建设网站视频教程江苏省招投标办法建设厅网站
  • 个人网站设计提纲网络传媒公司怎么运营
  • 蛋糕网站建设的目的整合营销沟通的目的是
  • 购物网站seo搜索引擎前期分析wordpress双栏极简
  • wordpress后台上不去seo外包优化公司
  • 开公司怎么做网站网站建设工作总结报告
  • 郑州网站建设html5设计教育网站
  • 做网站用虚拟主机怎么样空间站 对接
  • 南京房产网站建设公众号开发百修网
  • 北京备案网站网站建设与代运营产品介绍