我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Vue-cli3中怎么引入ECharts并实现自适应

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Vue-cli3中怎么引入ECharts并实现自适应

本篇内容介绍了“Vue-cli3中怎么引入ECharts并实现自适应”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Vue-cli3中怎么引入ECharts并实现自适应

效果

1. 安装echarts

npm install echarts

2. components/echarts/index.vue

<template>  <div :class="className" : /></template>
<script>  import echarts from 'echarts'  require('echarts/theme/macarons') // echarts theme  import {debounce} from '@/utlis/index.js'  const animationDuration = 6000  export default {    props: {      className: {        type: String,        default: 'chart'      },      width: {        type: String,        default: '100%'      },      height: {        type: String,        default: '100%'      },      // 数据源      echartsData: {        type: Object,        default: {}      },    },    data() {      return {        chart: null,      }    },    watch: {    },    //初始化    mounted() {      this.initChart()      this.resizeHandler = debounce(() => {        if (this.chart) {          this.chart.resize()        }      }, 100)      window.addEventListener('resize', this.resizeHandler)    },  //销毁    beforeDestroy() {       if (!this.chart) {        return      }      window.removeEventListener('resize', this.resizeHandler)      this.chart.dispose()      this.chart = null    },    methods: {      initChart() {        this.chart = echarts.init(this.$el, 'macarons')        this.chart.setOption(this.echartsData, animationDuration)      }    }  }</script>

3. utlis/index.js

