Grid.js - 跨框架的前端表格插件

news2024/12/26 20:44:11

只想简简单单画个表格,但 React,Vue,Angular,…,这么多前端框架,各自都有不同的表格渲染库。就没有表格库能“一次画表,到处运行”吗?来看看 Grid.js 这个跨框架的前端表格插件吧!

简介
Grid.js,是 Github 上 grid-js 组织开源的前端表格插件,代码仓库在 
https://github.com/grid-js/gridjs,目前版本为 1.4.2。Grid.js 的标语是

A table library that works everywhere

也即是一个可以到处运行的表格库。Grid.js 没有第三方依赖锁定,其唯一的外部依赖已经被打包在内,意味着它能在所有的前端框架,包括没有框架的情况下使用。

Grid.js 使用 TypeScript 开发,大小仅为 12KB,支持所有现代浏览器,并利用内部管线技术获得了高速性能。

 

Grid.js表格插件

安装

在 Node.js 环境使用 Grid.js,可使用 npm 进行安装:

npm install gridjs --save

 使用时需要导入 Javascript 和 CSS 文件:
 

import { Grid } from "gridjs";
import "gridjs/dist/theme/mermaid.css";

而在浏览器环境中使用时,可以直接引用 CDN 使用:

<script src="https://unpkg.com/gridjs/dist/gridjs.production.min.js"></script>
<link href="https://unpkg.com/gridjs/dist/theme/mermaid.min.css" rel="stylesheet" />

示例

使用 Grid.js 时,需要一个 div 元素的 wrapper,然后创建一个 Grid.js 的 Grid 实例,定义表格的配置参数,最后调用 render 方法,完成渲染。

一个使用浏览器的例子如下:

<!DOCTYPE html>
<html lang="en">
  <head>
    <link
      href="https://unpkg.com/gridjs/dist/theme/mermaid.min.css"
      rel="stylesheet"
    />
  </head>
  <body>
    <div id="wrapper"></div>
    <script src="https://unpkg.com/gridjs/dist/gridjs.production.min.js"></script>
    <script>
      new gridjs.Grid({
        columns: ["Name", "Email", "Phone Number"],
        data: [
          ["John", "john@example.com", "(353) 01 222 3333"],
          ["Mark", "mark@gmail.com", "(01) 22 888 4444"],
          ["Eoin", "eoin@gmail.com", "0097 22 654 00033"],
          ["Sarah", "sarahcdd@gmail.com", "+322 876 1233"],
          ["Afshin", "afshin@mail.com", "(353) 22 87 8356"]
        ]
      }).render(document.getElementById("wrapper"));
    </script>
  </body>
</html>

可以看到,gridjs.Grid 使用了参数 columns 来定义列,以及 data 来添加各行的数据。类似的,Grid.js 在 React 中的例子如下:

import { Grid } from "gridjs";
import "gridjs/dist/theme/mermaid.css";
function helloWorld () {
  const grid = new Grid({
    columns: ['Name', 'Email', 'Phone Number'],
    data: [
      ['John', 'john@example.com', '(353) 01 222 3333'],
      ['Mark', 'mark@gmail.com',   '(01) 22 888 4444']
    ]
  });
  
  useEffect(() => {
    grid.render(document.getElementById('wrapper'));
  });
  
  return (
    <div id="wrapper" />
  );
}

不难看出,Grid.js 的使用方法是一致的,两份代码都渲染出了美观的表格。

Grid.js表格示例

Grid.js的设计十分简洁,主要参数包括:

  • data:类型为 T[][] 或 Function,表格每行的数据。data 可以是一个包含各个单元格数据的二维数组,也可以是一个返回可解析为二维数组的函数,以实现异步加载(Promise)和动态加载。
  • from:类型为 HTMLElement,已有的 HTML 表格元素。Grid.js 可以从一个现有的 HTML 的 form 元素生成一个 Grid 表格,添加样式和其他功能。
  • server:远程数据加载。server 是一个包含 url,以及可选的 then 和 opts 的对象,可以根据从 url获取的远程数据渲染表格。
// 使用server参数进行远程数据加载
const grid = new Grid({
  columns: ['Title', 'Director', 'Producer'],
  server: {
    url: 'https://swapi.dev/api/films/',
    then: data => data.results.map(movie => [movie.title, movie.director, movie.producer])
  }
});
  • columns:类型为string[] 或 TColumn[],表格的列定义。TColumn 类型包括名字、宽度、排序和格式器属性,方便对各列进行定制配置。

  • search:搜索功能配置,可以实现简单的客户端关键字搜索,或利用 search.server 配置实现服务器端搜索。

 

