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

前有科技后进阶 2024-07-13 15:19:01

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

什么是 Spread GridJS 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

1 阅读:156

前有科技后进阶

简介:感谢大家的关注