vue3+ts+vite项目中使用spreadjs,通过script标签引入spreadjs可以提高打包速度

news2025/1/21 12:57:18

https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/quickstart/quickstart-js

右键另存这个官方的示例页面可以下载全部js文件

https://demo.grapecity.com.cn/SpreadJS/WebDesigner/index.html

spread.html:

<!DOCTYPE html>
<html lang="zh">
  <head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="spreadjs culture" content="zh-cn" />
    <title>SpreadJS Designer</title>
    <link
      href="./public/spread/gc.spread.sheets.excel2013white.css"
      rel="stylesheet"
      type="text/css"
    />
    <link
      href="./public/spread/gc.spread.sheets.designer.17.0.2.min.css"
      rel="stylesheet"
      type="text/css"
    />
  </head>

  <body unselectable="on">
    <div
      id="gc-designer-container"
      role="application"
      style="height: 600px"
    ></div>

    <script src="./public/spread/gc.spread.sheets.all.min.js"></script>
    <script async src="./public/spread/gc.spread.sheets.shapes.min.js"></script>
    <script async src="./public/spread/gc.spread.sheets.charts.min.js"></script>
    <script
      async
      src="./public/spread/gc.spread.sheets.slicers.min.js"
    ></script>
    <script async src="./public/spread/gc.spread.sheets.print.min.js"></script>
    <script
      async
      src="./public/spread/gc.spread.sheets.barcode.min.js"
    ></script>
    <script async src="./public/spread/gc.spread.sheets.pdf.min.js"></script>
    <script
      async
      src="./public/spread/gc.spread.pivot.pivottables.min.js"
    ></script>
    <script
      async
      src="./public/spread/gc.spread.sheets.tablesheet.min.js"
    ></script>
    <script
      async
      src="./public/spread/gc.spread.sheets.ganttsheet.min.js"
    ></script>
    <script
      async
      src="./public/spread/gc.spread.report.reportsheet.min.js"
    ></script>
    <script
      async
      src="./public/spread/gc.spread.sheets.formulapanel.min.js"
    ></script>
    <script async src="./public/spread/gc.spread.excelio.min.js"></script>
    <script async src="./public/spread/gc.spread.sheets.io.min.js"></script>
    <script
      async
      src="./public/spread/gc.spread.sheets.resources.zh.min.js"
    ></script>

    <script
      async
      src="./public/spread/gc.spread.sheets.designer.resource.cn.17.0.2.min.js"
    ></script>
    <script
      async
      src="./public/spread/gc.spread.sheets.designer.all.17.0.2.min.js"
    ></script>
    <script type="text/javascript">
      window.onload = function () {
        //Apply License
        //GC.Spread.Sheets.LicenseKey = 'sjs-distribution-key';
        //GC.Spread.Sheets.Designer.LicenseKey = 'designer-component-distribution-key';

        var config = GC.Spread.Sheets.Designer.DefaultConfig
        config.commandMap = {
          Welcome: {
            title: 'Welcome',
            text: 'Welcome',
            iconClass: 'ribbon-button-welcome',
            bigButton: 'true',
            commandName: 'Welcome',
            execute: function (context, propertyName, fontItalicChecked) {
              alert('Welcome to new designer.')
            },
          },
        }
        config.ribbon[0].buttonGroups.unshift({
          label: 'NewDesigner',
          thumbnailClass: 'welcome',
          commandGroup: {
            children: [
              {
                direction: 'vertical',
                commands: ['Welcome'],
              },
            ],
          },
        })
        var designer = new GC.Spread.Sheets.Designer.Designer(
          document.getElementById('gc-designer-container'),
          config
        )
      }
    </script>
  </body>
</html>

