npm 安装echarts

npm install echarts -D

使用流程

1. 引入echarts,并配置成全局方法

vue2

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

vue3

	import * as echarts from 'echarts';
Vue.config = echarts

2.创建公共组件echart

<!-- 自定义Echarts
* options: Object,//数据
* theme: String,//主题
* initOptions: Object,//初始化
* group: String,//分组
* autoResize: Boolean,//自适应
* modules: Array,//模型
-->
<template>
<div style="height: 100%;width:100%"></div>
</template>
<script>
// enumerating ECharts events for now
const ACTION_EVENTS = [
'legendselectchanged',
'legendselected',
'legendunselected',
'datazoom',
'datarangeselected',
'timelinechanged',
'timelineplaychanged',
'restore',
'dataviewchanged',
'magictypechanged',
'geoselectchanged',
'geoselected',
'geounselected',
'pieselectchanged',
'pieselected',
'pieunselected',
'mapselectchanged',
'mapselected',
'mapunselected',
'axisareaselected',
'brush',
'brushselected'
];
const MOUSE_EVENTS = [
'click',
'dblclick',
'mouseover',
'mouseout',
'mousedown',
'mouseup',
'globalout'
];
export default {
props: {
options: Object,
theme: String,
initOptions: Object,
group: String,
autoResize: Boolean,
modules: Array
},
data () {
return {
chart: null,
}
},
computed: { // 数据驱动,不更新DOM
width: {
cache: false,
get () {
return this.chart.getWidth()
}
},
height: {
cache: false,
get () {
return this.chart.getHeight()
}
},
isDisposed: {
cache: false,
get () {
return this.chart.isDisposed()
}
}
},
watch: {// 通过监听参数:options、group进行重绘
options: {
handler (options) {
if (!this.chart && options) {
this.echartInit();
} else {
this.chart.setOption(this.options, true);
}
},
deep: true
},
group: {
handler (group) {
this.chart.group = group
}
}
},
methods: {
// 设置数据
mergeOptions (options) {
this._delegateMethod('setOption', options)
},
// 是否重新绘制
resize (options) {
this._delegateMethod('resize', options)
},
dispatchAction (payload) {
this._delegateMethod('dispatchAction', payload)
},
convertToPixel (finder, value) {
return this._delegateMethod('convertToPixel', finder, value)
},
convertFromPixel (finder, value) {
return this._delegateMethod('convertFromPixel', finder, value)
},
containPixel (finder, value) {
return this._delegateMethod('containPixel', finder, value)
},
showLoading (type, options) {
this._delegateMethod('showLoading', type, options)
},
hideLoading () {
this._delegateMethod('hideLoading')
},
getDataURL (options) {
return this._delegateMethod('getDataURL', options)
},
getConnectedDataURL (options) {
return this._delegateMethod('getConnectedDataURL', options)
},
clear () {
this._delegateMethod('clear')
},
dispose () {
this._delegateMethod('dispose')
},
_delegateMethod (name, ...args) {
if (!this.chart) {
return
}
return this.chart[name](...args)
},
echartInit () { // 按需引入
if (this.chart) return false;
import('echarts').then(({ init }) => {
const { $el, theme, initOptions, group, options, autoResize, _resizeHanlder } = this
let chart = init($el, theme, initOptions);
if (group) {
chart.group = group
}
chart.setOption(options, true);
// 自定义点击事件回调
ACTION_EVENTS.forEach(event => {
chart.on(event, params => {
this.$emit(event, params)
})
});
// 自定义鼠标事件回调
MOUSE_EVENTS.forEach(event => {
chart.on(event, params => {
this.$emit(event, params)
})
});
if (autoResize) {
window.addEventListener('resize', _resizeHanlder, false)
}
this.chart = chart;
console.log('加载成功', chart)
}).catch(_ => {
console.log('加载失败')
})
},
_resizeHanlder () {
window.setTimeout(() => {
this.chart.resize()
}, 100)
}
},
mounted () { // 初始化
if (this.options) {
this.echartInit()
}
},
beforeDestroy () {
if (!this.chart) {
return
}
if (this.autoResize) {
window.removeEventListener('resize', this._resizeHanlder, false)
}
this.dispose()
},
connect (group) {
const { chart } = this;
if (typeof group !== 'string') {
group = group.map(chart => chart.chart)
}
this.chart.connect(group)
},
disconnect (group) {
this.chart.disConnect(group)
},
registerMap (...args) {
this.chart.registerMap(...args)
},
registerTheme (...args) {
this.chart.registerTheme(...args)
}
}
</script>

