vue项目中封装echarts比较优雅的方式

这篇文章主要讲解如何将Echarts封装到Vue组件中提供的封装只是一种大概的思路,实际项目中,可能会与这里出现偏差。不过方法都是一样的,可以对照着做一些更改!

在这里插入图片描述


作者分享

为什么需要封装echarts
  • 开发者在制作图表时都需要从头到尾书写一遍完整的option配置,十分冗余
  • 在同一个项目中,各类图表设计十分相似,甚至是相同,没必要一直做重复工作
  • 在这里插入图片描述
优点
  • 方便复用
  • 项目里需要用到的图表会有多个,实现少代码自动化导入,不需要一个个import
  • 展示类的图表,数据与业务、样式分离,只传数据就行
  • 图表可配置
  • 本人图表用在大屏数据可视化的情况比较多,采用的是等比缩放的方式,所以图表也能根据界面缩放自动缩放,不需要手动调用

一、使用Vite创建Vue项目

1. 创建项目

接下啦就开始我们的学习吧!
1.首先创建一个文件夹,进入终端,一定要安装node ,查看我们的node版本

node -v

在这里插入图片描述
2.进入vite官网
Vite官方中文文档地址
在这里插入图片描述
点击开始就可以进入文档了

使用npm+vite
npm create vite@latest

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

使用yarn+vite
$ yarn create vite

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 安装echarts
//npm 方式
 npm i echarts

在这里插入图片描述


在这里插入图片描述

二、创建echarts封装组件页面

1. 创建component/Charts.vue
<template>
  <div class="container" ref="container"></div>
</template>
<script setup>
import { onMounted, ref, watch } from "vue";
import * as echarts from 'echarts'
// 1.引入echarts
const container = ref(null);
const chart=ref(null)
// echarts实例保存在ref中


const props=defineProps({
  options:{
    // options是一个必须的属性
    required:true,
    type:Object,
    // 类型为对象
    default:{},
    // 默认值是空的对象
  }
})
// 4.这个时候chart组件虽然可以使用了,但是当options变化的时候图表不会刷新,我们这里可以watch对options进行监听,当options发生变化时,调用echarts.setoption更新配置,不过在watch不能访问onMounted中的echarts实例,这时候我们可以把echarts实例也保存ref中
onMounted(()=>{
  chart.value=echarts.init(container.value,"dark")
  chart.value.setOption(props.options);
  // dark深色主题
  // 2.定义一个ref来保存dom元素,ref中保存的元素到dom加载完成之后才会有值,所以需要在onMonMounted声明周期中获取它,因为这是dom已经加载完成了,获取到元素之后就可以以使用echarts.init进行初始化了,初始化之后会返回echarts实例
  // chart.setOption(props.options
  // )

  // 3.接着让Chart组件接受一个options属性,用于接收图表配置,在echarts初始化完成之后,把配置传给echarts实例
})

const{ options}= props
watch(options,(newOptions)=>{
  chart.value.setOption(newOptions)
},{
  deep:true
})
//5.watch中的代码很简单,就是调用echarts.setOption,把新的options的值传递进入就行了,watch第一个参数可以是一个ref,我们把options转成ref传递给它,第二个参数是处理函数,第二个参数接收俩个参数,分别是监听属性新变化的值和之前的值,我们把 新变化的值传递给echarts,这样就可以重新挥着图表了,第三个参数为是否深度对比,对于配置项这种嵌套比较多的对象需要设置爱喂喂喂true
</script>
<style scoped>
.container{
  width: 100%;
  height: 100%;
}
/* css部分,给容器设置宽高为100% ,具体真水的宽高,让使用它的组件来设置,这里需要注意echarts要求必须使用宽高才能正常的绘制*/
</style>

  1. Charts作为基础组件,加载并初始化echarts的东西,并根据配置的变化更新图表
  2. 在vue中获取dom元素需要使用template.ref’,在vue3中template.ref和响应ref合为了一体
  3. 定义一个ref来保存dom元素,ref中保存的元素到dom加载完成之后才会有值,所以需要在onMonMounted声明周期中获取它,因为这是dom已经加载完成了,获取到元素之后就可以以使用echarts.init进行初始化了,初始化之后会返回echarts实例
  4. 接着让Chart组件接受一个options属性,用于接收图表配置,在echarts初始化完成之后,把配置传给echarts实例
  5. options是一个必须的属性,类型为对象 默认值是空的对象
  6. 这个时候chart组件虽然可以使用了,但是当options变化的时候图表不会刷新,我们这里可以watch对options进行监听,当options发生变化时,调用echarts.setoption更新配置,不过在watch不能访问onMounted中的echarts实例,这时候我们可以把echarts实例也保存ref中
  7. watch中的代码很简单,就是调用echarts.setOption,把新的options的值传递进入就行了,watch第一个参数可以是一个ref,我们把options转成ref传递给它,第二个参数是处理函数,第二个参数接收俩个参数,分别是监听属性新变化的值和之前的值,我们把 新变化的值传递给echarts,这样就可以重新挥着图表了,第三个参数为是否深度对比,对于配置项这种嵌套比较多的对象需要设置爱喂喂喂true
  8. css部分,给容器设置宽高为100% ,具体真水的宽高,让使用它的组件来设置,这里需要注意echarts要求必须使用宽高才能正常的绘制
    存放数据
