Timeless
花开成景,花落成诗
对DOM进行访问、操作一般会很频繁,所以对此进行优化就显得很重要。
在JS中对DOM进行访问的代价很高,建议用变量缓存DOM属性和元素
重排:元素布局发生修改
重绘:元素的视觉表现属性的修改
不论是重排还是重绘,都会阻塞浏览器。要提高性能,就要降低重排和重绘的频率和成本,近可能少地触发重新渲染。
CSS Triggers List - What Kind of Changes You Can Make 列举了CSS属性在不同的渲染引擎中是否会触发重排或重绘

优化策略:
影响DOM渲染、查找DOM节点的时间

防抖:在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。
使用场景:
节流:规定在一个单位时间内,只能触发一次函数。如果这个单位时间内触发多次函数,只有一次生效。
使用场景:
在单页应用的设计中,用户使用它时是不需要刷新浏览器的,所以 JavaScript 应用需要自行清理组件来确保垃圾回收以预期的方式生效。
因此,我们在 v-if 从 DOM 中移除元素,或者路由到不同的组件时,需要考虑解绑事件和销毁实例。
export default {
mounted() {
// 函数消抖
this.__resizeHandler = debounce(() => {
this.chartInstance?.resize()
this.handleResize && this.handleResize()
}, 100)
window.addEventListener('resize', this.__resizeHandler)
},
beforeDestroy() {
window.removeEventListener('resize', this.__resizeHandler)
}
} Power by Node.js + Nuxt.js,由 腾讯云提供服务, 已经稳稳地存活了 8年95天
Copyright © 2018 - 2026 Timeless. All rights reserved.桂ICP备18003656号-1桂公网安备45092102000147号
评论