在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 相关文章推荐
兼容IE与firefox火狐的回车事件(js与jquery)
Oct 20 Javascript
js作用域及作用域链概念理解及使用
Apr 15 Javascript
高效的获取当前元素是父元素的第几个子元素
Oct 15 Javascript
javascript实现浏览器窗口传递参数的方法
Sep 03 Javascript
简单总结JavaScript中的String字符串类型
May 26 Javascript
温习Javascript基础语法之词法结构
May 31 Javascript
canvas 弹幕效果(实例分享)
Jan 11 Javascript
Bootstrap如何激活导航状态
Mar 22 Javascript
Koa2 之文件上传下载的示例代码
Mar 29 Javascript
一文读懂ES7中的javascript修饰器
May 06 Javascript
es6数组之扩展运算符操作实例分析
Apr 25 Javascript
如何用JavaScript检测当前浏览器是无头浏览器
Apr 27 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
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
2010/05/04 PHP
PHP isset()与empty()的使用区别详解
2010/08/29 PHP
Laravel 自带的Auth验证登录方法
2019/09/30 PHP
jquery+ajax+C#实现无刷新操作数据库数据的简单实例
2014/02/08 Javascript
jQuery封装的tab选项卡插件分享
2015/06/16 Javascript
JavaScript Length 属性的总结
2015/11/02 Javascript
picLazyLoad 实现图片延时加载(包含背景图片)
2016/07/21 Javascript
JavaScript编写一个简易购物车功能
2016/09/17 Javascript
vue2.0 如何把子组件的数据传给父组件(推荐)
2018/01/15 Javascript
解决js ajax同步请求造成浏览器假死的问题
2018/01/18 Javascript
JS实现的文件拖拽上传功能示例
2018/05/21 Javascript
基于Koa2写个脚手架模拟接口服务的方法
2018/11/27 Javascript
Node.js之readline模块的使用详解
2019/03/25 Javascript
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
2019/05/14 Javascript
前后端常见的几种鉴权方式(小结)
2019/08/04 Javascript
解决Angularjs异步操作后台请求用$q.all排列先后顺序问题
2019/11/29 Javascript
Python 内置函数complex详解
2016/10/23 Python
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
2017/04/18 Python
python输入错误密码用户锁定实现方法
2017/11/27 Python
python抓取网站的图片并下载到本地的方法
2018/05/22 Python
使用python脚本自动创建pip.ini配置文件代码实例
2019/09/20 Python
Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法
2020/05/26 Python
基于K.image_data_format() == 'channels_first' 的理解
2020/06/29 Python
Python+logging输出到屏幕将log日志写入文件
2020/11/11 Python
JD Sports比利时官网:英国领先的运动鞋和运动服饰零售商
2018/10/10 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述
2013/03/30 面试题
人力资源管理专业毕业生推荐信
2013/11/07 职场文书
设计部经理的岗位职责
2013/11/16 职场文书
巧克力蛋糕店创业计划书
2014/01/14 职场文书
电脑专业个人求职信范文
2014/02/04 职场文书
信息管理应届生求职信
2014/03/07 职场文书
机电一体化应届生求职信
2014/08/09 职场文书
2016年社区植树节活动总结
2016/03/16 职场文书
Python 数据可视化之Matplotlib详解
2021/11/02 Python
Redis 操作多个数据库的配置的方法实现
2022/03/23 Redis
Mysql数据库group by原理详解
2022/07/07 MySQL