2. 创建图表配置文件(src/charts/xxxxOptions.js)

在src新建一个chars文件夹存放图表数据,在下方可以放一些柱状图折线图的配置js文件
**注意:**配置可以导出一个函数,以后可以传递参数和自定义的配置项
图表配置=>echarts官网找到

// 图表配置=>echarts官网找到
// 我们这里可以导出一个函数,以后可以通过传递参数和自定义的配置项
export default function LineChartOption(){
  return{
      title: {
        text: 'Stacked Line'
      },
      tooltip: {
        trigger: 'axis'
      },
      legend: {
        data: ['Email', 'Union Ads', 'Video Ads', 'Direct', 'Search Engine']
      },
      grid: {
        left: '3%',
        right: '4%',
        bottom: '3%',
        containLabel: true
      },
      toolbox: {
        feature: {
          saveAsImage: {}
        }
      },
      xAxis: {
        type: 'category',
        boundaryGap: false,
        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
      },
      yAxis: {
        type: 'value'
      },
      series: [
        {
          name: 'Email',
          type: 'line',
          stack: 'Total',
          data: [120, 132, 101, 134, 90, 230, 210]
        },
        {
          name: 'Union Ads',
          type: 'line',
          stack: 'Total',
          data: [220, 182, 191, 234, 290, 330, 310]
        },
        {
          name: 'Video Ads',
          type: 'line',
          stack: 'Total',
          data: [150, 232, 201, 154, 190, 330, 410]
        },
        {
          name: 'Direct',
          type: 'line',
          stack: 'Total',
          data: [320, 332, 301, 334, 390, 330, 320]
        },
        {
          name: 'Search Engine',
          type: 'line',
          stack: 'Total',
          data: [820, 932, 901, 934, 1290, 1330, 1320]
        }
      ]
    };
  }


3. 创建图表展示组件(componemts/xxxChart.vue)
  • 引入封装好的chart组件和配置项
  • 在template中加载图表,注意配置项是一个函数,需要()调用一下
  • 在App.vue引入这个展示组件
<template>
<div>
  <Chart :options="LineChartOption()"/>
</div>
</template>
<!-- 新建一个组件, 在App.vue引入它-->
<script setup>
import Chart from './Charts.vue'
// 引入chart封装好的文件
import LineChartOption  from'./charts/lineOptions'
// 引入配置项
</script>
<style scoped>

</style>
4.App.vue

给展示图表的容器设置宽高背景对齐等样式=>css部分


<template>
  <div class="wrapper">
    <lineChart class="chart"/>
  </div>
</template>
<script setup>
import lineChart from './components/lineChart.vue'
// 引入组件
</script>
<style scoped>
*{
  box-sizing: border-box;
  padding: 0;
  margin: 0;
}
body{
  background:hsl(210deg,20%,10%)
}
.wrapper{
  width: 100vw;
  height: 100vh;
  display: grid;
  place-items: center;
}
.wrapper .chart{
  width: 50%;
  height: 70%;
}
</style>
这样图表就加载完成了

这样只需要设置不同的配置项和不同图表的组件就可以了
在这里插入图片描述

总结

这里面提供的封装只是一种大概的思路,实际项目中,可能会与这里出现偏差。不过方法都是一样的,可以对照着做一些更改!

如果这篇【文章】有帮助到你💖,希望可以给我点个赞👍,创作不易,如果有对前端端或者对python感兴趣的朋友,请多多关注💖💖💖,咱们一起探讨和努力!!!
👨‍🔧 个人主页 : 前端初见

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue封装Echarts有多种方式。一种方式是在main.js引入Echarts并将其挂载到Vue的原型上,这样在任何组件都可以通过this.$echarts来使用Echarts[1]。另一种方式是按需引入Echarts的模块,只引入需要使用的功能模块。具体步骤如下: 1. 安装Echarts:在终端运行命令`npm i echarts --save`来安装Echarts。 2. 引入Echarts:在需要使用Echarts的.vue文件,使用以下语句引入Echarts: ```javascript import echarts from 'echarts' ``` 3. 使用Echarts:在组件使用Echarts方式有多种。以下以在模板使用Echarts为例: 在模板添加一个具有宽度和高度的div,用于显示图表: ```html <template> <div id="main" style="width: 1200px; height: 500px"></div> </template> ``` 在脚本初始化Echarts并绘制图表: ```javascript <script> export default { mounted() { this.initEcharts(); }, methods: { initEcharts() { // 在组件直接使用this.$echarts来进行操作 var myChart = this.$echarts.init(document.getElementById("main")); // 指定图表的配置项和数据 var option = { title: { text: "ECharts 入门示例", }, tooltip: {}, legend: { data: ["销量"], }, xAxis: { data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"], }, yAxis: {}, series: [ { name: "销量", type: "line", data: [5, 20, 36, 10, 10, 20], }, ], }; // 使用刚指定的配置项和数据显示图表 myChart.setOption(option); }, }, }; </script> ``` 通过以上步骤,你就可以在Vue成功封装Echarts并使用它了。 除了以上方式,还可以将Echarts封装Vue的插件。这种方式可以更好地复用和扩展Echarts的功能。详细的插件封装步骤超出了本次回答的范围,你可以参考Echarts的官方文档或查找相关教程来了解更多关于插件封装的内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端初见

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值