前端性能优化:代码优化
在前端性能优化中,代码优化是核心环节之一。通过合理的代码重构和优化策略,可以显著提升页面加载速度和用户体验。
1. 避免阻塞渲染的JavaScript
问题分析:大量同步执行的JavaScript会阻塞DOM解析和渲染,导致页面卡顿。
优化方案:将非关键脚本设置为异步加载
// 优化前
<script src="heavy-script.js"></script>
// 优化后
<script src="heavy-script.js" async></script>
// 或者使用动态导入
import('./heavy-script.js').then(module => {
// 执行代码
});
2. 图片懒加载优化
问题分析:所有图片同时加载会增加初始页面负担。
优化方案:实现Intersection Observer API进行懒加载
const imageObserver = new IntersectionObserver((entries, observer) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const img = entry.target;
img.src = img.dataset.src;
observer.unobserve(img);
}
});
});
document.querySelectorAll('img[data-src]').forEach(img => {
imageObserver.observe(img);
});
3. 减少重排和重绘
问题分析:频繁的DOM操作会导致浏览器频繁进行重排重绘。
优化方案:批量更新DOM,使用DocumentFragment
// 优化前
const container = document.getElementById('container');
for (let i = 0; i < 1000; i++) {
const div = document.createElement('div');
div.textContent = `Item ${i}`;
container.appendChild(div);
}
// 优化后
const fragment = document.createDocumentFragment();
for (let i = 0; i < 1000; i++) {
const div = document.createElement('div');
div.textContent = `Item ${i}`;
fragment.appendChild(div);
}
container.appendChild(fragment);
优化效果对比
| 指标 | 优化前 | 优化后 | 改善幅度 |
|---|---|---|---|
| 首次内容绘制(FCP) | 3.2s | 1.8s | -44% |
| 页面加载时间(LCP) | 5.1s | 2.9s | -43% |
| 总阻塞时间(TBT) | 2800ms | 800ms | -71% |
通过以上代码优化策略,页面性能得到显著提升,Lighthouse评分从65分提升至92分。

讨论