iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > 其他 >一文教你如何正确封装ECharts
  • 248
分享到

一文教你如何正确封装ECharts

前端EChartsVue.js 2023-05-14 21:05:13 248人浏览 安东尼
摘要

本篇文章给大家带来了关于ECharts的相关知识,其中主要跟大家聊一聊怎么封装ECharts,感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。文章的开头总是很难水的,就不多说了本文涉及 : typescript、vue3、 echarts

本篇文章给大家带来了关于ECharts的相关知识,其中主要跟大家聊一聊怎么封装ECharts,感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。

文章的开头总是很难水的,就不多说了

本文涉及 : typescriptvue3、 echarts

因为 ECharts 的使用场景及其广阔,并且定制化的场景比较多,所以就不封装可以复用的组件了,在我看来每个组件还是需要一个独立的 option ,这里仅封装更好使用的 echats

目录

|--src
    |--components     // 组件
        |--echarts    // echats 封装目录
            |--echarts-types.ts    // 一些类型
            |--library.ts          // 为 echats 增加的一些功能
            |--useECharts.ts       // 主函数
        
        |--EChartsComponents
            |--a-echarts.Vue      // 组件使用
    
|--App.vue

代码

library.ts

library.ts 中集中引入,挂载 echarts 需要用到的组件和功能

import * as echarts from 'echarts/core';

import {
        BarChart,
        LineChart,
        PieChart,
        MapChart,
        PictorialBarChart,
        RadarChart,
        ScatterChart
} from 'echarts/charts';

import {
        TitleComponent,
        TooltipComponent,
        GridComponent,
        PolarComponent,
        AriaComponent,
        ParallelComponent,
        LegendComponent,
        RadarComponent,
        ToolboxComponent,
        DataZoomComponent,
        VisualMapComponent,
        TimelineComponent,
        CalendarComponent,
        GraphicComponent
} from 'echarts/components';

echarts.use([
        LegendComponent,
        TitleComponent,
        TooltipComponent,
        GridComponent,
        PolarComponent,
        AriaComponent,
        ParallelComponent,
        BarChart,
        LineChart,
        PieChart,
        MapChart,
        RadarChart,
        PictorialBarChart,
        RadarComponent,
        ToolboxComponent,
        DataZoomComponent,
        VisualMapComponent,
        TimelineComponent,
        CalendarComponent,
        GraphicComponent,
        ScatterChart
]);

export default echarts;

echarts-types.ts

一些需要使用的类型,在这里规范

export enum RenderType {
        SVGRenderer = 'SVGRenderer',
        canvasRenderer = 'SVGRenderer'
}

export enum ThemeType {
        Light = 'light',
        Default = 'default',
}

useECharts.ts 主要文件

引入需要使用的功能模块,EChartsOption 类型在使用时容易报红,这里暂时用 any

import { onMounted, onUnmounted, Ref, unref } from "vue";
import echarts from "./library";
// import type { EChartsOption } from 'echarts'
import { SVGRenderer, CanvasRenderer } from 'echarts/renderers'
import { RenderType, ThemeType } from './echarts-types'

