Luckysheet 在vue中离线使用及引入报错的解决方案(推荐)

yizhihongxing

Luckysheet 是一个基于web的在线电子表格应用,支持多人协同编辑、数据可视化、大数据量渲染等功能。本文将详细介绍如何在vue项目中离线使用Luckysheet,并解决可能遇到的引入报错的问题。

1. 安装Luckysheet

首先需要在vue项目中安装Luckysheet。可以通过npm来安装,命令如下:

npm install luckysheet

2. 引入Luckysheet

在vue项目的入口文件main.js中引入Luckysheet,代码如下:

import Luckysheet from 'luckysheet';

Vue.use(Luckysheet);

3. 离线使用Luckysheet

由于Luckysheet是一个基于web的在线电子表格应用,在线使用存在受网络状态影响的问题。为了解决这个问题,我们可以将Luckysheet下载下来,配置到vue项目中,实现离线使用。

3.1. 配置webpack

在vue项目的webpack配置文件中,添加以下代码进行Luckysheet的loader配置:

{
    test: /\.worker\.js$/,
    use: {
        loader: 'worker-loader'
    }
},
{
    test: /luckysheet.umd.js$/,
    use: [{
        loader: 'file-loader',
        options: {
            name: '[name].[ext]'
        }
    }]
}

3.2. 下载Luckysheet源码

