【Vue】在Vue3中使用Echarts的示例 两种方法

文章目录

  • 方法一
    • template渲染部分
    • js部分
    • 方法一实现效果
  • 方法二
    • template部分
    • js or ts部分
    • 方法二实现效果

贴个地址~
Apache ECharts官网地址
Apache ECharts示例地址

官网有的时候示例显示不出来,属于正常现象,多进几次就行


开始使用前,记得先安装好echart

复制代码
npm install echarts --save

以下代码我采用的都是vue文件内全部引入,是否按需引入看各自项目要求进行精简。
免责声明(bushi)

我采用的版本是:

"echarts": "^5.6.0"

"vue": "^3.5.13"

"vite": "^6.0.5",

"vite-plugin-vue-devtools": "^7.7.0"


方法一

template渲染部分

最简单的柱状图例子,跟着官方文档走的 ->Apache ECharts - 在项目中引入ECharts

在vue前面写上的显示区域div块的代码,下面代码是我自己的尝试内容,element-plus(也就是包含el-前缀的标签)是另外的内容,和Echart无关。

html 复制代码
<template>
  <div>
    freedomwxe 第一次调试
  </div>

  <div>
    <el-button type="primary">点击</el-button>
  </div>
  <div>
    <span style="margin-left: 30px; color: #666">
      <el-icon :size="20" color="#666" style="top: 4px"><View /></el-icon> 666
    </span>
  </div>

  <div id="main" class="box"></div>

</template>

重点在id=main的div块这里,和下面js代码相互对应

html 复制代码
<div id="main" class="box"></div>

js部分

下面这块代码和上面的vue直接放到一起

重点在于onMounted这个钩子函数,如果直接贴上到js里,会发现页面内没有生效。

这里myChart用于获取id=main的dom元素,要确保获取到才能显示到上面对应id的div块。

js 复制代码
<script setup>
import * as echarts from 'echarts';
import { onMounted } from 'vue';


onMounted(() => {
  // 基于准备好的 dom,初始化 echarts 实例
  const myChart = echarts.init(document.getElementById('main'));
  // 绘制图表
  myChart.setOption({
    title: {
      text: 'ECharts 入门示例'
    },
    tooltip: {},
    xAxis: {
      data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
    },
    yAxis: {},
    series: [
      {
        name: '销量',
        type: 'bar',
        data: [5, 20, 36, 10, 10, 20]
      }
    ]
  });
});
</script>


<style>
  .box{
    width: 300px;
    height: 300px;
    background-color: rgb(188, 227, 236);
  }
</style>

方法一实现效果


方法二

实际在项目中使用,发现第一个有局限性,它可以加载官方文档里最简单的一些图,但是示例那些复杂的却无法正确显示到页面上了,在控制台打印说无法找到对应dom元素(尽管代码逻辑上无误,也可能是我采用了lang=ts的缘故)。

然后ai给的思路是在onMounted层内再套一层间隔时间的函数(nextTick不行),至于时间是多少我试过1、10、100、1000都可以。

template部分

随意加上你要的div块,但是id必须与后续js(ts)里匹配

html 复制代码
<section class="lt">
    <div class="leftClass">
       <div id="left-top-chart"></div>
    </div>
</section>

js or ts部分

有些地方可能存在冗余,根据各自实际代码进行调整

ts 复制代码
<script lang="ts" setup>
import {onMounted, reactive ,nextTick,ref} from 'vue'
import * as echarts from 'echarts';

// 左上部分
onMounted(() => {
  setTimeout(() => {
    const lt_chartDom = document.getElementById('left-top-chart');
    if (lt_chartDom) {
      // 基于准备好的 dom,初始化 echarts 实例
      const ltChart = echarts.init(lt_chartDom);
      console.log("left-top-chartDom: ", lt_chartDom)
      const ltoption = {
        xAxis: {
          color:[
            '#ffffff',
          ],
          type: 'category',
          boundaryGap: false,
          data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
        },
        yAxis: {
          color:[
            '#ffffff',
          ],
          type: 'value'
        },
        series: [
          {
            color:[
              '#41bcf1',
            ],
            data: [820, 932, 901, 934, 1290, 1330, 1320],
            type: 'line',
            areaStyle: {}
          }
        ]
      };
      ltChart.setOption(ltoption)

    } else {
      console.log("未找到left-top-chart的dom元素")
    }
  }, 1);
});

方法二实现效果

over

理解或代码有误之处欢迎指正~

相关推荐
神明不懂浪漫25 分钟前
【第七章】Java中的常用类
java·开发语言·前端·经验分享·笔记
GuWenyue6 小时前
放弃云端API!一套React+WebGPU本地LLM方案,零数据上传、离线可用
前端·人工智能·前端框架
原则猫7 小时前
函数/变量提升
前端
独泪了无痕8 小时前
Vue3 Hooks使用实战解析
前端·vue.js
shawxlee9 小时前
vue3在public下封装config.js自定义配置动态数据,可在打包后直接修改,方便后端部署及后续维护
前端·javascript·经验分享·vue·团队开发·js·项目优化
用户0595401744610 小时前
把记忆存储的回归测试从手工换成 Playwright + GitHub Actions,线上缺陷降低 80%
前端·css
触底反弹10 小时前
🚀 从 DOM0 级到 React 合成事件:前端事件监听的 20 年演进史
前端·react.js·面试
kyriewen10 小时前
我给前端项目的接口请求套了6层保护——才发现以前一直在裸奔
前端·javascript·面试
颜酱10 小时前
04 | 召回前置准备:搭好召回所需的四个数据库
前端·人工智能·后端
jieyucx11 小时前
Nuxt4阶段六:工程化与进阶 —— 模块、中间件、插件、TS 与测试
中间件·vue·web·nuxt·全栈·ssr