export function useECharts(elparams: Ref<htmlDivElement> | HTMLDivElement, autoUpdateSize: boolean = false, render: RenderType = RenderType.SVGRenderer, theme = ThemeType.Default) {

        // 渲染模式 
        echarts.use(render === RenderType.SVGRenderer ? SVGRenderer : CanvasRenderer)

        // echats实例
        let echartsInstance: echarts.ECharts | null = null

        // 初始化 echats实例
        function initCharts() {

                const el = unref(elparams)

                if (!el) return

                echartsInstance = echarts.init(el, theme)
        }

        // 配置
        function setOption(option: any) {

                showLoading()

                if (!echartsInstance) initCharts()

                if (!echartsInstance) return

                echartsInstance.setOption(option)

                hideLoading()

        }

        // 获取 echats实例
        function getInstance() {

                if (!echartsInstance) initCharts()

                return echartsInstance
        }

        // 更新大小
        function onResize() {

                echartsInstance?.resize()

        }

        // 监听元素大小变化
        function watchEl() {

                if (animation) unref(elparams).style.transition = 'width 1s, height 1s'

                const resizeObserve = new ResizeObserver(() => onResize())

                resizeObserve.observe(unref(elparams))

        }

        // 显示加载状态
        function showLoading() {

                if (!echartsInstance) initCharts()

                echartsInstance?.showLoading()
        }

        // 隐藏加载状态
        function hideLoading() {

                if (!echartsInstance) initCharts()

                echartsInstance?.hideLoading()
        }

        // 生命钩子——组件挂载完成
        onMounted(() => {

                window.addEventListener('resize', onResize)

                if (autoUpdateSize) watchEl()

        })

        // 生命钩子——页面销毁
        onUnmounted(() => {

                window.removeEventListener('resize', onResize)

        })

        return { setOptions, getInstance }

}

在组件中的使用

a-echarts.vue 使用,我们现在只需要去找一些 option 就可以实现不同的图表了

这个还不错的网站,有很多示例 PPChart 我们随便拿一个来试试吧,

image.png

把配置代码复制到下面,就可以看见效果了

<template>
        <div ref="MyEcharts"></div>
</template>

<script setup>
import { onMounted, Ref, ref } from "vue";
import echarts from "../echarts/library";

//获取echarts实例
const MyEcharts = ref<HTMLDivElement | null>(null)

const { setOption, getInstance } = useECharts(MyEcharts as Ref<HTMLDivElement>, false, true)

onMounted(() => {
        
        setOption(option);

        const echartsInstance = getInstance()

})

</script>

App.vue

<template>
  <echarts></echarts>
</template>
<script setup>

import echarts from './components/EchartsComponents/a-echarts.vue'

</script>
<style scoped></style>

image.png

完毕! 感觉有帮助的话,求个小赞!!!

以上就是一文教你如何正确封装ECharts的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: 一文教你如何正确封装ECharts

