面试中经常会被问到js性能的一些问题:
比如:最直接的就是js怎么进行优化;还有就是js怎么处理大批量数据;用户交互卡顿怎么处理;等等
下面总结了一些方法,有问题请 ✋^ _ ^
由于JS是一种解释型语言,执行速度要比编译型语言慢得多。( Chrome将JS编译成本地代码的浏览器,其它浏览器也陆续实现了JS的编译过程。但是,即使到了编译执行JS的新阶段,仍然会存在低效率的代码。)
加载资源
1)阻塞式脚本:合并文件(减少http请求),将script标签放在body尾部(减少页面css,html的下载阻塞,减少界面的空白时间(避免浏览器在解析到script标签之前,不会渲染页面的任何部分)
目前流行的打包,合并文件的构建工具,如webpack,gulp等
2)无阻塞式脚本:延迟脚本和动态脚本均不阻塞,即下载过程不阻塞其他进程
延迟脚本:
defer和async属性:都是并行下载,下载过程不阻塞,区别在于执行时机,async是下载完成后立即执行;defer是等页面加载完成后再执行。defer仅当src属性声明时才生效(HTML5的规范)
动态脚本:
动态添加script标签,返回的代码通常会立刻执行,所以,为了确保脚本下载完成且准备就绪后才执行,须侦听load事件。将script添加到head中比添加到body中更保险。
在vue中,需要preload资源
在vue.config.js中设置
chainWebpack: (co