从Luckysheet项目的github地址中,下载最新的源码压缩包(https://github.com/mengshukeji/Luckysheet/archive/master.zip),并将压缩包解压缩到vue项目的static目录下。

3.3. 在组件中引入Luckysheet

可以在.vue组件中使用Luckysheet,代码如下:

<template>
  <div id="luckysheet"></div>
</template>

<script>
import workerJs from 'file-loader!../../../static/Luckysheet-1.1.0/js/luckysheet.all.js';
import worker from 'worker-loader!../../../static/Luckysheet-1.1.0/js/plugins/plugin.js';

export default {
  name: 'LuckysheetDemo',
  mounted() {
    window.luckysheet.create({
      container: 'luckysheet',
      plugins: [{ plugin: 'chartMix', main: 'luckysheet.plugins.chartMix' }],
      showinfobar: false,
      userInfo: false,
      functionMousedown() {},
      pluginsOptional: { chartMix: true },
      functionMouseUp() {},
      luckysheetcreated() {},
      pluginsData: {},
      fireMousedown: true,
      lang: 'zh',
      enableAddRow: true,
      enableAddBackTop: true,
      enableRename: true,
      enableAutoFormat: true,
      enablePaste: true,
      enableFullScreen: false,
      enableStyles: true,
      data: []
    });
  },
  beforeDestroy() {
    this.luckysheet && this.luckysheet.destroy && this.luckysheet.destroy();
  },
  data() {
    return {
      luckysheet
    };
  },
  components: {}
};
</script>

这里需要注意:

  • 引入luckysheet.all.js的时候需要使用file-loader来解析,保证文件以原名存储。
  • 引入插件的时候需要指定插件的名称和位置,这里的示例插件是chartMix,插件路径为luckysheet.plugins.chartMix
  • 注入worker.js文件,这个文件在webpack的配置中会被转化为一个线程。线程中运行着Luckysheet的大量计算,包括公式计算、渲染等等,将这部分内容放在一个线程中会分担主线程大量计算的压力,避免卡顿等问题。

4. 引入报错的解决方案

在以上步骤配置后,可能出现以下错误提示:

Failed to execute 'importScripts' on 'WorkerGlobalScope': The script at ‘.../plugins/plugin.js?v=1.0’ loaded by’something/index.js' was blocked because of a disallowed MIME type (“text/html”)

这个问题表示线程中引入了一个无效的脚本,被限制了。解决方案是在配置webpack的时候,添加以下代码:

module.exports = {
  // ...
  module: {
    rules: [
      {
        test: /\.(js)$/,
        exclude: [
          /node_modules/
        ],
        include: [
          path.join(__dirname, '/src')
        ],
        loader: 'babel-loader',
        options: {
          presets: [['@babel/preset-env', { modules: false }]],
        }
      },
      {
        test: /\.worker\.js$/,
        use: {
          loader: 'worker-loader',
          options: {
            inline: true,
            fallback: false
          }
        }
      }
    ]
  }
}

需要注意的是:

  • worker-loader需要将文件inline到主文件里,以防止错误的读取文件。
  • worker-loader需要设置fallback: false,以避免交替分享worker的处理。

以上就是完整的在vue项目中离线使用Luckysheet,并解决引入报错的攻略,希望能对大家有所帮助。

示例1:

在.vue组件的mounted方法中,声明一下window.luckysheet.create方法即可初始化Luckysheet表格。

示例2:

引入worker.js文件,这个文件在webpack的配置中会被转化为一个线程。线程中运行着Luckysheet的大量计算,包括公式计算、渲染等等,将这部分内容放在一个线程中会分担主线程大量计算的压力,避免卡顿等问题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Luckysheet 在vue中离线使用及引入报错的解决方案(推荐) - Python技术站

(1)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • 说不尽的MVVM(2) – MVVM初体验

    说不尽的MVVM(2) – MVVM初体验 在上一篇文章中,我们对MVVM模式进行了简单介绍,本文将通过一个简单的例子,带领大家初步体验MVVM模式。 MVVM模式的优点 在介绍例子之前,我们先来看一下MVVM模式的优点: 分离视图与数据:MVVM模式可以有效分离视图(View)与数据(Model)的逻辑,减少耦合度,使得代码更加易于维护。 提供双向绑定机制…

    其他 2023年3月28日
    00
  • mysql两个count求和

    MySQL两个Count求和 在数据统计中,Count函数是被广泛使用的一个函数。Count函数的作用是计算指定列的行数,从而得到统计结果。有时候,我们需要求两个Count结果的和,本文将介绍如何使用MySQL来实现这种求和操作。 1. 使用嵌套子查询 一种方法是使用嵌套子查询来实现这种求和操作。下面是示例代码: SELECT (SELECT COUNT(*…

    其他 2023年3月28日
    00
  • c++ KMP字符串匹配算法

    C++ KMP字符串匹配算法攻略 简介 KMP(Knuth-Morris-Pratt)算法是一种高效的字符串匹配算法,用于在一个主串中查找一个模式串的出现位置。相比于朴素的字符串匹配算法,KMP算法具有更快的匹配速度。 算法原理 KMP算法的核心思想是利用已经匹配过的信息,避免不必要的回溯。它通过构建一个部分匹配表(Partial Match Table),…

    other 2023年8月6日
    00
  • android中的常用尺寸单位(dp、sp)快速入门教程

    以下是关于“Android中的常用尺寸单位(dp、sp)快速入门教程”的完整攻略,包括基本概念、使用方法和两个示例。 基本概念 在Android中常用的尺寸单位有dp和sp。dp是density-independent pixel(密度无关像素)的缩写,它是一种基于屏幕密度的抽象单位,可以保证在不同的屏幕密度下,UI元素的大小和位置保持一致。sp是scale…

    other 2023年5月7日
    00
  • socket测试工具(客户端、服务端)

    以下是使用socket测试工具进行客户端和服务端测试的完整攻略,包含两个示例说明: 步骤1:安装socket测试工具 首先,您需要并安装socket测试具。您可以从socket工具的官方网站(例如,SocketTest、TCP Test Tool等)下载并安装socket测试工。 步骤2:服务端 在测试工具中,您可以创建一个服务端,以便测试客户端的连接。以下…

    other 2023年5月6日
    00
  • Linux系统中查找文件的方法

    Linux系统中查找文件的方法有很多种,以下是其中常用的几种方法及详细步骤。 1. 使用find命令查找文件 find命令用于在目录树中搜索指定文件,并可以按文件名、文件类型、文件日期、文件大小等条件进行定位。具体操作步骤如下: find <搜索路径> <搜索条件> <操作> 其中,搜索路径表示要搜索的目录或文件,可以指定…

    other 2023年6月26日
    00
  • Linux系统中如何实现远程控制

    在Linux系统中,我们可以使用远程控制工具来实现远程控制。下面将详细讲解两种实现远程控制的方法,包括SSH和VNC。 1. SSH远程控制 1.1 什么是SSH SSH是一种广泛用于远程登录和传输数据的加密协议。它可以通过互联网或本地网络连接到远程计算机,使用户可以通过命令行界面(CLI)进行操作。 1.2 基本用法 使用SSH需要在本地计算机上安装SSH…

    other 2023年6月27日
    00
  • 智能手表开发API接口

    关于智能手表开发API接口的完整攻略,下面是简要的步骤及示例说明。 步骤一:确定需要的API接口 在开发智能手表API接口之前,首先需要明确需要哪些接口。这些接口应该与应用程序的功能需求相关。例如,一个智能手表应用程序可能需要以下接口: 获取用户的健康数据:步数、心率等。 控制手表电池管理 接受手机通知,并进行相应的显示等。 步骤二:设计API接口协议 一旦…

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部