index.html:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <link rel="icon" href="/favicon.ico" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Vite App</title>
    <link
      href="/spread/gc.spread.sheets.excel2013white.css"
      rel="stylesheet"
      type="text/css"
    />
    <link
      href="/spread/gc.spread.sheets.designer.17.0.2.min.css"
      rel="stylesheet"
      type="text/css"
    />
  </head>
  <body>
    <div id="app"></div>
    <script type="module" src="/src/main.ts"></script>
    <script src="/spread/gc.spread.sheets.all.min.js"></script>
    <script src="/spread/gc.spread.sheets.shapes.min.js"></script>
    <script src="/spread/gc.spread.sheets.charts.min.js"></script>
    <script src="/spread/gc.spread.sheets.slicers.min.js"></script>
    <script src="/spread/gc.spread.sheets.print.min.js"></script>
    <script src="/spread/gc.spread.sheets.barcode.min.js"></script>
    <script src="/spread/gc.spread.sheets.pdf.min.js"></script>
    <script src="/spread/gc.spread.pivot.pivottables.min.js"></script>
    <script src="/spread/gc.spread.sheets.tablesheet.min.js"></script>
    <script src="/spread/gc.spread.sheets.ganttsheet.min.js"></script>
    <script src="/spread/gc.spread.report.reportsheet.min.js"></script>
    <script src="/spread/gc.spread.sheets.formulapanel.min.js"></script>
    <script src="/spread/gc.spread.excelio.min.js"></script>
    <script src="/spread/gc.spread.sheets.io.min.js"></script>
    <script src="/spread/gc.spread.sheets.resources.zh.min.js"></script>
    <script src="/spread/gc.spread.sheets.designer.resource.cn.17.0.2.min.js"></script>
    <script src="/spread/gc.spread.sheets.designer.all.17.0.2.min.js"></script>
  </body>
</html>

designer/Index.vue:

<template>
  <div id="gc-designer-container" style="height: 600px"></div>
</template>

<script setup lang="ts">
import { onMounted } from 'vue'

const init = () => {
  //Apply License
  //GC.Spread.Sheets.LicenseKey = 'sjs-distribution-key';
  //GC.Spread.Sheets.Designer.LicenseKey = 'designer-component-distribution-key';

  //@ts-ignore
  let config = GC.Spread.Sheets.Designer.DefaultConfig
  config.commandMap = {
    Welcome: {
      title: 'Welcome',
      text: 'Welcome',
      iconClass: 'ribbon-button-welcome',
      bigButton: 'true',
      commandName: 'Welcome',
      // @ts-ignore
      execute: function (context, propertyName, fontItalicChecked) {
        alert('Welcome to new designer.')
      },
    },
  }
  config.ribbon[0].buttonGroups.unshift({
    label: 'NewDesigner',
    thumbnailClass: 'welcome',
    commandGroup: {
      children: [
        {
          direction: 'vertical',
          commands: ['Welcome'],
        },
      ],
    },
  })
  //@ts-ignore
  let designer = new GC.Spread.Sheets.Designer.Designer(
    document.getElementById('gc-designer-container'),
    config
  )
  let sheet = designer.Spread.getActiveSheet()
  sheet
    .getCell(0, 0)
    //@ts-ignore
    .vAlign(GC.Spread.Sheets.VerticalAlign.center)
    .value('Hello')
  console.log('success')
}

onMounted(() => {
  init()
})
</script>

sheet/Index.vue:

<template>
  <div id="gc-sheet-container" style="height: 600px"></div>
</template>

<script setup lang="ts">
import { onMounted } from 'vue'

const init = () => {
  //Apply License
  //GC.Spread.Sheets.LicenseKey = 'sjs-distribution-key';
  //GC.Spread.Sheets.Designer.LicenseKey = 'designer-component-distribution-key';

  //@ts-ignore
  let spread = new GC.Spread.Sheets.Workbook(
    document.getElementById('gc-sheet-container'),
    { sheetCount: 1 }
  )

  let sheet = spread.getSheet(0)
  sheet.setText(0, 0, 'hello')

  console.log('success')
}

onMounted(() => {
  init()
})
</script>

package.json:

{
  "name": "m-spread",
  "version": "0.0.0",
  "private": true,
  "type": "module",
  "scripts": {
    "dev": "vite",
    "build": "run-p type-check \"build-only {@}\" --",
    "build1": "node --max-old-space-size=8096 ./node_modules/vite/bin/vite.js build",
    "preview": "vite preview",
    "build-only": "vite build",
    "type-check": "vue-tsc --build --force",
    "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore"
  },
  "dependencies": {
    "pinia": "^2.1.7",
    "rollup-plugin-visualizer": "^5.12.0",
    "vue": "^3.4.29",
    "vue-router": "^4.3.3"
  },
  "devDependencies": {
    "@rushstack/eslint-patch": "^1.8.0",
    "@tsconfig/node20": "^20.1.4",
    "@types/node": "^20.14.5",
    "@vitejs/plugin-vue": "^5.0.5",
    "@vue/eslint-config-typescript": "^13.0.0",
    "@vue/tsconfig": "^0.5.1",
    "eslint": "^8.57.0",
    "eslint-plugin-vue": "^9.23.0",
    "npm-run-all2": "^6.2.0",
    "typescript": "~5.4.0",
    "vite": "^5.3.1",
    "vite-plugin-vue-devtools": "^7.3.1",
    "vue-tsc": "^2.0.21"
  }
}

