vue2 vue3中使用Echarts详细

目录
  • 1、安装
  • 2、vue2中使用Echarts
    • 在main.js文件中
    • 给定一个容器
  • 3、vue3中使用Echarts
    • 在根组件里引入echart,一般是App.vue
    • 在需要使用的页面,定义div
    • 然后在需要使用到Echarts的页面inject

1、安装

npm install echarts --save

2、vue2中使用Echarts

在main.js文件中

// 引入echarts
import echarts from 'echarts'
Vue.prototype.$echarts = echarts

给定一个容器

<div id="myChart" :style="{width: '300px', height: '300px'}"></div>

echarts初始化应在钩子函数mounted()中,这个钩子函数是在el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用

// 引入基本模板
let echarts = require('echarts/lib/echarts')

// 引入柱状图组件
require('echarts/lib/chart/bar')

// 引入提示框和title组件
require('echarts/lib/component/tooltip')
require('echarts/lib/component/title')

export default {
  name: 'hello',
  data() {
    return {
      msg: 'Welcome to Your Vue.js App'
    }
  },
  mounted() {
    this.drawLine();
  },
  methods: {
    drawLine() {
      // 基于准备好的dom,初始化echarts实例
      let myChart = echarts.init(document.getElementById('myChart'))
      // 绘制图表
     title: {
        text: '折线图堆叠'
    },
    tooltip: {
        trigger: 'axis'
    },
    legend: {
        data: ['邮件营销', '联盟广告', '视频广告', '直接访问', '搜索引擎']
    },
    grid: {
        left: '3%',
        right: '4%',
        bottom: '3%',
        containLabel: true
    },
    toolbox: {
        feature: {
            saveAsImage: {}
        }
    },
    xAxis: {
        type: 'category',
        boundaryGap: false,
        data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
    },
    yAxis: {
        type: 'value'
    },
    series: [
        {
            name: '邮件营销',
            type: 'line',
            stack: '总量',
            data: [120, 132, 101, 134, 90, 230, 210]
        },
        {
            name: '联盟广告',
            type: 'line',
            stack: '总量',
            data: [220, 182, 191, 234, 290, 330, 310]
        },
        {
            name: '视频广告',
            type: 'line',
            stack: '总量',
            data: [150, 232, 201, 154, 190, 330, 410]
        },
        {
            name: '直接访问',
            type: 'line',
            stack: '总量',
            data: [320, 332, 301, 334, 390, 330, 320]
        },
        {
            name: '搜索引擎',
            type: 'line',
            stack: '总量',
            data: [820, 932, 901, 934, 1290, 1330, 1320]
        }
    ]
    }
  }
}

3、vue3中使用Echarts

因为setup中没有this,而且这时候还没有渲染,所以在setup中 ,可以使用provide/inject来把echart引入进来

在根组件里引入echart,一般是App.vue

import * as echarts from 'echarts'
import { provide } from 'vue'

export default {
  name: 'App',
  setup(){
    provide('echarts',echarts)               //provide
  },
  components: {
  }
}

这里需要注意的是import * as echarts from 'echarts', 不能 import echarts from 'echarts',这样会报错,因为5,0版本的echarts的接口已经变成了下面这样:

export {
 EChartsFullOption as EChartsOption,
 connect,
 disConnect,
 dispose,
 getInstanceByDom,
 getInstanceById,
 getMap,
 init,
 registerLocale,
 registerMap,
 registerTheme
 };

在需要使用的页面,定义div

<div id="home-page-traffic_chart" style="width: 600px; height: 280px">

然后在需要使用到Echarts的页面inject

export default {
  name: 'data_page',
  setup () {
    const trafficData = ref({})
    const echarts = inject('echarts')
    onMounted(() => {
      const myChart = echarts.init(document.getElementById('home-page-traffic_chart'))
      // 绘制图表
      myChart.setOption({
        title: {
          text: '今日话务统计'
        },
        tooltip: {
          trigger: 'axis',
          axisPointer: {
            type: 'shadow'
          }
        },
        grid: {
          left: '3%',
          right: '4%',
          bottom: '3%',
          containLabel: true
        },
        xAxis: [
          {
            type: 'category',
            data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
            axisTick: {
              alignWithLabel: true
            }
          }
        ],
        yAxis: [
          {
            type: 'value'
          }
        ],
        series: [
          {
            name: '直接访问',
            type: 'bar',
            barWidth: '60%',
            data: [10, 52, 200, 334, 390, 330, 220]
          }
        ]
      })
      window.onresize = function () {
        myChart.resize()
      }
    })
    return {
    }
  }

}