export function debounce(func, wait, immediate) {  let timeout, args, context, timestamp, result   const later = function() {    // 据上一次触发时间间隔    const last = +new Date() - timestamp    // 上次被包装函数被调用时间间隔last小于设定时间间隔wait    if (last < wait && last > 0) {      timeout = setTimeout(later, wait - last)    } else {      timeout = null      // 如果设定为immediate===true,因为开始边界已经调用过了此处无需调用      if (!immediate) {        result = func.apply(context, args)        if (!timeout) context = args = null      }    }  }   return function(...args) {    context = this    timestamp = +new Date()    const callNow = immediate && !timeout    // 如果延时不存在,重新设定延时    if (!timeout) timeout = setTimeout(later, wait)    if (callNow) {      result = func.apply(context, args)      context = args = null    }    return result  }}

4. 在.vue 中使用 test/index.vue

<template>  <div id="test">    <echarts :echartsData="echartsData" />   </div></template>
<script>  import echarts from '@/components/echarts/index'  export default {    components: {      echarts    },    data() {      return {        echartsData: {          tooltip: {            trigger: 'axis',            axisPointer: { // 坐标轴指示器,坐标轴触发有效              type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'            }          },          grid: {            top: 10,            left: '2%',            right: '2%',            bottom: '3%',            containLabel: true          },          xAxis: [{            type: 'category',            data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],            axisTick: {              alignWithLabel: true            }          }],          yAxis: [{            type: 'value',            axisTick: {              show: false            }          }],          series: [{            name: 'pageA',            type: 'bar',            stack: 'vistors',            barWidth: '60%',            data: [79, 52, 200, 334, 390, 330, 220],          }, {            name: 'pageB',            type: 'bar',            stack: 'vistors',            barWidth: '60%',            data: [80, 52, 200, 334, 390, 330, 220],          }, {            name: 'pageC',            type: 'bar',            stack: 'vistors',            barWidth: '60%',            data: [30, 52, 200, 334, 390, 330, 220],          }]        }      }    }  }</script>
<style lang="scss" scoped>  #test {    width: 100%;    height: 100%;    background: antiquewhite;    position: absolute;    top: 0px;    bottom: 0px;  }</style>

Vue-cli使用ECharts并封装ECharts组件

1. 导入echarts

在终端输入

cnpm install echarts --save

在main.js中引入

import * as eCharts from 'echarts';Vue.prototype.$eCharts = eCharts;

2. 封装echarts组件

新建组件echats.vue

首先应该明确Echarts图形必须满足四项刚性条件才可以绘制:

  • 准备一个具有宽高的容器(container);

  • 每次绘制之前需要初始化(init);

  • 必须设置配置,否则无从绘制(option);

  • 改变数据时必须传入改变的数据,否则监听不到新数据(setOption);

  • 容器

注意,容器的宽高可以通过v-bind绑定样式的参数styleObj来设置(父组件引用时传递过来),使得应用echats组件时可以自由地设置宽高

<template>  <div id="myChart" : ref="chart">  </div></template>
  • 初始化+配置

由于初始化需要获取到容器dom,所以需要在mouted生命周期里面初始化 

mounted () {    //  因为需要拿到容器,所以要挂载之后     this.init() }, methods: {     init(){         let chart = this.$eCharts.init(this.$refs.chart)         let option = {          xAxis: {            type: 'category',            data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],          }, //X轴          yAxis: { type: 'value' }, //Y轴          series: [            {              data: [120, 200, 150, 80, 70, 110, 130],              type: 'bar',            }] //配置项         }        chart.setOption(option) }}

3. 父组件引用测试

Vue-cli3中怎么引入ECharts并实现自适应

Vue-cli3中怎么引入ECharts并实现自适应

“Vue-cli3中怎么引入ECharts并实现自适应”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Vue-cli3中怎么引入ECharts并实现自适应

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

下载Word文档

猜你喜欢

Vue-cli3中怎么引入ECharts并实现自适应

本篇内容介绍了“Vue-cli3中怎么引入ECharts并实现自适应”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!效果1. 安装echart
2023-07-02

echarts自适应大小怎么实现

ECharts是一个可视化图表库,可以通过以下方法来实现自适应大小:1. 使用百分比单位:在设置ECharts容器的宽度和高度时,可以使用百分比单位。例如,使用CSS的方式设置容器大小:```html
2023-09-29

echarts怎么实现自适应宽度

要实现Echarts图表的自适应宽度,你可以使用以下方法:使用CSS样式控制容器的宽度:将Echarts绘图容器的宽度设置为一个百分比,这样容器将会根据其父元素的宽度自适应调整大小。例如,可以将容器的宽度设置为100%:#chartCont
2023-10-21

Vue中textarea自适应高度方案怎么实现

本篇内容介绍了“Vue中textarea自适应高度方案怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!隐藏的问题抛开原生JS,框架的大
2023-06-22

Vue前端项目自适应布局怎么实现

这篇文章主要介绍“Vue前端项目自适应布局怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue前端项目自适应布局怎么实现”文章能帮助大家解决问题。一、单位尺寸px%vw、vh: 窗口em:
2023-07-02

css怎么实现中间自适应布局

本篇文章为大家展示了css怎么实现中间自适应布局,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。问题:如何实现三栏布局(高度固定,左中右的结构)假设高度已知,请写出三栏布局,其中左右宽度均为300px
2023-06-08

JavaMe中怎么实现自适应滚动显示

JavaMe中怎么实现自适应滚动显示,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。【原理】JavaMe中有一个坐标变换的功能。当触发相应的按键事件时,我们就让其显示相应的页,并
2023-06-17

vue项目中怎么实现全局引入jquery

这篇文章主要介绍“vue项目中怎么实现全局引入jquery”,在日常操作中,相信很多人在vue项目中怎么实现全局引入jquery问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue项目中怎么实现全局引入jqu
2023-07-02

怎么在CSS3 中使用@media 实现网页自适应

这期内容当中小编将会给大家带来有关怎么在CSS3 中使用@media 实现网页自适应,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、CSS2 中的@mediacss2里面虽然支持@media属性,但是能
2023-06-08

怎么在HTML5中使用 textarea实现高度自适应

今天就跟大家聊聊有关怎么在HTML5中使用 textarea实现高度自适应,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。方案一HTML5 Textarea 元素1. 自动获得焦点点击
2023-06-09

使用css怎么实现两边固定中间自适应布局

这篇文章将为大家详细讲解有关使用css怎么实现两边固定中间自适应布局,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。浮动