Vite是随着Vue3一起发布的一款新型前端构建工具,能够显著的提升前端开发体验,它主要由两部分组成:

(1)一个开发服务器,它基于**原生ES模块提供了丰富的内建功能,如速度快到惊人的 模块热更新(HMR)。

(2)一套构建指令,它使用 Rollup 打包你的代码,并且它是预配置的,可输出用于生产环境的高度优化过的静态资源。

Vite意在提供开箱即用的配置,同时它的 插件APIJavaScript API带来了高度的可扩展性,并有完整的类型支持。

Vite最初发行时,仅能用来构建Vue3项目,但随着随用群体的不断扩大,目前能支持构建的项目越来越多,已经包含了以下几种项目模板:

JavaScript TypeScript
vanilla vanilla-ts
vue vue-ts
react react-ts
preact preact-ts
lit lit-ts
svelte svelte-ts

我们可以看到,目前已经支持了react以及react-ts模板。对于一个经常性使用React开发项目的程序媛来说,之前一直使用的时create-react-app来构建react应用,也没有觉得有太大的问题。最开始要使用到Vite时,本葡萄的内心还是有点疑虑的,因为毕竟Vite是跟着Vue3发布的,对于使用者而言,潜意识会觉得它和Vue更加适配;但在实际上手用了之后,才会发现Vite的搭建速度,不亏于它的名字。

接下来我们就是一起动手用Vite来创建一个基于React的在线Excel项目吧。

项目实战

兼容性提示:Vite 需要 Node.js 版本 >= 12.0.0。然而,有些模板需要依赖更高的Node 版本才能正常运行,当你的包管理器发出警告时,请注意升级你的Node 版本。

我们可以通过以下命令,快速的创建一个react-ts的项目,如果当前项目并不想使用ts的话,只需要将--template后的预制模板改为react即可。

# npm 6.x  vite-react-ts表示项目名,可以自己随便改一个
npm create vite@latest vite-react-ts --template react-ts # npm 7+, extra double-dash is needed:
npm create vite@latest vite-react-ts -- --template react-ts # yarn
yarn create vite vite-react-ts--template react-ts # pnpm
pnpm create vite vite-react-ts-- --template react-ts

查看 create-vite 可以获取其它模板的更多细节:vanilla,vanilla-ts,vue,vue-ts,react,react-ts,preact,preact-ts,lit,lit-ts,svelte,svelte-ts。

创建一个react-ts项目仅需7.813秒,这速度已经让很多项目望尘莫及了。接下来我们既可以按照终端中的提示,先进入到项目目录下,之后执行npm install,安装完成后npm run dev就可以启动了。这个阶段如果有任何安装问题,可以面向搜索引擎解决,一般来说,需要指定一个其它的安装镜像。

项目默认启动在3000端口。打开后展示如上图所示,到这一步我们使用Vite就已经创建好React项目了,接下来我们需要引入纯前端表格控件,用来构建一个在线Excel。要想使用,就必须先引入组件相关资源,我们可以在package.json中添加以下内容:


"dependencies": {
"react": "^18.0.0",
"react-dom": "^18.0.0",
"@grapecity/spread-sheets": "15.0.7",
"@grapecity/spread-sheets-react": "15.0.7",
"@grapecity/spread-excelio": "15.0.7",
"@grapecity/spread-sheets-charts": "15.0.7",
"@grapecity/spread-sheets-print": "15.0.7",
"@grapecity/spread-sheets-pdf": "15.0.7",
"@grapecity/spread-sheets-barcode": "15.0.7",
"@grapecity/spread-sheets-shapes": "15.0.7",
"@grapecity/spread-sheets-resources-ko": "15.0.7",
"@grapecity/spread-sheets-resources-ja": "15.0.7",
"@grapecity/spread-sheets-resources-zh": "15.0.7",
"@grapecity/spread-sheets-languagepackages": "15.0.7",
"@grapecity/spread-sheets-pivot-addon": "15.0.7",
"@grapecity/spread-sheets-designer": "15.0.7",
"@grapecity/spread-sheets-designer-resources-cn": "15.0.7",
"@grapecity/spread-sheets-designer-react": "15.0.7",
"@grapecity/spread-sheets-tablesheet": "15.0.7"
},

添加完成后,再次进入到当前项目目录下,执行npm install,完成新添加资源的安装。当然,大家在引入时,可以现在npm上查找一下SpreadJS目前最新的版本,去引入最新版本的产品。