本文链接: https://www.lsjlt.com/news/207084.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 一文教你如何正确封装ECharts
    本篇文章给大家带来了关于ECharts的相关知识,其中主要跟大家聊一聊怎么封装ECharts,感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。文章的开头总是很难水的,就不多说了本文涉及 : TypeScript、Vue3、 echarts...
    99+
    2023-05-14
    前端 ECharts Vue.js
  • 怎么正确封装ECharts
    这篇文章主要介绍“怎么正确封装ECharts”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么正确封装ECharts”文章能帮助大家解决问题。本文涉及 : TypeScript、Vue3、 echa...
    99+
    2023-07-05
  • 一文教你如何封装安全的go
    目录前言封装SafeGoSafeGoAndWait实现说明首先是接口设计方面其次是日志兼容hade最后是打印panic的trace记录总结前言 在业务代码开发过程中,我们会有很大概率...
    99+
    2024-04-02
  • 一文教你正确的使用Spring boot框架
    今天就跟大家聊聊有关一文教你正确的使用Spring boot框架,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。前言首先来说一下为什么使用 Spring Boot,之前我用的后端 WE...
    99+
    2023-05-31
    springboot spring boo
  • 一文教你正确的在java中使用枚举
    一文教你正确的在java中使用枚举?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。java枚举使用详解在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而...
    99+
    2023-05-31
    java 枚举 ava
  • 一文带你了解如何正确使用MyBatisPlus
    目录1、创建测试表2、创建 Spring Boot 工程3、导入依赖4、编写数据库配置文件5、编写代码6、CRUD 测试7、打印SQL语句本篇文章,我们通过 MyBatis Plus...
    99+
    2022-12-08
    MyBatisPlus使用方法 MyBatisPlus使用
  • Golang安装教程:从零开始,教你如何正确安装golang开发环境!
    Golang安装教程:从零开始,教你如何正确安装Golang开发环境! 导语:随着Golang在近几年的爆炸式增长,越来越多的开发者开始学习和使用Golang进行开发。但是对于一些初学者来说,安装Golang...
    99+
    2024-01-19
    教程 开发环境 Golang安装
  • vue项目中如何封装echarts
    本文小编为大家详细介绍“vue项目中如何封装echarts”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue项目中如何封装echarts”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。场景Echarts使用时,...
    99+
    2023-06-29
  • 五步教你如何正确配置PyCharm环境
    标题:五步教你如何正确配置PyCharm环境 PyCharm是一款功能强大的Python集成开发环境,能够提高开发效率和代码质量。正确配置PyCharm环境对于开发者来说至关重要。以下...
    99+
    2024-02-22
    导入项目 配置解释器
  • 教你如何正确的使用Spring Boot框架
    本篇文章为大家展示了教你如何正确的使用Spring Boot框架,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Spring Boot主要有如下核心功能:独立运行的Spring项目Spring Boo...
    99+
    2023-05-31
    springboot spring boo
  • 教你如何正确了解java三大特性!!!!
    目录继承与多态一.包 二.继承 三:重载和重写3.1重载(Overload)3.2 重写四:多态4.1 多态的转型   4.2 instanc...
    99+
    2024-04-02
  • vue项目如何雅的封装echarts
    这篇文章主要介绍“vue项目如何雅的封装echarts”,在日常操作中,相信很多人在vue项目如何雅的封装echarts问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue项目如何雅的封装echarts”的疑...
    99+
    2023-06-29
  • 一文教会你从零开始画echarts地图
    目录echarts地图制作基础配置数据渲染嵌入文字地图下钻结合水印制作级联效果visualMap总结echarts地图制作 离线地图下载地址https://datav.aliyun....
    99+
    2024-04-02
  • 手把手教你Vue3如何封装组件
    前言 在开发Vue3项目的过程中,我们经常会使用组件去进行复用或者用组件去简洁index.vue文件,那什么是组件呢?如果把index.vue文件说成是一栋大楼的话,那组件就是一块块...
    99+
    2023-02-27
    vue 封装组件 如何封装vue组件 vue封装组件过程
  • 一篇文章带你了解如何正确使用java线程池
    目录1、线程是不是越多越好?2、如何正确使用多线程?3、Java线程池的工作原理4、掌握JUC线程池API总结1、线程是不是越多越好? 在学习多线程之前,读者可能会有疑问?如果单线程...
    99+
    2024-04-02
  • vue2项目中如何封装echarts地图
    这篇文章主要介绍了vue2项目中如何封装echarts地图的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue2项目中如何封装echarts地图文章都会有所收获,下面我们一起来看看吧。效果图先上个效果图吧,说明...
    99+
    2023-06-29
  • vue中如何封装echarts公共组件
    这篇文章主要讲解了“vue中如何封装echarts公共组件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue中如何封装echarts公共组件”吧!定义图表公共样式是为了统一同一网站各页面图...
    99+
    2023-06-30
  • 一篇文章带你入门Java封装
    目录什么是封装如何实现封装代码展示构造方法注意点:代码展示总结封装的优点什么是封装 Java中的封装是将数据(变量)和作用于数据(方法)的代码作为一个单元包装在一起的机制。 在封装中...
    99+
    2024-04-02
  • 一篇文章让你看懂封装Axios
    目录前言拦截器不要返回数据,依然返回 AxiosResponse 对象不推荐的做法推荐的做法为你的请求添加拓展支持请求重试支持 jsonp 请求支持 URI 版本控制保持请求唯一后语...
    99+
    2024-04-02
  • 教你win8一键装机如何安装
    如今也有部分网友在使用了win10系统后想换行win8系统,但是又不清楚怎么装回去,下面就和大家分享一个方法吧。1、我们可以使用小白一键重装系统来帮助我们安装win8即可。打开浏览器,搜索小白官网,进入官网点击下载小白三步装机版软件,选择w...
    99+
    2023-07-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作