前端优化之关于编写代码时候的一些优化技巧

除了减少HTTP请求次数和大小可以优化性能,我们在编写代码的时候,也可以进行一些优化,让页面的性能有所提升(有些不好的代码编写习惯,会导致页面性能消耗太大,例如:内存泄漏)


1、在编写JS代码的时候,尽量减少对DOM的操作(VUE和REACT框架在这方面处理的非常不错)

在JS中操作DOM是一个非常消耗性能的事情,但是我们又不可避免的操作DOM,我们只能尽量减少对于它的操作
[操作DOM弊端] 
1)DOM存在映射机制(JS中的DOM元素对象和页面中的DOM结构是存在映射机制的,一改则都改),这种映射机制,
   是浏览器按照W3C标准完成对JS语言的构建和DOM的构建(其实就是构建了一个监听机制),操作DOM是同时要修改两个地方,
   相对于一些其它的JS编程来说是消耗性能的 
2)页面中的DOM结构改变或者样式改变,会触发浏览器的回流(浏览器会把DOM结构重新进行计算,这个操作很耗性能)和重绘
  (把一个元素的样式重新渲染) 
…


2、编写代码的时候,更多的使用异步编程

同步编程会导致:上面东西完不成,下面任务也做不了,我们开发的时候,可以把某一个区域模块都设置为异步编程,
这样只要模块之间没有必然的先后顺序,都可以独立进行加载,不会受到上面模块的堵塞影响(用的不多)

尤其是AJAX数据请求,我们一般都要使用异步编程,最好是基于promise设计模式进行管理(项目中经常使用 fetch、vue axios 
等插件来进行AJAX请求处理,因为这些插件中就是基于promise设计模式对ajax进行的封装处理)


3、在真实项目中,我们尽可能避免一次性循环过多数据(因为循环操作是同步编程),尤其是要避免while导致的死循环操作


4、CSS选择器优化

1)尽量减少标签选择器的使用 
2)尽可能少使用ID选择器,多使用样式类选择器(通用性强) 
3)减少选择器前面的前缀,例如:.headerBox .nav .left a{ } (选择器是从右向左查找的) 
…


5、避免使用CSS表达式

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


6、减少页面中的冗余代码,尽可能提高方法的重复使用率:“低耦合高内聚”


7、最好CSS放在HEAD中,JS放在BODY尾部,让页面加载的时候,先加载CSS,在加载JS(先呈现页面,在给用户提供操作)


8、JS中避免使用eval

1)性能消耗大 
2)代码压缩后,容易出现代码执行错乱问题


9、JS中尽量减少闭包的使用

1)闭包会形成一个不销毁的栈内存,过多的栈内存累积会影响页面的性能 
2)还会容易导致内存的泄漏

闭包也有自己的优势:保存和保护,我们只能尽量减少,但是无可避免


10、在做DOM事件绑定的时候,尽量避免一个个的事件绑定,而是采用性能更高的事件委托来实现

事件委托(事件代理) 
把事件绑定给外层容器,当里面的后代元素相关行为被触发,外层容器绑定的方法也会被触发执行(冒泡传播机制导致),
通过事件源是谁,我们做不同的操作即可


11、尽量使用CSS3动画代替JS动画,因为CSS3的动画或者变形都开启了硬件加速,性能比JS动画好


12、编写JS代码的时候尽可能使用设计模式来构建体系,方便后期的维护,也提高了扩充性等


13、CSS中减少对滤镜的使用,页面中也减少对于FLASH的使用