在vue中使用echarts图表实例代码详解


Posted in Javascript onOctober 22, 2018

安装vue依赖

使用npm

npm install echarts --save

使用yarn

yarn add echarts

使用国内的淘宝镜像:

//安装淘宝镜像
npm install -g cnpm --registry=https://registry.npm.taobao.org

//从淘宝镜像下载
cnpm install echarts -S

引入ECharts

安装好的ECharts会放在node_modules目录下。

全部引入

1.直接在项目代码引入

可以直接在项目代码中 require('echarts') 得到 ECharts。声明一个echarts变量,直接使用变量即可。

Home.vue //需要使用的页面

//引入
var echarts = require('echarts');

// 基于准备好的dom,初始化echarts实例
var 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]
 }]
});

2.全局引入

在mian.js中全局引入,并在vue.prototype属性中添加echarts属性为$echarts,在代码中通过this.$echarts就可以使用了。

main.js

//引入
import echarts from 'echarts'

Vue.prototype.$echarts = echarts

Home.vue //需要使用的页面

//基于准备好的dom,初始化echarts实例
var myChart = this.$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]
 }]
});

3.运行结果

在vue中使用echarts图表实例代码详解

按需引入

默认使用 require('echarts') 得到的是已经加载了所有图表和组件的 ECharts 包,因此体积会比较大,如果在项目中对体积要求比较苛刻,也可以只按需引入需要的模块。

如果只用到了柱状图,提示框和标题组件,在引入的时候也只需要引入这些模块,可以有效的将打包后的体积从 400 多 KB 减小到 170 多 KB。

引入之后使用方式和全局引入相同。

1.直接在项目代码引入

Home.vue

// 引入 ECharts 主模块
var echarts = require('echarts/lib/echarts');
// 引入柱状图
require('echarts/lib/chart/bar');
// 引入提示框和标题组件
require('echarts/lib/component/tooltip');
require('echarts/lib/component/title');

2.全局引入

main.js

import * as echarts from 'echarts/lib/echarts';
// 引入 echarts 主模块。
import 'echarts/lib/echarts'
// 引入柱形图
import 'echarts/lib/chart/bar'
// 引入柱形图
import 'echarts/lib/chart/pie'
//// 引入提示框组件、标题组件、工具箱、legend组件。
import 'echarts/lib/component/tooltip'
import 'echarts/lib/component/title'
import 'echarts/lib/component/toolbox'
import 'echarts/lib/component/legend'

Vue.prototype.$echarts =echarts;

注意

问题:

在以上例子中,我们获取dom的方式是通过document.getElementById('main'),也就是元素的id获取到dom的,这其实是会出现问题的。

代码如下

<div id="main"></div>
this.$echarts.init(document.getElementById('main'))

因为vue是单页面应用,如果将以上的组件使用两次,一个页面内id是不允许相同的,就会出现第一个组件正常显示,第二个组件无法显示。

解决办法:

在vue中,我们可以通过另一种方式获取dom,vue有一个$refs的对象,只要将组件注册ref。

代码如下

<div ref="main"></div>
this.$echarts.init(this.$refs.main)
或
this.$echarts.init(this.$refs['main'])

通过以上方法获取dom,无论组件复用多少次,都不需要担心id唯一的问题了。

Javascript 相关文章推荐
jQuery 1.0.4 - New Wave Javascript(js源文件)
Jan 15 Javascript
JavaScript 乱码问题
Aug 06 Javascript
利用jQuery的$.event.fix函数统一浏览器event事件处理
Dec 21 Javascript
jquery checkbox,radio是否选中的判断代码
Mar 20 Javascript
javascript 10进制和62进制的相互转换
Jul 31 Javascript
JS按回车键实现登录的方法
Aug 25 Javascript
js实现按钮加背景图片常用方法
Nov 01 Javascript
详解vue项目首页加载速度优化
Oct 18 Javascript
解决Vue开发中对话框被遮罩层挡住的问题
Nov 26 Javascript
vue使用nprogress实现进度条
Dec 09 Javascript
原生js实现随机点餐效果
Dec 10 Javascript
vue 动态添加class,三个以上的条件做判断方式
Nov 02 Javascript
Koa 使用小技巧(小结)
Oct 22 #Javascript
在js代码拼接dom对象到页面上的模板总结
Oct 21 #Javascript
如何安装控制器JavaScript生成插件详解
Oct 21 #Javascript
Node.js中的不安全跳转如何防御详解
Oct 21 #Javascript
详解Axios 如何取消已发送的请求
Oct 20 #Javascript
使用Vue做一个简单的todo应用的三种方式的示例代码
Oct 20 #Javascript
Iview Table组件中各种组件扩展的使用
Oct 20 #Javascript
You might like
解决File size limit exceeded 错误的方法
2013/06/14 PHP
解析php中array_merge与array+array的区别
2013/06/21 PHP
PHP基本语法总结
2014/09/06 PHP
PHP Header用于页面跳转时的几个注意事项
2016/10/21 PHP
php实现支持中文的文件下载功能示例
2017/08/30 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
浅析php如何实现爬取数据原理
2018/09/27 PHP
PHP命名空间(namespace)原理与用法详解
2019/12/11 PHP
常见JS验证脚本汇总
2015/12/01 Javascript
实例讲解JavaScript中call、apply、bind方法的异同
2016/09/13 Javascript
微信小程序实现日历功能
2018/11/27 Javascript
vue data对象重新赋值无效(未更改)的解决方式
2020/07/24 Javascript
js节流防抖应用场景,以及在vue中节流防抖的具体实现操作
2020/09/21 Javascript
[02:40]DOTA2英雄基础教程 巨牙海民
2013/12/23 DOTA
[01:05:40]VG vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python django集成cas验证系统
2014/07/14 Python
python制作一个桌面便签软件
2015/08/09 Python
Python实现快速排序和插入排序算法及自定义排序的示例
2016/02/16 Python
Django 内置权限扩展案例详解
2019/03/04 Python
python网络应用开发知识点浅析
2019/05/28 Python
python隐藏终端执行cmd命令的方法
2019/06/24 Python
Pandas中resample方法详解
2019/07/02 Python
django 实现celery动态设置周期任务执行时间
2019/11/19 Python
简单介绍django提供的加密算法
2019/12/18 Python
PyTorch 随机数生成占用 CPU 过高的解决方法
2020/01/13 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
2020/04/14 Python
CSS中垂直居中的简单实现方法
2015/07/06 HTML / CSS
HTML5实现页面切换激活的PageVisibility API使用初探
2016/05/13 HTML / CSS
简述数据库的设计过程
2015/06/22 面试题
CAD制图人员的自荐信
2014/02/07 职场文书
护士长竞聘书
2014/03/31 职场文书
病媒生物防治方案
2014/05/13 职场文书
根叔历年演讲稿
2014/05/20 职场文书
社区春季防火方案
2014/06/02 职场文书
党员学习型组织心得体会
2019/06/21 职场文书
Python快速优雅的批量修改Word文档样式
2021/05/20 Python