性能优化与调试技巧

126 阅读3分钟

小声嘀咕:其实在没有接触这青训营的课之前,并没有想过JS的代码是可以进行优化的(本质应该是对JS引擎不熟悉,还是小白一个大哭),所以在在看这节课的时候真的目瞪口呆,但是又云里雾里(原谅我是真的想去理解),总的来说了解这方面的知识还是很有必要的(叉腰)

为什么要优化JS代码

我们都知道,当我们打开一个网页时,如果时间很久都没有显示出来,我们的第一反应一定是退出不看了。据研究显示,加载时间每多一秒,你就会流失7%的用户,在正常页面的情况下,若页面加载时间超过8秒时间,那么你可能损失85%以上的用户。

用户都不愿意打开你的网页,那你的页面再炫酷精彩不就白费了吗?这样看来是不是优化代码,提高代码质量是不是比写代码更为重要,更为关键?

怎么优化JS代码

这其实应该从两个大方面出发,分为软件和硬件

硬件的话我们这里就提一嘴,详细的就自行去了解啦。我这里就引入别处的一句话:设置负载均衡服务器,通过负载均衡服务器使得后台数据压力平衡; 增加带宽,但是硬件的成本 远远高于软件的优化

软件优化分为四个方面:

  • html优化:
    1. 布局优化
    2. 减少空格
    3. 不用table布局
    4. 尽量不用iframe标签
    5. html优化尽量减少需要发送的http请求
  • css优化:
    1. 可以用css实现的尽量不用js实现
    2. css代码压缩;css合并
    3. 用户字体图标代替图片
    4. 开启css硬件加速
    5. transform动画由GPU控制,支持硬件加速,并不需要软件方面的渲染
    6. 使用top和left实现动画时浏览器发生的repaint
  • js优化(重要):
    1. 图片优化(预加载,懒加载,延时加载),视频或音频不加载,当点击之后开始单独加载视频或音频
    2. 在js中尽量减少闭包的使用(原因是闭包会产生不释放的栈内存),DOM的操作其实css压缩与js的压缩和混乱比html压缩收益要大得多,同时css代码和js代码比html代码多得多,通过css压缩和js压缩带来流量的减少,会非常明显
  • 缓存方面:使用浏览器的缓存机制,不需要每次登录或者怎样都需要再去访问服务器,利用浏览器和服务器端的缓存技术(304缓存),把一些不经常更新的静态资源文件做缓存处理

好的JS代码怎么写

三大原则:各司其职、组件封装、过程抽象

各司其职:HTML负责结构,CSS负责样式,JS负责行为,应当避免不必要的行为由JS控制,状态的改变可以用class来封装,展示类交互应当寻求零JS方案

组件封装:组件是指Web抽出来的一个一个的包含模板、样式、功能单元,应具有封装性、准确性、扩展性、复用性;需要进行结构设计、展现效果、行为设计,最终达到三次重构(插件化、模板化、抽象化)

过程抽象:用来处理局部细节来控制的一些方法处理,函数式编程思想的基础应用