Vue2 使用 Echarts 创建图表实例代码


Posted in Javascript onMay 18, 2017

在后台管理系统中,图表是一个很普遍的元素。目前常用的图标插件有 charts,  Echarts, highcharts。这次将介绍 Echarts 在 Vue 项目中的应用。

一、安装插件

使用 cnpm 安装 Echarts

cnpm install echarts -S

和之前介绍的 axios 类似,echarts 也不能通过 Vue.use() 进行全局调用

通常是在需要使用图表的 .vue 文件中直接引入

import echarts from 'echarts'

也可以在 main.js 中引入,然后修改原型链

Vue.prototype.$echarts = echarts

然后就可以全局使用了

let myChart = this.$echarts.init(document.getElementById('myChart'))

二、创建图表

首先需要在 HTML 中创建图表的容器

需要注意的是,图表的容器必须指定宽高,也就是说 width,height 不能使用百分比,只能用 px

这样确实不够灵活,不过我们可以用 js 来改变 width 和 height,使图表容器能够自适应,具体的实现请往后看

然后在 mounted 中创建图表,具体的配置参考官方文档,这里不再赘述

 三、按需引入

上面引入的 echarts 包含了所有图表,但有时候我们只需要一两个基本图表,这时候完整的 echarts 就显得累赘

假如只需要创建一个饼图,那么可以这么做:

// 引入基本模板
 let echarts = require('echarts/lib/echarts')
 // 引入饼图组件
 require('echarts/lib/chart/pie')
 // 引入提示框和图例组件
 require('echarts/lib/component/tooltip')
 require('echarts/lib/component/legend')

之所以使用 require 而不是 import,是因为 require 可以直接从 node_modules 中查找,而 import 必须把路径写全

可以按需引入的模块列表见 https://github.com/ecomfe/echarts/blob/master/index.js

 四、适应容器

上面说过,图表的容器必须固定宽高,这确实是一个比较反人类的设定

为了解决这个问题,需要给图表容器外面再加一个容器,而这个外容器的宽高可以适应页面。上面的 <div class="charts"> 就是这样的外容器

let chartBox = document.getElementsByClassName('charts')[0]
let myChart = document.getElementById('myChart')

// 用于使chart自适应高度和宽度,通过窗体高宽计算容器高宽
function resizeCharts () {
 myChart.style.width = chartBox.style.width + 'px'
 myChart.style.height = chartBox.style.height + 'px'
}
// 设置容器高宽
resizeCharts()
   
let mainChart = echarts.init(myChart)
mainChart.setOption(options)

当页面加载的时候,将外容器的宽高,赋给图表容器

但这只是解决了页面加载时的自适应问题

如果在页面加载之后,仍需要图表自适应宽高,就需要用到 echarts 的媒体查询

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS、CSS加载中的小问题探讨
Nov 26 Javascript
jQuery Validate 验证,校验规则写在控件中的具体实例
Feb 27 Javascript
jquery制作漂亮的弹出层提示消息特效
Dec 23 Javascript
自己封装的常用javascript函数分享
Jan 07 Javascript
同一个网页中实现多个JavaScript特效的方法
Feb 02 Javascript
angularjs中使用ng-bind-html和ng-include的实例
Apr 28 Javascript
html5+canvas实现支持触屏的签名插件教程
May 08 Javascript
vue单页应用中如何使用jquery的方法示例
Jul 27 jQuery
react中的ajax封装实例详解
Oct 17 Javascript
用POSTMAN发送JSON格式的POST请求示例
Sep 04 Javascript
如何用RxJS实现Redux Form
Dec 29 Javascript
v-slot和slot、slot-scope之间相互替换实例
Sep 04 Javascript
AngularJS折叠菜单实现方法示例
May 18 #Javascript
jQuery Validate 校验多个相同name的方法
May 18 #jQuery
easyUI下拉列表点击事件使用方法
May 18 #Javascript
AngularJS自定义指令之复制指令实现方法
May 18 #Javascript
AngularJS使用ng-class动态增减class样式的方法示例
May 18 #Javascript
Vue中img的src属性绑定与static文件夹实例
May 18 #Javascript
JS验证全角与半角及相互转化的介绍
May 18 #Javascript
You might like
php实现refresh刷新页面批量导入数据的方法
2014/12/23 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
2016/09/11 PHP
PHP设置Cookie的HTTPONLY属性方法
2017/02/09 PHP
Laravel实现定时任务的示例代码
2017/08/10 PHP
php创建类并调用的实例方法
2019/09/25 PHP
简明json介绍
2008/09/28 Javascript
js 巧妙去除数组中的重复项
2010/01/25 Javascript
Jquery插件写法笔记整理
2012/09/06 Javascript
fancybox modal的完美解决(右上的X)
2012/10/30 Javascript
JQuery操作单选按钮以及复选按钮示例
2013/09/23 Javascript
jQuery绑定事件不执行但alert后可以正常执行
2014/06/03 Javascript
使用JS获取当前地理位置方法汇总
2014/12/18 Javascript
AngularJs入门教程之环境搭建+创建应用示例
2016/11/01 Javascript
浅谈Angular的$q, defer, promise
2016/12/20 Javascript
JavaScript解析任意形式的json树型结构展示
2017/07/23 Javascript
jQuery模拟爆炸倒计时功能实例代码
2017/08/21 jQuery
在微信小程序里使用watch和computed的方法
2018/08/02 Javascript
小程序从手动埋点到自动埋点的实现方法
2019/01/24 Javascript
微信小程序 生成携带参数的二维码
2019/10/23 Javascript
用JavaScript实现贪吃蛇游戏
2020/10/23 Javascript
[02:58]魔廷新尊——痛苦女王至宝语音台词节选
2020/06/14 DOTA
[00:14]PWL:老朋友Mushi拍VLOG与中国玩家问好
2020/11/04 DOTA
PyQt5每天必学之单行文本框
2018/04/19 Python
一个可以套路别人的python小程序实例代码
2019/04/09 Python
python数据库操作mysql:pymysql、sqlalchemy常见用法详解
2020/03/30 Python
Django-celery-beat动态添加周期性任务实现过程解析
2020/11/26 Python
利用Bootstrap实现漂亮简洁的CSS3价格表实例源码
2017/03/02 HTML / CSS
美国女孩服装购物网站:Justice
2017/03/04 全球购物
优秀毕业生推荐信
2013/11/02 职场文书
大学生应聘推荐信范文
2013/11/19 职场文书
学校教学管理制度
2015/08/06 职场文书
2016年安全生产先进个人事迹材料
2016/02/29 职场文书
golang interface判断为空nil的实现代码
2021/04/24 Golang
「租借女友」第2季樱泽墨角色PV&新视觉图公开
2022/03/21 日漫
忘记Grafana不要紧2种Grafana重置admin密码方法详细步骤
2022/04/07 Servers
MySQL的存储函数与存储过程的区别解析
2022/04/08 MySQL