当前位置: 华文头条 > 健身

为何强烈推荐 Spread Grid 创建高性能 JS 网格应用?

2024-07-10健身

大家好,很高兴又见面了,我是" 高级前端‬进阶 ‬",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!

什么是 Spread Grid

JS library for creating high-performance grid-based applications

Spread Grid 是一个 JavaScript 库,可让开发者轻松创建高性能、可定制且深度交互的基于网格的应用程序和可视化。

Spread Grid 的主要目标是效率、功能和性能,因此不一定适用于视觉丰富且面向设计的应用程序。原则上,其不提供其他库可能提供的一些花哨功能,例如:动画和过渡,这些功能是为了速度和性能而牺牲的。该框架的理想用例是创建数据密集型工具,帮助用户在实时系统中监控和处理大量数据。

Spread Grid 的主要功能包括:

  • 快速网格渲染、单元格样式
  • 支持选择、多单元格复制
  • 列和行大小调整、网格内编辑
  • 数据排序和过滤、列和行固定
  • 基于鼠标的网格交互,可轻松识别单元格
  • 目前 Spread Grid 在 Github 通过 MIT 协议开源,是一个值得关注的前端开源项目。

    如何使用 Spread Grid

    对于 React 应用程序,建议通过 npm 安装库。

    npm install react-spread-grid

    其会将库添加到 package.json 文件中,并通过 react-spread-grid 模块使其可用。如果是 Vanilla javascript,开发者可以直接从 CDN 包含库。

    https://unpkg.com/js-spread-grid@latest/dist/index.js

    下面可以看到如何使用 SpreadGrid 组件创建网格的简单示例:

    import React from 'react';import ReactDOM from 'react-dom/client';import SpreadGrid from 'react-spread-grid';const root = ReactDOM.createRoot(document.getElementById('root'));root.render( <SpreadGrid data={[ {name: 'John', age: 25, score: 100, registered: true, team: 'red'}, {name: 'Alice', age: 24, score: 70, registered: false, team: 'blue'}, {name: 'Bob', age: 26, score: 35, registered: true, team: 'blue'}, {name: 'Charlie', age: 27, score: 60, registered: false, team: 'red'}, {name: 'David', age: 18, score: 60, registered: true, team: 'red'}, {name: 'Eve', age: 29, score: 80, registered: false, team: 'green'}, {name: 'Frank', age: 30, score: 50, registered: true, team: 'blue'} ]} />);

    Spread Grid 会根据提供的数据自动检测列和行,其还带有一组默认的行为和功能,例如:标题生成、单元格选择和复制、列大小调整和排序等等。

    开发者还可以使用格式规则中的 text 属性来定义单元格的文本内容。其可以是静态字符串,也可以是基于单元格上下文动态生成文本的函数。

    当 text 属性是函数时,其接受包含以下属性的上下文对象:{data、rows、columns、row、column、value、newValue、text}。newValue 属性仅在单元格被编辑后可用。

    如果单元格已被编辑,则 text 属性的默认值为 ${newValue},否则为 ${value}。值得一提的是,开发者可以在文本中使用 unicode 字符(例如 「 ✓ 」)作为图标。

    <SpreadGrid // data 为网格数据 data={[ {name: 'John', age: 25, score: 100, registered: true, team: 'red'}, {name: 'Alice', age: 24, score: 70, registered: false, team: 'blue'}, {name: 'Bob', age: 26, score: 35, registered: true, team: 'blue'}, {name: 'Charlie', age: 27, score: 60, registered: false, team: 'red'}, {name: 'David', age: 18, score: 60, registered: true, team: 'red'}, {name: 'Eve', age: 29, score: 80, registered: false, team: 'green'}, {name: 'Frank', age: 30, score: 50, registered: true, team: 'blue'} ]} // 通过format 格式化文本 formatting={[ { column: {id: 'score'}, text: ({value}) => `${value}%` }, { column: {id: 'registered'}, text: '' }, { column: {id: 'registered'}, condition: ({value}) => value, text: ' ✓ ' } ]}/>

    更多关于 Spread Grid 的用法和示例可以参考文末资料,本文不再过多展开。

    参考资料

    https://github.com/TomaszRewak/js-spread-grid

    https://developer.mescius.com/spreadjs

    https://spread-grid.tomasz-rewak.com/error-handling/error-overlay