由于设计变更,需要把数据由分页展示改为全部展示(才3500条数据),结果chrome浏览器页面卡顿,火狐浏览器直接卡死!
console.time分析之后,竟然是bootstrap-table插件的坑
主要是2个问题:
1. 使用了 this.$body[0].html(html.join('')) 来替换table加载内容.(平均耗时900ms) 【】
改为原生方法: this.$body[0].innerHTML = html.join(''); (改完后耗时250ms)
[ps] IE9及以下的浏览器中,innerHTML只读
2. 绑定事件代码是先查询所有元素再进行的绑定:this.$body.find('> tr[data-index] > td').off('change').on('change', ... (平均耗时200ms)
改为直接对 this.$body的父元素 绑定: this.$container.off('click dblclick').on('click dblclick', ' tr[data-index] > td', ... (改完后耗时25ms)