静态数据网格 - 具有搜索,分页,导出选项的10K记录

Kat*_*hir 9 javascript

测试了以下网格

  1. 数据表
  2. 角度UI网格
  3. 光滑的网格
  4. 引导

观察:

  • Datatables和Bootstrap网格非常慢
  • 光滑网格目前尚未激活
  • Angular UI网格不支持或具有所有导出选项

什么是最快的数据网格具有以下功能

  1. 搜索
  2. 分页
  3. HTML示例
  4. 导出选项 - csv,复制到剪贴板,png,word,excel,csv,png,xml

fjo*_*joe 5

我当前最喜欢的表库是Bootstrap-Table

它具有您寻找的所有功能,并且运行良好.

  1. HTML示例,搜索,分页
  2. 出口选项

要在10k +记录上实现正常的加载时间,您很可能需要使用AJAX和/或Pagination.

这是一个显示5000个结果正常工作的片段:

<html>

<head>
  <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
  <link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.11.1/bootstrap-table.min.css" rel="stylesheet" />

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.11.1/bootstrap-table.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.11.1/extensions/export/bootstrap-table-export.min.js"></script>
</head>

<body>
  <table data-toggle="table"
       data-search="true"
       data-show-refresh="true"
       data-show-toggle="true"
       data-show-columns="true"
       data-show-export="true"
       data-minimum-count-columns="2"
       data-show-pagination-switch="true"
       data-pagination="true"
       data-id-field="id"
       data-page-list="[10, 25, 50, 100, ALL]"
       data-show-footer="false"
       data-side-pagination="client"
       data-url="https://jsonplaceholder.typicode.com/photos">
    <thead>
      <tr>
        <th data-field="id">Id</th>
        <th data-field="title">Title</th>
        <th data-field="url">URL</th>
        <th data-field="thumbnailUrl">Thumbnail URL</th>
      </tr>
    </thead>
</body>

</html>
Run Code Online (Sandbox Code Playgroud)

所以这里发生了一些改善性能的事情:

  1. 由于数据更自然地流向图书馆,我们得到了一个很好的"加载......",这使得用户在内部变得温暖和挑剔.如果不仅仅是因为它正在向用户提供反馈.因此,我们愿意再等几秒钟.

  2. 我们正在从包含数据的HTML表切换到JSON对象.

当使用HTML作为数据源时,页面必须完全呈现数据的过于冗长的表示(这会阻止JavaScript表单加载).然后,库加载并开始解析此数据(5,000行X 10列= 50,000个元素).然后库必须将其逻辑应用于DOM.根据代码的编写方式,这将意味着处理所有结果3x.

要么

使用JSON(JavaScript Object Notation)时,HTML页面非常轻,因此它立即完成呈现.此外,数据采用JavaScript的本机语言,因此可直接读入JavaScript对象.该库创建一个对象并将其绑定到表的内容.这意味着需要为表添加1个对象才能开始渲染.

基本上我们正在为结果的渲染添加并行性.因此,所有3个步骤仍在发生,但在前一种情况下,每个步骤都必须等待下一步.而在后一种情况下,步骤是并行发生的.而且,因为我们觉得它在完成一行后就完成加载,所以感觉要快得多.

根据您的请求添加了导出,但实际的库错误可能是代码段工具的限制.