引入完成后,将项目中不需要使用的东西删一删,让页面看起来干净一点。之后在src下新建components文件夹,用来存放之后我们写的表格组件。components文件夹下新建OnlineDesigner.tsx文件。接下来我们就需要在OnlineDesigner.tsx文件中去引入SpreadJS相关资源,编写表格组件,详细代码如下:

import { Component, PropsWithChildren, ReactNode } from 'react'
import '@grapecity/spread-sheets-designer-resources-cn';
import "@grapecity/spread-sheets/styles/gc.spread.sheets.excel2013white.css"
import '@grapecity/spread-sheets-designer/styles/gc.spread.sheets.designer.min.css'
import "@grapecity/spread-sheets-tablesheet";
import "@grapecity/spread-sheets-barcode";
import "@grapecity/spread-sheets-charts";
import "@grapecity/spread-sheets-shapes";
import "@grapecity/spread-sheets-languagepackages";
import "@grapecity/spread-sheets-print";
import "@grapecity/spread-sheets-pdf";
import "@grapecity/spread-sheets-pivot-addon";
import "@grapecity/spread-sheets-resources-zh";
import "@grapecity/spread-sheets-designer-resources-cn";
import * as GCDesigner from '@grapecity/spread-sheets-designer';
import "@grapecity/spread-sheets-resources-zh"
import GC from "@grapecity/spread-sheets"
import { Designer } from '@grapecity/spread-sheets-designer-react';
GC.Spread.Common.CultureManager.culture('zh-cn') interface Props{}
interface State{} export default class OnlineDesigner extends Component<Props, State>{
designer: null | GCDesigner.Spread.Sheets.Designer.Designer;
constructor(props: Props){
super(props)
this.designer = null
} designerInitialized = (designer: GCDesigner.Spread.Sheets.Designer.Designer) => {
this.designer = designer
console.log(designer)
// 获取与designer相关联的工作簿(Spread)
let spread:GC.Spread.Sheets.Workbook = this.designer.getWorkbook() as GC.Spread.Sheets.Workbook
// 获取当前活动工作表
let sheet:GC.Spread.Sheets.Worksheet = spread.getActiveSheet() as GC.Spread.Sheets.Worksheet
//设置数值
sheet.setValue(0,0,'Hello Grapecity')
//设置行高
sheet.setColumnWidth(0,120)
//设置区域内容
sheet.setArray(1,0,[[2,3,5]])
//设置公式
sheet.setFormula(3,0,'=sum(A2:C2)') } render(): ReactNode {
return(
<Designer
spreadOptions={{sheetCount: 3}}
styleInfo={{height: '98vh'}}
designerInitialized = {this.designerInitialized}
/>
)
}
}

接下来,我们需要在app.tsx中引入自己定义的OnlineDesigner组件即可,详细代码为:

import './App.css'
import OnlineDesigner from './components/OnlineDesigner' function App() { return (
<div className="App">
<OnlineDesigner/>
</div>
)
} export default App

最后,我们来看看显示效果吧

通过以上几步操作,你就可以拥有一个在线的Excel系统辣~

文内demo下载地址:https://gcdn.grapecity.com.cn/forum.php?mod=attachment&aid=MjE3NDQzfDIwNTI5YzgwfDE2NTU5NjI3OTR8NjI2NzZ8OTk3MTg%3D

了解更多实例:https://demo.grapecity.com.cn/spreadjs/gc-sjs-samples/index.html

