在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的多彩百分比 动态进度条 投票效果显示效果实现代码
Aug 28 Javascript
passwordStrength 基于jquery的密码强度检测代码使用介绍
Oct 08 Javascript
JS cookie中文乱码解决方法
Jan 28 Javascript
javascript校验价格合法性实例(必须输入2位小数)
May 05 Javascript
ie8模式下click无反应点击option无反应的解决方法
Oct 11 Javascript
Javascript中Array用法实例分析
Jun 13 Javascript
jQuery过滤选择器用法示例
Sep 12 Javascript
Node.js 使用递归实现遍历文件夹中所有文件
Sep 18 Javascript
微信小程序定位当前城市的方法
Jul 19 Javascript
jQuery子选择器与可见性选择器实例分析
Jun 28 jQuery
详解Vue-cli3.X使用px2rem遇到的问题
Aug 09 Javascript
vue element el-transfer增加拖拽功能
Jan 15 Vue.js
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
一个显示天气预报的程序
2006/10/09 PHP
PHP4与PHP3中一个不兼容问题的解决方法
2006/10/09 PHP
Breeze 文章管理系统 v1.0.0正式发布
2006/12/14 PHP
php 错误处理经验分享
2011/10/11 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
JavaScript Promise启示录
2014/08/12 Javascript
不同编码的页面表单数据乱码问题解决方法
2015/02/15 Javascript
js预加载图片方法汇总
2015/06/15 Javascript
不依赖Flash和任何JS库实现文本复制与剪切附源码下载
2015/10/09 Javascript
jquery实现表格隔行换色效果
2015/11/19 Javascript
vue.js绑定class和style样式(6)
2016/12/09 Javascript
React Native基础入门之初步使用Flexbox布局
2018/07/02 Javascript
JavaScript 浏览器对象模型BOM原理与常见用法实例分析
2019/12/16 Javascript
JavaScript中使用Spread运算符的八种方法总结
2020/06/18 Javascript
py2exe 编译ico图标的代码
2013/03/08 Python
在Python中使用元类的教程
2015/04/28 Python
Python实现豆瓣图片下载的方法
2015/05/25 Python
使用pip发布Python程序的方法步骤
2018/10/11 Python
Python嵌套式数据结构实例浅析
2019/03/05 Python
django的auth认证,authenticate和装饰器功能详解
2019/07/25 Python
python @classmethod 的使用场合详解
2019/08/23 Python
Django框架表单操作实例分析
2019/11/04 Python
通过python扫描二维码/条形码并打印数据
2019/11/14 Python
python多线程使用方法实例详解
2019/12/30 Python
实例讲解HTML5的meta标签的一些应用
2015/12/08 HTML / CSS
canvas绘制视频封面的方法
2018/02/05 HTML / CSS
斯洛伐克家具和时尚装饰品购物网站:Butlers.sk
2019/09/08 全球购物
什么是Smart Navigation?
2016/07/03 面试题
生物制药专业自我鉴定
2014/02/19 职场文书
安全技术说明书
2014/05/09 职场文书
超市仓管员岗位职责范本
2014/09/18 职场文书
实习工作表现评语
2014/12/31 职场文书
2015年“我们的节日·重阳节”活动总结
2015/07/29 职场文书
导游词之秦皇岛燕塞湖
2020/01/03 职场文书
详解Vue的列表渲染
2021/11/20 Vue.js
HTML中的表格元素介绍
2022/02/28 HTML / CSS