vite.config.js:

import { fileURLToPath, URL } from 'node:url'

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueDevTools from 'vite-plugin-vue-devtools'
import { visualizer } from 'rollup-plugin-visualizer'

// https://vitejs.dev/config/
export default defineConfig({
  server: {
    port: 3006
  },
  plugins: [
    vue(),
    vueDevTools(),
    visualizer()
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  }
})

人工智能学习网站

https://chat.xutongbao.top

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

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

相关文章

问题处理记录与深入:系统线程耗尽,Java无法调用native方法新建线程

1. 问题处理记录 1.1 问题描述 公司使用Presto作为OLAP查询引擎&#xff0c;Presto的coordinator节点在运行过程中报错 java.lang.OutOfMemoryError: unable to create native thread: possibly out of memory or process/resource limits reachedat java.base/java.lang.Thre…

用Roofline模型去分析pytorch和Triton算子

用Roofline模型去分析pytorch和Triton算子 1.参考链接2.测试环境3.安装相关依赖4.锁频5.获取理论算力6.创建测试脚本7.运行测试程序生成Roofline图8.NVIDIA Nsight Compute生成Roofline9.效果图A.nn.LinearB.Triton实现 本文演示了如何用Roofline模型去分析pytorch和Triton算子…

Mx Admin 基于react18的后台管理系统

前言 Mx Admin 基于React18 vite5 antd5的后台管理系统&#xff0c; 基于RBAC的权限控制系统&#xff0c;动态菜单和动态路由支持tab路由缓存嵌套菜单支持多种菜单布局模式亮暗色主题切换

AttGAN实验复现 2024

AttnGAN 代码复现 2024 文章目录 AttnGAN 代码复现 2024简介环境python 依赖数据集TrainingPre-train DAMSMTrain AttnGAN SamplingB_VALIDATION 为 False (默认)B_VALIDATION 为 True 参考博客 简介 论文地址&#xff1a; https://arxiv.org/pdf/1711.10485.pdf 代码 python…

Unity实现简单的MVC架构

文章目录 前言MVC基本概念示例流程图效果预览后话 前言 在Unity中&#xff0c;MVC&#xff08;Model-View-Controller&#xff09;框架是一种架构模式&#xff0c;用于分离游戏的逻辑、数据和用户界面。MVC模式可以帮助开发者更好地管理代码结构&#xff0c;提高代码的可维护性…

【web】2、集成插件

1、element-plus 官网地址:设计 | Element Plus 安装 plus 及 icon 图标库 1.1 官网提供plus安装方法&#xff1a; 1.2 官网提供 icon 安装方法 1.3 安装 pnpm install element-plus element-plus/icons-vue main.ts全局安装element-plus,element-plus默认支持语言英语设…

isspace()方法——判断字符串是否只由空格组成

自学python如何成为大佬(目录): https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法参考 isspace()方法用于判断字符串是否只由空格组成。isspace()方法的语法格式如下&#xff1a; str.isspace() 如果字符串中只包含空格&…

深度学习基准模型Mamba

