前端代码优化小技巧

简介: 今天分享一下开测前端代码的一些优化,及使用的一些小技巧,来优化我们的网站,前端开发中最常见的问题就是很少使用ES6方法导致代码冗余,不够清晰,定时器和闭包导致内存溢出及泄露,网站中css导致排版错乱,请求图片过多,导致网站加载缓慢,网站中兼容各种浏览器的问题。

导读

今天分享一下开测前端代码的一些优化,及使用的一些小技巧,来优化我们的网站,前端开发中最常见的问题就是很少使用ES6方法导致代码冗余,不够清晰,定时器和闭包导致内存溢出及泄露,网站中css导致排版错乱,请求图片过多,导致网站加载缓慢,网站中兼容各种浏览器的问题。

ES6语法和JS优化技巧


逻辑与运算

if() else() 可以简化为 flag==1?true:false

includes 处理多重条件

if(code==='202' || code === '203' || code === '204') 可以简化为if(['202','203','204'].includes(code))

map的使用

var arr=['1','2','3'];

假如我们有一个需要把这些数据都转为Number类型呢?是不是第一时间想到了for循环,其实还有更简单的方法。

arr=arr.map((v)=>Number(v));

var str=[['1','2'],['2','3']];

every:"一假则假"

注意哦 every不会对空数组进行检测

arr.every((currentValue,index,array)=>{   //适合用于全选
   // currentValue = 当前执行元素
   // index = 当前索引值
   // array = 执行的数组
})
arr.some((currentValue,index,array)=>{
   // currentValue = 当前执行元素
   // index = 当前索引值
   // array = 执行的数组
})
arr.filter((currentValue,index,array)=>{
    // currentValue = 当前执行元素
    // index = 当前索引值
    // array = 执行的数组
})

1.闭包会形成一个不销毁的栈内存,过多的栈内存累积会影响页面的性能。

使用定时器注意的问题

如果针对的是不断运行的代码,不应该使用setTimeout,而应该使用setInterval,因为setTimeout每一次都会初始化一个定时器,setInterval只会在开始的时候初始化一个定时器。

网页中CSS使用技巧

采用CSS雪碧图(CSS Sprit / CSS 图片精灵)技术,把一些小图合并在一张大图上,使用的时候通过背景图片定位,比如我们的icon图标可以汇总为一张图片。

.main{
     background:url('../img/sprit.png') no-repeat;
     background-size:x y; /*和原图的大小保持一致*/
}
.box{
     background-position:x y; /*通过背景定位,定位到具体的位置,展示不同的图片即可*/
}

避免使用CSS表达式

/*CSS表达式*/
.box{
    background-color:expression((new Date()).getHours()%2?'red':'blue')
}

避免图片有空的 src 属性

在有些浏览器下,图片空的 src 属性也是会向服务端发送请求的,这些无意义的请求是会增加服务器的压力的。

使用预加载:预加载和延迟加载看似相反,其实它们有两个不同的目的,延迟加载是为了更快的完成页面的加载,而预加载是指提前将页面需要的组件下载下来并缓存,减少页面的响应时间。

尽可能使用CSS动画

避免css的重绘重排

1.重绘(Repaint)

重绘是一个元素外观的改变所触发的浏览器行为,例如改变outline、背景色等属性。浏览器会根据元素的新属性重新绘制,使元素呈现新的外观。重绘不会带来重新布局,所以并不一定伴随重排。

2.重排(Reflow)

渲染对象在创建完成并添加到渲染树时,并不包含位置和大小信息。计算这些值的过程称为布局或重排。

网站中一些兼容优化

1.获取滚动条的兼容

var scrollTop = document.documentElement.scrollTop || document.scrollTop

2.阻止浏览器默认行为兼容

preventDefault : function(event) {
if(event.preventDefault) {
      event.preventDefault()
}else {
      event.returnValue = false
    }
}

3.阻止事件冒泡的兼容

stopPropagation : function(event) {
if(event.stopPropagation) {
   event.stopPropagation()
}else {
   event.canceBubble = true
}
}
相关文章
|
7月前
|
前端开发 Java C++
每个前端都应该掌握的7个代码优化的小技巧
每个前端都应该掌握的7个代码优化的小技巧
116 0
|
前端开发
前端页面调试小技巧(谷歌浏览器)
前端页面调试小技巧(谷歌浏览器)
72 0
|
XML 前端开发 测试技术
【前端小技巧】如何使用 Eolink Apilkit 调用 Mock ?
在开发过程中,进度比较赶的情况下,前端人员当页面写完时,后台的接口还没写完,等要交付的时候后端才把接口给你,这个时候就很尴尬。 这个时候 Mock 就可以很好的解决这个问题,前端团队可以在 API 还没开发完成的情况下,借助 Mock API 实现预对接,加速开发进程。测试团队可以通过 Mock API 解决不必要的系统,完成集成测试。 Eolink Apikit 为前端工程师提供 API 文档管理,快速接口测试,以及 Mock API 创建与调用,及查看文档变更历史的能力。有助于前端工程师快速查看 API 文档详情与历史记录,快速生成和使用 Mock API 提前进行页面效果验证。
79 0
|
8天前
|
缓存 监控 前端开发
基于 CoffeeScript 的内网管理监控软件前端代码优化
本文探讨了基于CoffeeScript的内网管理监控软件前端代码优化方法,包括数据请求缓存、界面更新采用虚拟DOM技术以及增强错误处理机制,旨在提升软件性能、响应速度和用户体验。
22 4
|
1月前
|
前端开发 JavaScript UED
"前端小技巧大揭秘:JS如何将后台时间戳秒变亲切小时前、分钟前,让用户秒懂,提升互动体验!"
【10月更文挑战第23天】在Web开发中,将后台返回的时间戳转换为“小时前”、“分钟前”、“刚刚”等友好的时间描述是常见需求。本文介绍如何用JavaScript实现这一功能,通过计算当前时间和时间戳的差值,返回相应的描述,提升用户体验。
31 1
|
7月前
|
前端开发 JavaScript API
前端代码优化方法
前端代码优化方法
89 0
|
前端开发 vr&ar
【前端验证】fork-join_none线程立即执行的一次代码优化记录
【前端验证】fork-join_none线程立即执行的一次代码优化记录
|
前端开发
项目实战14—前端代码优化
项目实战14—前端代码优化
78 0
|
前端开发 Shell Linux
【前端】React 组件调试小技巧
【前端】React 组件调试小技巧
251 0