Grid.js搜索

  • pagination:分页功能配置,可以实现客户端或服务端的分页功能。

 

 

Grid.js分页

总结
Grid.js 作为一个跨框架的前端表格插件,在各个前端框架中都能使用相同的 API 完成表格的定义和渲染,降低了使用不同框架时的学习成本,避免了各种不同依赖所带来的问题。

同时,Grid.js 作为一个功能丰富的插件,提供了主流表格插件的大部分功能;且设计简洁,性能优越,在一些定制化要求不高的表格应用场景中具有很大的优势。

Grid.js 目前正处在积极开发的阶段,版本号更新较快,有兴趣的开发者可以参与开源贡献。而作为一个 TypeScript 项目,Grid.js 代码结构清晰,值得进一步研究学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/472633.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[2021.11.9]lighteffect架构优化详细设计文档

1 lighteffect系统架构图 图1-1 整改前lighteffect系统架构图 上图为整改前lighteffect系统架构图&#xff0c;存在的问题如下&#xff1a; (1)代码bug 原因&#xff1a;由于系统中兼容了lighteffect和lighteffect2&#xff0c;写代码时只记了一个&#xff0c;出现代码bug。…

springboot服务端接口外网远程调试,并实现HTTP服务监听【内网穿透】

文章目录 前言1. 本地环境搭建1.1 环境参数1.2 搭建springboot服务项目 2. 内网穿透2.1 安装配置cpolar内网穿透2.1.1 windows系统2.1.2 linux系统 2.2 创建隧道映射本地端口2.3 测试公网地址 3. 固定公网地址3.1 保留一个二级子域名3.2 配置二级子域名3.2 测试使用固定公网地址…

LCHub:网易副总裁汪源:低代码是革命性技术,或对软件生产带来重大变革

4月25日,网易数帆推出CodeWave智能开发平台。该平台以网易自研的智能大模型为底座,以低代码为开发工具,开发者只需编写少量代码,通过自然语言描述和可视化拖拉拽即可快速开发应用。 据悉,该平台以“智能大模型和全栈低代码”为核心,延续“低门槛,高上限”的特色,实现…

【一起啃书】《机器学习》第五章 神经网络

文章目录 第五章 神经网络5.1 神经元模型5.2 感知机与多层网络5.3 误差逆传播算法5.4 全局最小与局部极小5.5 其他常见神经网络5.6 深度学习 第五章 神经网络 5.1 神经元模型 神经网络是由具有适应性简单单元组成的广泛并行互连的网络&#xff0c;它的组织能够模拟生物神经系统…

【网络安全】JWT安全漏洞

jwt安全漏洞 什么是JWTJWT验证流程漏洞介绍方法一&#xff1a;伪造JWT方法二&#xff1a;爆破密钥 什么是JWT Json Web Token(JWT) JSON Web Token&#xff08;JWT&#xff09;是一个非常轻巧的规范。这个规范允许我们使用JWT在两个组织之间传递安全可靠的信息。 JWT是一个有…

北大软件DHR产品,提供一站式、全方位的数字化人力资源管理解决方案

近年来&#xff0c;随着数字化时代的到来&#xff0c;国有企业的人力资源管理方式也需要不断地更新和升级。数字化转型已成为国企人力资源管理的新趋势&#xff0c;加快数字化转型已经成为国企提高核心竞争力的必然选择。 作为北大软件旗下的全新一代人力资源数字化产品&#…

SpringSession

session在负载均衡下丢失的原因&#xff1a; 在使用Nginx做负载均衡时候,session丢失情况,原因在于你登录了一台服务器,但是比如Nginx用的轮询策略,下次访问时候,连接的是另外一台服务器,那么就出现了Session丢失 如果Nginx的负载均衡策略是ip_hash 由于服务器的ip和端口是固…

中国社会科学院大学与美国杜兰大学金融管理硕士——只要出发就会顺利抵达彼岸

新的地方会发生新的故事&#xff0c;新的相遇会碰撞出新的火花。只要出发&#xff0c;我们就会顺利抵达我们想去的远方。就像选择在社科院杜兰大学金融管理硕士项目读研的我们&#xff0c;在这里与来自全国各地的精英同学相聚&#xff0c;共享行业前沿资讯&#xff0c;聆听名师…

【SAS应用统计分析】数据的描述性统计分析

声明&#xff1a;本文知识参考内容来自网络&#xff0c;如有侵权请联系删除。本文还参照了B站up主庄7的课程内容【公开课】数据分析与SAS【15课】 目录 实验原理 描述性统计量 1.反映数据集中趋势的特征量 2.反映数据离散程度的特征量 3.反映数据分布形状的特征量 数据的…