深度学习基准模型Mamba Mamba(英文直译&#xff1a;眼镜蛇)具有选择性状态空间的线性时间序列建模&#xff0c;是一种先进的状态空间模型 (SSM)&#xff0c;专为高效处理复杂的数据密集型序列而设计。 Mamba是一种深度学习基准模型&#xff0c;专为处理长序列数据而设计&…

ONLYOFFICE 8.1 版本桌面编辑器测评

在现代办公环境中&#xff0c;办公软件的重要性不言而喻。从文档处理到电子表格分析&#xff0c;再到演示文稿制作&#xff0c;强大且高效的办公软件工具能够极大提升工作效率。ONLYOFFICE 作为一个功能全面且开源的办公软件套件&#xff0c;一直以来都受到广大用户的关注与喜爱…

C++:typeid4种cast转换

typeid typeid typeid是C标准库中提供的一种运算符&#xff0c;它用于获取类型的信息。它主要用于类型检查和动态类型识别。当你对一个变量或对象使用typeid运算符时&#xff0c;它会返回一个指向std::type_info类型的指针&#xff0c;这个信息包含了关于该类型名称、大小、基…

C#进阶-ASP.NET WebForms调用ASMX的WebService接口

ASMX 文件在 ASP.NET WebForms 中提供了创建 Web 服务的便捷方式&#xff0c;通过公开 Web 方法&#xff0c;允许远程客户端调用这些方法并获取数据。本文介绍了 ASMX 文件的基本功能、如何定义 WebService 接口、通过 HTTP 和 SOAP 请求调用 WebService 接口&#xff0c;以及使…

python实现网页自动化(自动登录需要验证的网页)

引言: python作为实现网页自动化的一个重要工具,其强大的各种封装的库使得程序运行更加简洁,只需要下载相应的库,然后调用库中的函数就可以简便的实现我们想要的网页相关操作。 正文: 我的前几篇文章写了关于初学爬虫中比较容易上手的功能,例如爬取静态网页的数据、动…

系统运维面试总结(shell编程)

SYNDDOS攻击&#xff0c;需要判断这个访问是正常访问还是信包攻击&#xff0c;当前这个信包发起的访问数量是多少&#xff0c;例如看到30个信包同时再访问时设置监控报警。

Wails 安装初体验

文章目录 Wails 安装说明1. 系统要求2. 安装步骤3. 构建应用 结论 Wails 安装说明 Wails 是一个用于构建桌面应用的 Go 框架&#xff0c;结合了现代前端技术。以下是安装步骤&#xff1a; 1. 系统要求 Go 1.16 或更高版本Node.js 和 npm可选&#xff1a;适用于 Windows、mac…

SSH版本升级-openssh-9.7p1

SSH版本升级-openssh-9.7p1 1、查看当前版本2、安装openssl2.1、编译安装ssl 3、下载新版本SSH4、备份原有的SSH配置5、上传文件并解压6、卸载原有的openssh包7、编译安装openssh7.1、在解压后的目录&#xff0c;初始化openssh7.2、将文件拷回7.3、修改配置文件 最终实现&#…

傻瓜交换机多网段互通组网、设备无法配置网关案例

记录一下&#xff1a; 一、傻瓜交换机多网段互通组网 1、客户在核心交换机上创建了VLAN10&#xff0c;VLAN20。 VLAN10&#xff1a;IP192.168.10.254 VLAN20&#xff1a;IP192.168.20.254 在核心交换机下挂了一台傻瓜交换机&#xff0c;傻瓜交换机接入了一台OA服务器IP&#…

Qt之Pdb生成及Dump崩溃文件生成与调试(含注释和源码)

文章目录 一、Pdb生成及Dump文件使用示例图1.Pdb文件生成2.Dump文件调试3.参数不全Pdb生成的Dump文件调试 二、个人理解1.生成Pdb文件的方式2.Dump文件不生产的情况 三、源码Pro文件mian.cppMainWindowUi文件 总结 一、Pdb生成及Dump文件使用示例图 1.Pdb文件生成 下图先通过…

Transformer详解encoder

目录 1. Input Embedding 2. Positional Encoding 3. Multi-Head Attention 4. Add & Norm 5. Feedforward Add & Norm 6.代码展示 &#xff08;1&#xff09;layer_norm &#xff08;2&#xff09;encoder_layer1 最近刚好梳理了下transformer&#xff0c;今…

深入理解PHP命名空间

在PHP项目中&#xff0c;命名空间&#xff08;namespace&#xff09;是一个非常重要的特性。它不仅帮助开发者组织代码&#xff0c;还能避免类、函数、常量等命名冲突问题。本文将详细介绍PHP命名空间的概念、使用方法和最佳实践。 一、什么是命名空间&#xff1f; 命名空间…

LeetCode:经典题之2、445 题解及延伸

系列目录 88.合并两个有序数组 52.螺旋数组 567.字符串的排列 643.子数组最大平均数 150.逆波兰表达式 61.旋转链表 160.相交链表 83.删除排序链表中的重复元素 389.找不同 1491.去掉最低工资和最高工资后的工资平均值 896.单调序列 206.反转链表 92.反转链表II 141.环形链表 …