效果图:

(0)

相关推荐

  • 简单聊聊vue3.0 sfc中setup的变化

    目录 前言 标准的sfc写法 script-setup 变量暴露 组件挂载 props 自定义事件 总结 前言 在vue中,sfc(单文件组件)指的是文件后缀名为.vue的特殊文件格式,它允许将 Vue 组件中的模板.逻辑 与 样式封装在单个文件中. 以下是一个基本的sfc <script> export default {   data() {     return {       greeting: 'Hello World!'     }   } } </script> &l

  • 全面总结Vue3.0的多种侦听方式

    目录 侦听器 一.wacthEffect 二.watch 1.1第一种方式侦听 1.2第二种方式侦听 1.3侦听多个数据源 总结 侦听器 虽然计算属性在大多数情况下更合适,但有时也需要一个自定义的侦听器.这就是为什么 Vue 通过watch选项提供了一个更通用的方法,来响应数据的变化.当需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的. 一.wacthEffect 立即执行,没有immediate 侦听,watchEffect是立即执行的,没有immediate,不需要传递侦听的内

  • vue3.0中的watch侦听器实例详解

    目录 前言 侦听器和计算属性的区别 vue3如何使用watch呢? 基本使用 监听多个响应式数据 侦听reactive定义的响应式数据 监听reactive定义的响应式数据的某一个属性 配置选项用法 总结 前言 虽然计算属性在大多数情况下更合适,但有时也需要一个自定义的侦听器.这就是为什么 Vue 通过watch选项提供了一个更通用的方法,来响应数据的变化.当需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的. 侦听器和计算属性的区别 计算属性里不可以做异步操作,侦听器可以做异步操作

  • 浅谈Vue3的几个优势

    目录 1.源码 1.1 monorepo 1.2 TypeScript 2.性能 2.1 优化源码体积 2.3 Proxy 2.4 Composition API Vue2已经非常优秀,且具备完善的社区和生态,但是Vue3仍然在源码.性能和语法 API 三个大的方面进行了优化 1.源码 1.1 monorepo 源码管理方式采用monorepo的方式进行管理,monorepo 把这些模块拆分到不同的 package 中,每个 package 有各自的 API.类型定义和测试.这样使得模块拆分更细

  • vue2 vue3中使用Echarts详细

    目录 1.安装 2.vue2中使用Echarts 在main.js文件中 给定一个容器 3.vue3中使用Echarts 在根组件里引入echart,一般是App.vue 在需要使用的页面,定义div 然后在需要使用到Echarts的页面inject 1.安装 npm install echarts --save 2.vue2中使用Echarts 在main.js文件中 // 引入echarts import echarts from 'echarts' Vue.prototype.$echar

  • Vue3中使用echarts的简单七个步骤(易懂,附紧急避坑)

    目录 前言 一.Echars官网地址 二.Echars的创建步骤(Vue3中使用Vue2的写法) 第一步:安装echars 第二步:导入echarts 第三步:创建Dom结构 第四步:ref获取创建的Dom结构 第五步:初始化图表 第六步:配置对应的option数据 第七步:setOption方法进行数据的设置 三.完整代码如下(包含父组件中的传值,Vue3中Vue2的分写法) 四.Vue3的写法完整写法如下(setup篇) 总结 前言 提示:vue3中使用echars的七步骤如下:其中第5-7

  • vue2项目中封装echarts地图的优雅方法

    目录 前言 能学到的知识 效果图 注意 1.vue中echarts 5.x以下版本和5.x以上版本引入的区别 2.记得在vue.config.js中开启运行时编译功能 实现 数据准备 echarts地图模块封装 页面调用 接口数据处理 代码总览 代码 总结 参考资料 前言 以前写过 vue项目中封装echarts的比较优雅的方式,大屏可视化里面,除了数据图表很常用,显示省市地图区域也是很常用到的,这是姐妹篇. 区域地图选区域时,需要弹窗展示数据,样式是各种各样的,各种排列的数据.图文混搭.视频.

  • Vue3中Vuex的详细使用方法

    目录 Vuex是做什么的? 状态管理是什么? 单页面的状态管理 vuex(Vue3.2版本) 多页状态管理 vuex store对象属性介绍 Vue3中获取 store 实例对象的方法 1. state 2. mutations 3. actions 4. getters 5. modules 总结 Vuex是做什么的? Vue官方:状态管理工具 状态管理是什么? 需要在多个组件中共享的状态.且是响应式的.一个变,全都改变. 例如一些全局要用的的状态信息:用户登录状态.用户名称.地理位置信息.购

  • vue3中cookie的详细使用过程

    目录 前言 1.vue中cookie的安装 2.登录过程中cookies的设置 3.在需要的地方拿到之前存入的cookies 总结 前言 cookie使用最多的地方想必是保存用户的账号与密码,可以避免用户每次登录时都要重新输入 1.vue中cookie的安装 在终端中输入命令npm install vue-cookies --save,即可安装cookies,安装之后在main.js文件中写下以下代码 import { createApp } from 'vue' import VueCooki

  • vue项目中封装echarts的优雅方式分享

    目录 场景 需求 代码总览 实现 components--chart--index.vue components--chart--index.js components--chart--options main.js chartTest index.vue index.js 代码 总结 补充 补充2:图表高亮轮询,dispatchAction使用 使用方法 附:echarts 饼图调用高亮示例 dispatchAction 补充3:封装echarts地图,姐妹篇 总结 场景 1.Echarts使

  • Vue3中echarts无法缩放的问题及解决方案

    目录 前言 问题描述 官网示例正常 官网示例在本地缩放异常 灵光乍现 问题解决 前言 实际工作中,使用到vue和echarts技术.项目原来用的vue2+echarts4,后来更新到了vue3+echarts5,结果遇到echarts无法绽放的问题. 问题描述 官网示例正常 1.打开echarts官网示例:https://echarts.apache.org/examples/zh/editor.html?c=area-rainfall这个示例的缩放功能是正常的.如下图: 官网示例在本地缩放异常

  • vue3 中使用 jsx 开发的详细过程

    目录 安装 JSX 插件 使用语法差异 模板 指令 事件修饰符 v-for v-on 插槽 安装 JSX 插件 在 Vue2 中要想使用 jsx 开发,需要安装 @vue/babel-preset-jsx 等插件,之后在 babel 里指定即可,详细可以参考下面的 Vue2 GitHub 文档 Vue2:GitHub 文档 —— Babel Preset JSX 最近在使用 Vue3,突然想用 jsx 进行开发部分页面,顺便记录一下,也可以参考下面的 Vue3 GitHub 文档 Vue3:Gi

  • 如何在Vue3中实现自定义指令(超详细!)

    目录 前言 生命周期 钩子的参数 简化形式 对象字面量 在组件上使用指令 几个实用的自定义指令 自动聚焦v-focus 防抖v-debounce 节流v-throttle 弹窗隐藏v-hide 总结 在开发Vue项目时,大多数人都会使用到Vue内置的一些指令,例如v-model.v-if等,在使用的时候不知道有没有想过自己也来实现一个指令呢.本文就以Vue3项目为基础,从原理.方法到实际案例.注意事项,尽可能细致的讲解如何自定义指令. 前言 我们需要明白为什么需要自定义一个指令,其实就是想更加简

  • vue2与vue3中生命周期执行顺序的区别说明

    目录 vue2与vue3中生命周期执行顺序区别 生命周期比较 简单例子说明 三种情况下的生命周期执行顺序 1.单页面下生命周期顺序 2.父子.兄弟组件的生命周期顺序 3.不同页面跳转时各页面生命周期的执行顺序 vue2与vue3中生命周期执行顺序区别 生命周期比较 vue2中执行顺序 beforeCreate=>created=>beforeMount =>mounted=>beforeUpdate =>updated=>beforeDestroy=>destro

随机推荐