JavaScript经典教程(六)-- JavaScript基础 -- Array常用方法详解

187-Array常用方法详解 1、Array - 数组 &#xff08;1&#xff09;两种声明方式 1、简化 2、以对象形式声明 var a [1 , 2 , 3]; var b new Array(1 , 2 , 3);a是b的简化&#xff0c;都是对象形式&#xff0c;但没有两个一样的对象。 3、用new声明数组时&#xff0c;如…

MySQL知识学习01

1、什么是关系型数据库? 顾名思义&#xff0c;关系型数据库&#xff08;RDBMS&#xff0c;Relational Database Management System&#xff09;就是一种建立在关系模型的基础上的数据库。关系模型表明了数据库中所存储的数据之间的联系&#xff08;一对一、一对多、多对多&am…

【LeetCode:64. 最小路径和 | 暴力递归=>记忆化搜索=>动态规划 】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

【QT5:CAN卡通信的上位机-加入示波器-界面优化与修饰+解析功能编写+进阶样例(2)】

【QT5:CAN卡通信的上位机-加入示波器-界面优化与修饰解析功能编写进阶样例2】 1、概述2、实验环境3、自我总结和提升4、事先声明5、效果展示6、功能代码部分的解析1&#xff09;自定义组合功能函数2&#xff09;数据解析部分3&#xff09;示波器接收部分 7、界面修饰部分1&…

NFT Insider #93:The Sandbox启动Mega City 3土地销售,YGG​与AlphaTitans合作

引言&#xff1a;NFT Insider由NFT收藏组织WHALE Members、BeepCrypto联合出品&#xff0c;浓缩每周NFT新闻&#xff0c;为大家带来关于NFT最全面、最新鲜、最有价值的讯息。每期周报将从NFT市场数据&#xff0c;艺术新闻类&#xff0c;游戏新闻类&#xff0c;虚拟世界类&#…

一文带你了解MySQL数据库Innodb_buffer_pool_size

前言 上篇文章介绍了MySQL中的存储引擎层主要负责数据的写入和读取&#xff0c;与底层的文件进行交互。MySQL在5.5 版本以后&#xff0c;MySQL默认存储引擎为 InnoDB&#xff0c;他的主要特性有&#xff1a; DML 操作(增、删、改)遵循 ACID(事务安全表) 模型&#xff0c;支持事…

【Linux从入门到精通】Linux常用基础指令(下)

本篇文章接上篇文章&#xff08;【Linux从入门到精通】Linux常用基础指令&#xff08;上&#xff09;、【Linux从入门到精通】Linux常用基础指令&#xff08;中&#xff09;&#xff09;进行详解。本章的指令相对没有那么常用&#xff0c;难度相对适中。同时也讲述了几个热键。…

编程式导航路由跳转到当前路由(参数不变),多次执行会抛出NavigatorDuplicated的禁告错误?

重写push与replace方法 编程式导航路由跳转到当前路由&#xff08;参数不变&#xff09;&#xff0c;多次执行会抛出NavigatorDuplicated的禁告错误&#xff1f; 路由跳转有俩种形式&#xff1a;声明式导航&#xff0c;编程式导航 声明式导航没有这类问题的&#xff0c;因为…

【精华】WiderPerson数据集介绍及标签转换(YOLO格式)

文章目录 &#xff08;1&#xff09;WiderPerson数据集详情<1> 应用项目<2> 数据集地址<3> 归属单位<4> 详细介绍<5> 数据下载及格式介绍 &#xff08;2&#xff09;WiderPerson转YOLO格式<1> 文件夹结构<2> 数据可视化<3> YO…

全国计算机等级三级网络技术试卷详解(三)

请点击↑关注、收藏&#xff0c;本博客免费为你获取精彩知识分享&#xff01;有惊喜哟&#xff01;&#xff01; 1.下列关于RPR技术的描述中&#xff0c;错误的是&#xff08;&#xff09;。 A) RPR与FDDI一样使用双环结构 B) 在RPR环中&#xff0c;源节点向目的节点成功发出…

JVM(Java虚拟机)

目录 1.JVM 简介 2. JVM 运行时数据区 2.1程序计数器 2.栈 3.堆 4.方法区 3.类加载 1.loading 2.linking 1.验证 2.准备 3.解析 3.Initializing 4.双亲委派模型 5.JVM垃圾回收机制 1.劣势 2.回收什么 3.垃圾回收具体怎么回收 1.找垃圾 方法: 问题: 2.释放…