当前位置:网站首页>基于 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# BBcode 转 Markdown
- Cisco-小型网络拓扑(DNS、DHCP、网站服务器、无线路由器)
- How to write SQL statements: the usage of Update, Case, and Select together
- Oracle database user creation, restart, import and export
- xampp安装包含的组件有(php,perl,apche,mysql)
- Oracle 数据库用户创建、重启、导入导出
- 用了TCP协议,就一定不会丢包吗?
- SublimeText 粘贴图片保存到本地
- Next -19- 开启fancybox查看图片大图
- Sublime Text 好用的插件
猜你喜欢

LeetCode_模拟_中等_498.对角线遍历

用了TCP协议,就一定不会丢包吗?

Hangzhou Electric School Competition (Counter Attack Index)

【硬件架构的艺术】学习笔记(1)亚稳态的世界

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

Almost all known protein structures in the world are open sourced by DeepMind

leetcode: 253. How many meeting rooms are required at least

用于X射线聚焦的复合折射透镜

【北亚数据恢复】IBM System Storage存储lvm信息丢失数据恢复方案

直播系统开发——直播间架构的设计及难点分析
随机推荐
X射线掠入射聚焦反射镜
Set partition minimum difference problem (01 knapsack)
LeetCode_模拟_中等_498.对角线遍历
[Opportunity Enlightenment-60]: "Soldiers, Stupid Ways"-1- Opening: "Death" and "Life" are the way of heaven
属于程序猿的浪漫
Go 语言快速入门指南: 变量和常量
基于数据库实现分布式锁
特殊品种的二次开户验资金额
【云原生 | 从零开始学Kubernetes】kubernetes之StatefulSet详解
C# 局部函数与事件
【Today in History】August 4: First female Turing Award winner; NVIDIA acquires MediaQ; first Cybersecurity Challenge completed
关于pnpm包管理器的版本问题
[深入研究4G/5G/6G专题-50]: URLLC-16-《3GPP URLLC相关协议、规范、技术原理深度解读》-10-高可靠性技术-1-低编码率编码调制方案MCS与高可靠性DRB
7 天找个 Go 工作,Gopher 要学的条件语句,循环语句 ,第3篇
Android Sqlite3基本命令
B. Construct a simple sequence (greedy)
本周讨论用户体验:Daedalus 的 Nemo 加入 Ambire,探索加密海洋
程序猿七夕礼物-如何30分钟给女朋友快速搭建专属语聊房
1401 - Web technology 】 【 introduction to graphical Canvas
一看就会的Chromedriver(谷歌浏览器驱动)安装教程