首页 > 其他分享 >使用React+SpringBoot开发一个协同编辑的表格文档

使用React+SpringBoot开发一个协同编辑的表格文档

时间:2023-11-29 10:06:55浏览次数:58  
标签:协同 websocket SpringBoot 表格 前端 React 文档 组件 封装

本文由葡萄城技术团队发布。转载请注明出处:[葡萄城官网],葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。

前言

随着云计算和团队协作的兴起,协同编辑成为了许多企业和组织中必不可少的需求。通过协同编辑,多个用户可以同时对同一个文档进行编辑和更新,从而提高工作效率和协作能力。本文小编就将为大家介绍如何使用React+SpringBoot简单的开发一个协同编辑的表格文档。

环境准备

用到的开发工具:

前端开发工具:VSCode

后端开发工具:IDEA

用到的组件:

葡萄城公司前端表格控件[SpreadJSV14.0.0]和[SpreadJS在线表格编辑器react组件版]

葡萄城公司服务端表格组件[GrapeCity Documents for Excel]

实现步骤

1.搭建前端项目

首先,前端新建react项目,并按照下面图所示引入SpreadJS以及设计器组件版的相关引用。

然后,集成在线表格编辑器react组件版。

这样前端的准备工作就完成了。

2.搭建后端项目

后端的准备工作,首先安装gradle作为包管理器。当然,这里也可以用其他工具来代替,例如maven,或者源生引入jar包的方式将需要用到的jar包引入进来。然后创建springboot工程配合搭建gradle引用GCExcel以及后面协同需要用到的websocket。

这样后端的准备工作也完成了。

3.核心代码的构建

3.1前端代码

**首先是前端,**既然要做协同,那么首先就要搭建websocket。

在react中使用websocket不需要引入其他库,只需要创建一个公共组件,封装一下websocket,接下来我们需要监听前端发出的操作。这里因为在线表格编辑器本身将所有用户可能做的操作全部做了封装,所以省下了很多的功夫。

然后对命令再做一些简单封装:

紧接着将封装过的命令发到服务端,之后通过websocket发同步指令:

当协同端通过websocket接收到请求的时候,通过onmessage方法做同步命令,这里在协同端执行command之前需要先撤销之前的监听,避免再发送websocket导致死循环。在执行之后,再次添加监听。

3.2后端代码

这样前端的核心内容就介绍完了,目前前端这样做已经能做基本的协同操作了。

接下来是后端的相关核心代码:

首先,后端搭建对应的websocket:

之后设置websocket的过期时间,当session关闭后5分钟停止给该端口发送websocket请求:

3.3前后端交互

前端发送请求至后端:

后端接收请求后,根据请求在后端重写对应的实现,demo中走了封装使得结构上更加合理,方便重写:

然后在后端GCExcel中加载同一个文档并执行上述操作:

总结

​ 使用SpreadJS+GcExcel开发一个协同编辑的表格文档,可以实现多人同时编辑、即时保存和实时更新的功能。通过这种方式,可以提高团队协作效率,确保数据的准确性和一致性。同时,SpreadJS和GcExcel提供了丰富的API和功能,可以满足各种复杂的表格需求,为用户提供良好的使用体验。总的来说,这种开发方式能够为企业带来更高的工作效率和更好的用户体验。

扩展链接:

Redis从入门到实践

一节课带你搞懂数据库事务!

Chrome开发者工具使用教程

[从表单驱动到模型驱动,解读低代码开发平台的发展趋势]

[低代码开发平台是什么?]

[基于分支的版本管理,帮助低代码从项目交付走向定制化产品开发]

标签:协同,websocket,SpringBoot,表格,前端,React,文档,组件,封装
From: https://blog.51cto.com/powertoolsteam/8609764

相关文章

  • springboot集成mybatis-plus
    集成mybatis-plus转载自:www.javaman.cn1、添加pom.xml<!--mp逆向工程--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>com.baomid......
  • 使用React+SpringBoot开发一个协同编辑的表格文档
    本文由葡萄城技术团队发布。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。前言随着云计算和团队协作的兴起,协同编辑成为了许多企业和组织中必不可少的需求。通过协同编辑,多个用户可以同时对同一个文档进行编辑和更新,从而提高工作效......
  • SpringBoot 文件上传及回显
    文件上传/回显SpringBoot默认tomcat上传文件大小问题(默认大小不能超过1MB)/***文件上传**@paramfile*@throwsIOException*/@PostMapping("upload")@ApiOperation("文件上传")publicvoidupload(@RequestParam("file")P......
  • 百度文库文档下载
    转自up主黄大司https://www.bilibili.com/video/BV1G3411L7jQ/?spm_id_from=333.337.search-card.all.click&vd_source=e265d8ea3fdaf4527725d5b410a0de3b转自up主蔡小硕丶https://www.bilibili.com/video/BV15B4y187Hn/?spm_id_from=333.337.search-card.all.click&vd_source=......
  • C:\Users\17482\Desktop\ERP——test1\SpringBoot-ERP-master\src\main\java
    这个错误表明在你的Java类文件UserImp.java中,找不到MyBatis的注解包org.apache.ibatis.annotations。这个包中包含了MyBatis的注解,比如@Select、@Insert等。首先,请确保你的项目正确引入了MyBatis的依赖。在你的pom.xml文件中应该包含类似以下的依赖配置:<dependency......
  • springboot 自定义响应体大小测试接口
    @ResponseBody@RequestMapping("/def/response/body/service")publicStringBuilderdefResponseBodyService(@RequestParam(name="count")Integercount,HttpServletRequestHttpRequest)throwsInterruptedException{  StringbaseStr="0......
  • 基于springboot的课程作业管理系统-计算机毕业设计源码+LW文档
    一、 研究目的和意义当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能......
  • 基于springboot的社区团购系统-计算机毕业设计源码+LW文档
    1、立论依据(课题来源、选题依据和背景情况、课题研究目的、理论意义和实际应用价值)(1)课题来源、选题依据和背景情况 本课题来自于自拟项目。 近年来,全球经济的高速发展,在一定程度上,促进了互联网技术的发展,信息化管理行业在生活中占据着越来越重要的地位,使得人们的生活方式发......
  • 只需根据接口文档,就能轻松开发 get 和 post 请求的脚本,你会做吗?
     一般的接口文档描述的内容:开发get请求的脚本,接口文档的描述如下:在loadrunner里面创建一个空脚本:在action空白处,点击insert—>step输入web_custom_request,双击选择该函数,填入如下几个参数值:生成的脚本如下:运行编译,看有没有语法错误:在日志里面看到返回了cod......
  • SpringBoot-跨域问题
    SpringBoot解决跨域问题为什么会出现跨域问题什么是跨域跨域:指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。例如:a页面想获取b页面资源,如果a、b页面的协议、域名、端口、子域名不同,所进行的访问行动都是跨域的,而浏览......