在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 相关文章推荐
Convert Seconds To Hours
Jun 16 Javascript
50款非常棒的 jQuery 插件分享
Mar 29 Javascript
Js实现当前点击a标签变色突出显示其他a标签回复原色
Nov 27 Javascript
JS触发服务器控件的单击事件(详解)
Aug 06 Javascript
vue组件实例解析
Jan 10 Javascript
在bootstrap中实现轮播图实例代码
Jun 11 Javascript
vue在使用ECharts时的异步更新和数据加载详解
Nov 22 Javascript
Node.js 利用cheerio制作简单的网页爬虫示例
Mar 01 Javascript
layui 动态设置checbox 选中状态的例子
Sep 02 Javascript
使用原生JS实现火锅点餐小程序(面向对象思想)
Dec 10 Javascript
JS自定义滚动条效果
Mar 13 Javascript
如何在vue中使用kindeditor富文本编辑器
Dec 19 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
Zend的Registry机制的使用说明
2013/05/02 PHP
PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法
2015/03/07 PHP
php装饰者模式简单应用案例分析
2019/10/23 PHP
javascript showModalDialog 多层模态窗口实现页面提交及刷新的代码
2009/11/28 Javascript
JQuery从头学起第二讲
2010/07/04 Javascript
IFrame跨域高度自适应实现代码
2012/08/16 Javascript
JSON传递bool类型数据的处理方式介绍
2013/09/18 Javascript
jquery实现tr元素的上下移动示例代码
2013/12/20 Javascript
jQuery选择器全面总结
2014/01/06 Javascript
JavaScript控制各种浏览器全屏模式的方法、属性和事件介绍
2014/04/03 Javascript
JavaScript实现的in_array函数
2014/08/27 Javascript
Bootstrap表单布局样式代码
2016/05/31 Javascript
jQuery插件Flexslider实现图片轮播、图文结合滑动切换效果
2020/04/16 Javascript
node.js学习之交互式解释器REPL详解
2016/12/08 Javascript
vue-cli webpack配置文件分析
2019/05/20 Javascript
layer提示框添加多个按钮选择的实例
2019/09/12 Javascript
layui写后台表格思路和赋值用法详解
2019/11/14 Javascript
Vue SSR 即时编译技术的实现
2020/05/06 Javascript
vue+openlayers绘制省市边界线
2020/12/24 Vue.js
[02:26]2018DOTA2亚洲邀请赛赛前采访-Newbee篇
2018/04/03 DOTA
[56:29]Secret vs Optic 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python中多线程及程序锁浅析
2015/01/21 Python
python利用lxml读写xml格式的文件
2017/08/10 Python
Python3生成手写体数字方法
2018/01/30 Python
python 错误处理 assert详解
2020/04/20 Python
Django使用Profile扩展User模块方式
2020/05/14 Python
在keras中model.fit_generator()和model.fit()的区别说明
2020/06/17 Python
FLOS美国官网:意大利高级照明工艺的传奇
2018/08/07 全球购物
阿拉伯时尚购物网站:Nisnass
2021/02/07 全球购物
机电一体化专业应届本科生求职信
2013/09/27 职场文书
高中同学聚会邀请函
2014/01/11 职场文书
婚礼证婚人证婚词
2014/01/13 职场文书
英语教育专业自荐信
2014/05/29 职场文书
2014年高中班主任工作总结
2014/11/08 职场文书
解决Nginx 配置 proxy_pass 后 返回404问题
2021/03/31 Servers
SqlServer 垂直分表(减少程序改动)
2021/04/16 SQL Server