当前位置:网站首页>基于 Next.js实现在线Excel
基于 Next.js实现在线Excel
2022-08-04 15:02:00 【51CTO】
如果要从头开始使用 React 构建一个完整的 Web 应用程序,需要哪些步骤?
这当然不像把大象装进冰箱那么简单,只需要分成三步:打开冰箱,拿起大象,塞进冰箱就好。
我们需要考虑细节有很多,比如:
- 必须使用打包程序(例如 webpack)打包代码,并使用 Babel 等编译器进行代码转换。
- 需要针对生产环境进行优化,例如代码拆分。
- 需要对一些页面进行预先渲染以提高页面性能和 SEO,可能还希望使用服务器端渲染或客户端渲染。
- 必须编写一些服务器端代码才能将 React 应用程序连接到数据存储。
这些问题都是我们需要注意的,但是Next.js的出现,完美地解决了这些问题,用一个框架即可统统拿下。
Next.js框架具有正确的抽象级别和出色的“开发人员体验”,包括静态及服务器端融合渲染、 支持 TypeScript、智能化打包、 路由预取等功能,无需任何配置,开箱即用,这些内容让开发团队在编写代码时有“下雨天配巧克力”一般丝滑的体验。
认识 Next.js
Next.js是一款React 开发框架,它可以帮助我们构建 React 应用程序。作为一个轻量级React服务端渲染应用框架,它有许多内置功能,包括不仅限于:
- 直观的、 基于页面的路由系统(并支持动态路由)
- 预渲染——支持在页面级的 静态生成 (SSG) 和 服务器端渲染 (SSR)
- 自动代码拆分,提升页面加载速度
- 具有经过优化的预取功能的客户端路由
- 内置 CSS 和 Sass 的支持,并支持任何 CSS-in-JS 库
- 开发环境支持快速刷新
- 利用 Serverless Functions 及 API 路由 构建 API 功能
- 完全可扩展
当前,Next.js 正在被用于数以万计的的网站和 Web 应用程序,包括许多享誉世界的知名公司和头部品牌。可以说,它肉眼可见的易用性牢牢把握了用户的心,不论是对于企业用户还是小微开发者,从基础框架到发布运维,它都提供了相对应的解决方案。
接下来,我们将带大家基于Next.js实现类Excel控件的在线表格编辑的功能。
实战之旅
首先需要安装Node.js,并且Node.js版本需要高于10.13,
安装流程可以参考: https://nodejs.org/en/
安装完成后,就可以创建Next.js应用。
打开终端窗口,进入到创建应用的程序目录,然后执行以下命令:
安装完成后执行npm run dev
,如果项目能正常启动,就表示工程已经正常创建,默认创建好的工程会启动在3000端口,展示如下:
然后可以将项目pages下的index.js中一些不必要的内容元素删除,在项目更路径下面加载我们接下来写好的类Excel表格控件.
最终展示效果如图:
其中红色区域为表格主体,上方的工具栏是在线表格编辑器。在实际项目中,我们可以单独引入组件运行时,也可以将在线表格编辑区全部引入(在线表格编辑器会包含一个与之关联的运行时)。
首先,我们需要在package.json中加入如下依赖:
接下来,我们在项目根目录下新建components文件夹,并创建OnlineDesigner.js文件,在该文件中,我们引入spreadjs相关资源,并引入组件运行时。详细代码如下所示:
创建完成之后,我们需要在pages目录下的index.js中引入定义好的组件。这里要注意的时,在引入组件时不要去使用服务端渲染(SSR),否会出现document undefined的错误,这种错误,一般和nodejs无法操作dom对象有关,具体的引入方法为:
执行npm run dev,显示效果如下:
接下来。我们需要继续在components文件夹下新建一个OnlineDesigner.js,引入在线表格编辑器:
编写完成之后,在index.js中引入集成即可:
执行npm run dev,显示效果如下:
到这里我们就顺利完成了基于Next.js实现在线表格编辑功能。
本文内实例获取地址: https://gitee.com/GrapeCity/nextjs-spreadjs
大家如果对更多应用实例感兴趣,可以查看:
https://demo.grapecity.com.cn/spreadjs/gc-sjs-samples/index.html
边栏推荐
- C# 将dll打包到程序中
- F.金玉其外矩阵(构造)
- leetcode: 255 Verify preorder traversal sequence binary search tree
- 华为云 & 达达,帮有情人“一键送达”
- Leetcode: 215 disorderly to find the first big k element in the array
- C语言写简单三子棋
- IP第十七天笔记
- C# TextBlock 上标
- [Opportunity Enlightenment-60]: "Soldiers, Stupid Ways"-1- Opening: "Death" and "Life" are the way of heaven
- 在腾讯,我的试用期总结!
猜你喜欢
Technology sharing | Description of the electronic fence function in the integrated dispatching system
利用决策树找出最优特征组合
用于X射线聚焦的复合折射透镜
大众点评搜索相关性技术探索与实践
Redis-哨兵模式
数据链路层-------以太网协议
Bluetooth Technology|In the first half of the year, 1.3 million charging piles were added nationwide, and Bluetooth charging piles will become the mainstream of the market
广告电商系统开发功能只订单处理
IP第十六天笔记
编译型与解释型编程语言的区别
随机推荐
我爱七夕哈哈哈
在腾讯,我的试用期总结!
Nuget 通过 dotnet 命令行发布
Next -21- 添加相册系列 - 1- 框架设置
Technology sharing | Description of the electronic fence function in the integrated dispatching system
谷歌插件.crx文件下载后被自动删除的解决方法
代码随想录笔记_动态规划_1049最后一块石头的重量II
Basic Introduction for PLSQL
leetcode:250. 统计同值子树
Set partition minimum difference problem (01 knapsack)
C# 判断文件编码
Makefile 语法及使用笔记
实际工作中的高级技术(训练加速、推理加速、深度学习自适应、对抗神经网络)
License server system does not support this version of this feature
Hangzhou Electric School Competition (Counter Attack Index)
16、学习MySQL 正则表达式
蓝牙技术|上半年全国新增 130 万台充电桩,蓝牙充电桩将成为市场主流
Google plug-in. Download contents file is automatically deleted after solution
F. Jinyu and its outer matrix (construction)
用了TCP协议,就一定不会丢包吗?