echarts基本使用与注意事项的更多相关文章

  1. 关于echarts绘制树图形的注意事项(文字倾斜、数据更新、缓存重绘问题等)

    最近项目中使用到echarts的树操作,对其中几点注意事项进行下总结. 效果图: 1.基础配置 options的配置如下: { tooltip: { trigger: 'item', triggerO ...

  2. ECharts学习总结(三):ECharts图表对象的初始化(init)详解以及注意事项

    一.相关js文件的引入 这里我们采用标签式引入文件的方式,我们引入两个js文件,一个是esl.js文件和一个echarts.js. <script src="js/esl.js&quo ...

  3. vue-webpack 引入echarts 注意事项

    0.执行教程 https://www.cnblogs.com/goloving/p/8654176.html1.在index 中创建 div <!DOCTYPE html> <htm ...

  4. Echarts 3.19 制作常用的图形 非静态

    最近阿里内部使用的 图表也向外开放了 而百度就好像更有良心一点,Echarts 早就开放了 . 自己学Echarts的时候走了很多的弯路,毕竟谁让自己菜呢,多撞几次南墙才晓得疼 才知道学习方法,新手上 ...

  5. 前端数据可视化echarts.js使用指南

    一.开篇 首先这里要感谢一下我的公司,因为公司需求上面的新颖(奇葩)的需求,让我有幸可以学习到一些好玩有趣的前端技术,前端技术中好玩而且比较实用的我想应该要数前端的数据可视化这一方面,目前市面上的数据 ...

  6. 如何快速使用ECharts绘制可视化图表

    1.在ECharts官网,下载ECharts的源码和示例文件. 2.解压缩下载下来的Echars压缩包,找到doc\example\www\echartsjs目录,将里面的js文件全部取出来,放到项目 ...

  7. 前端可视化数据--echarts

    很幸运能够给大家分享我对echarts的见解,在一些大型互联网公司面试时都会问到会使用echarts么?  今天在做项目时有这个需求,有幸学习echarts. 二.echarts.js的优势与不足 优 ...

  8. echart 注意事项-初始化和销毁

    net5x 博客园 首页 新随笔 联系 管理 订阅 随笔- 21  文章- 186  评论- 4  ECharts图表初级入门(三):ECharts对象的数据实例化方法汇总以及注意事项   [摘要]: ...

  9. echarts 认知笔记

    0.echarts.setOption的核心认知 请注意,它是合并对象,而不是替换对象. 举个简单的例子,如果你第一次setOption时在series中配置了10个对象. 那么你下一次你意图使用只有 ...

随机推荐

  1. Java基础(补充)

    为什么 Java 中只有值传递? 开始之前,我们先来搞懂下面这两个概念: 形参&实参 值传递&引用传递 形参&实参 方法的定义可能会用到 参数(有参的方法),参数在程序语言中分 ...

  2. 什么是持续集成(CI)?

    持续集成(CI)是每次团队成员提交版本控制更改时自动构建和测试代码的过程. 这鼓励开发人员通过在每个小任务完成后将更改合并到共享版本控制存储库来共 享代码和单元测试.

  3. Linux如何查看某个端口是否被占用

    1.netstat  -anp  |grep   端口号 2.netstat   -nultp(此处不用加端口号) 3.netstat  -anp  |grep  82    查看82端口的使用情况

  4. js--事件循环机制

    前言 我们知道JavaScript 是单线程的编程语言,只能同一时间内做一件事,按顺序来处理事件,但是在遇到异步事件的时候,js线程并没有阻塞,还会继续执行,这又是为什么呢?本文来总结一下js 的事件 ...

  5. 顺利通过EMC实验(13)

  6. Python 与 C++ 向量

    Python 与 C++ 向量 Python 和 C++ 对比 我们再回到向量!你已经学习了如何声明一个空的向量. 在下面的代码中,你可以比较 Python 列表和 C++ 向量的语法.你会看到,C+ ...

  7. 1_开环系统和闭环系统_反馈控制_Open/Closed Loop System_Feedback

  8. 使用css实现任意大小,任意方向, 任意角度的箭头

    使用css实现任意大小,任意方向, 任意角度的箭头 网页开发中,经常会使用到 下拉箭头,右侧箭头 这样的箭头. 一般用css来实现: { display: inline-block; margin: ...

  9. css-theme 通过一套源码生成一份包含多套皮肤配置的样式文件

    css-theme 通过单一css文件生成多套主题,并合并入一个css文件中 特性 只加载一个css,通过切换rootClass瞬间切换主题 体积压缩,将多套css合并,去除冗余代码,避免文件体积膨胀 ...

  10. 前端面试题整理——手写简易jquery

    class jQuery { constructor(selector) { const result = document.querySelectorAll(selector) console.lo ...