基于Vite+React构建在线Excel的更多相关文章

  1. 手把手带你实现基于 Vite+Vue3 的在线Excel表格系统

    今天,葡萄带你了解如何基于Vite+Vue3实现一套纯前端在线表格系统. 在正式开始项目介绍之前,首先咱们首先来介绍一下Vite和Vue3. Vue3 2020年09月18日Vue.js 3.0发布, ...

  2. 如何开发一款基于 Vite+Vue3 的在线表格系统(上)

    今天,葡萄带你了解如何基于Vite+Vue3实现一套纯前端在线表格系统. 在正式开始项目介绍之前,首先咱们首先来介绍一下Vite和Vue3. Vue3 Vue是什么?大多前端开发者对这个词已毫不陌生了 ...

  3. 基于 Next.js实现在线Excel

    如果要从头开始使用 React 构建一个完整的 Web 应用程序,需要哪些步骤? 这当然不像把大象装进冰箱那么简单,只需要分成三步:打开冰箱,拿起大象,塞进冰箱就好. 我们需要考虑细节有很多,比如: ...

  4. 如何开发一款基于 vite+vue3 的在线表格系统(下)

    在上篇内容中我们为大家分享了详细介绍Vue3和Vite的相关内容.在本篇中我们将从项目实战出发带大家了解Vite+Vue3 的在线表格系统的构建. 使用Vite初始化Vue3项目 在这里需要注意:根据 ...

  5. 基于webpack+react+antd 项目构建

    工欲善其事必先利其器,学习React也是如此. 下面分享一篇基于webpack+react+antd 项目构建的好文章, https://blog.hduzplus.xyz/articles/2017 ...

  6. 用 React 编写的基于Taro + Dva构建的适配不同端(微信小程序、H5、React-Native 等)的时装衣橱

    前言 Taro 是一套遵循 React 语法规范的 多端开发 解决方案.现如今市面上端的形态多种多样,Web.React-Native.微信小程序等各种端大行其道,当业务要求同时在不同的端都要求有所表 ...

  7. 基于开源方案构建统一的文件在线预览与office协同编辑平台的架构与实现历程

    大家好,又见面了. 在构建业务系统的时候,经常会涉及到对附件的支持,继而又会引申出对附件在线预览.在线编辑.多人协同编辑等种种能力的诉求. 对于人力不是特别充裕.或者项目投入预期规划不是特别大的公司或 ...

  8. 基于 vite 创建 vue3 全家桶项目(vite + vue3 + tsx + pinia)

    vite 最近非常火,它是 vue 作者尤大神发布前端构建工具,底层基于 Rollup,无论是启动速度还是热加载速度都非常快.vite 随 vue3 正式版一起发布,刚开始的时候与 vue 绑定在一起 ...

  9. 提高工作效率的神器:基于前端表格实现Chrome Excel扩展插件

    Chrome插件,官方名称extensions(扩展程序):为了方便理解,以下都称为插件. 我们开发的插件需要在浏览器里面运行,打开浏览器,通过右上角的三个点(自定义及控制)-更多工具-拓展程序-打开 ...

随机推荐

  1. JavaWeb学习day4-Maven&IDEA中的使用

    1.创建本地仓库 ,因为使用apache官方的下载方式需要挂梯,下载速度慢且容易出错,可以配置阿里的下载路径,同时配置如下图的仓库路径 2.创建原型项目 3.等待jar包下载导入完成,出现下图即代表成 ...

  2. 【FAQ】干货满满,接入HMS Core应用内支付服务过程中一些常见问题总结(2)来啦

    HMS Core应用内支付服务(In-App Purchases,IAP)为应用提供便捷的应用内支付体验和简便的接入流程.该服务支持客户端和服务端两种开发形式,具体可以参考官方文档 上次,我们分享和总 ...

  3. 1903021116—吉琛—Java第三周作业—eclipse创建Java程序

    项目 内容 课程班级博客链接 19级信计班 这个作业要求链接 eclipse如何创建java程序 java语言基础(上) 我的课程学习目标 1. 学习博客园更多使用技巧 2. 通过作业实践熟练与熟悉掌 ...

  4. HCIE-SEC笔记-EVENG模拟器安装

    EVEng模拟器安装: 准备:Vmware 16.0 EVEng EVE-NG-Win-Client-Pack.exe [抓包,内置wireshark,内置vnc,用来打开windows系统] Win ...

  5. mmdetection获取最高map的epoch

    自动从训练结果中获取最高的mAP所对应的epoch. <code>import json import os ''' :param work_dir 训练结果目录 :return 最好的m ...

  6. 终极套娃 2.0|云原生 PaaS 平台的可观测性实践分享

    某个周一上午,小涛像往常一样泡上一杯热咖啡 ️,准备打开项目协同开始新一天的工作,突然隔壁的小文喊道:"快看,用户支持群里炸锅了 -" 用户 A:"Git 服务有点问题, ...

  7. 得到知识服务app原型设计比较与实践

    一.几种原型设计工具的比较 墨刀 优点: 拥有PC端.手机端.网页版,让你随时随地可以进行产品原型设计: 其定位是主要用于设计移动APP原型,其控件的拖拉.大小的调整,都会自然去匹配相应的母版大小,非 ...

  8. Elemnt ui 组件封装(form)

    <template> <el-form class="form" :inline="formConfig.inline" :model=&qu ...

  9. WPF行为基础

    理解行为 复杂的UI效果(缩放.拖拽.平滑等)通过样式与触发器比较难以实现,通过引入行为模型来实现.使用行为也可以处理UI操作之外的业务 程序集引用 System.Windows.Interactiv ...

  10. 【代理是什么?】nginx快速入门+反向代理hexo个人博客

    @ 目录 前言 本文说明 请大家务必查看 工作原理 正向代理 反向代理 环境准备 详细版 入门:搭建步骤 配置阿里云epel源: yum安装nginx: 启动nginx: 配置default.conf ...