javascript – 使用Aurelia有效地呈现大数据表

前端之家收集整理的这篇文章主要介绍了javascript – 使用Aurelia有效地呈现大数据表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当使用Aurelia渲染大数据表时,我正在努力处理性能.

即使在中等大小的桌子(20×20)的情况下,我的Chrome不会低于200ms,MS Edge需要大约800ms,IE11需要〜2秒. 200ms也是一个问题,如果你想添加(虚拟)滚动.处理时间随每个表格单元格的绑定数量增加.我已经组合了一个(example),绑定’css’,’class’,当然还有单元格的内容.

<table class="table">
  <tbody>
    <tr repeat.for="row of rows">
      <td repeat.for="column of columns" css.bind="getCellStyle(column,$parent.$first)" class.bind="getCellClasses(column,row)">
        <template replaceable part="cell-template">
          <span>${getCellText(column,row)}</span>
        </template>
      </td>
    </tr>
  </tbody>
</table>

任何想法如何可以提高性能

基于初始建议,我试图避免嵌套的重复,但是在我的情况下这是不可能的,因为列和行都是动态的.

解决方法

很好的问题,这是我们最近一直专注的.

首先,当涉及到大量数据时,避免嵌套重复.我们正在为这种情况进行性能改进,这将通过展开模板来显着改善这种情况,但尚未准备发布.

其次,尽可能使用一次性绑定.这将消除任何属性观察和阵列突变观察开销.

<table class="table">
  <tbody>
    <tr repeat.for="row of rows & oneTime">
      <td repeat.for="column of columns & oneTime" css.one-time="getCellStyle(column,$parent.$first)" class.one-time="getCellClasses(column,row)">
        <span>${getCellText(column,row) & oneTime}</span>
      </td>
    </tr>
  </tbody>
</table>

12/13/2015编辑

即将发布的版本有两个变化,将大型网格的渲染时间缩短到一半甚至更少.其中一个改变提高了单向绑定的效率(迄今为止最常用的绑定模式),另一个则延迟了一些绑定工作,直到初始呈现完成为止.这将使得使用oneTime和oneWay在初始渲染方面一样快.更多关于这些改进的信息:http://blog.durandal.io/2015/12/04/aurelia-repaint-performance-rules/

演示:http://jdanyow.github.io/aurelia-dbmonster/

猜你在找的JavaScript相关文章