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删除数组元素的函数介绍
Mar 27 Javascript
js 去掉空格实例 Trim() LTrim() RTrim()
Jan 07 Javascript
两种方法实现在HTML页面加载完毕后运行某个js
Jun 16 Javascript
js锁屏解屏通过对$.ajax进行封装实现
Jul 31 Javascript
Egret引擎开发指南之运行项目
Sep 03 Javascript
jquery实现手机号码选号的方法
Jul 31 Javascript
javascript每日必学之条件分支
Feb 17 Javascript
Vue项目添加动态浏览器头部title的方法
Jul 11 Javascript
react脚手架如何配置less和ant按需加载的方法步骤
Nov 28 Javascript
通过jQuery学习js类型判断的技巧
May 27 jQuery
Vue源码分析之Vue实例初始化详解
Aug 25 Javascript
浅谈Vue SSR中的Bundle的具有使用
Nov 21 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写入数据库类代码分享
2011/07/26 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
2014/10/15 PHP
php在线解压ZIP文件的方法
2014/12/30 PHP
php实现文件管理与基础功能操作
2017/03/21 PHP
YII2自动登录Cookie总是失效的解决方法
2017/06/28 PHP
javascript 放大镜效果js组件 qsoft.PopBigImage.v0.35 加入了chrome支持
2009/04/07 Javascript
jQuery获得页面元素的绝对/相对位置即绝对X,Y坐标
2014/03/06 Javascript
jQuery使用animate创建动画用法实例
2015/08/07 Javascript
Javascript中的return作用及javascript return关键字用法详解
2015/11/05 Javascript
WebSocket+node.js创建即时通信的Web聊天服务器
2016/08/08 Javascript
深入理解jQuery3.0的domManip函数
2016/09/01 Javascript
EasyUI Combobox设置默认值 获取text的方法
2016/11/28 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
2017/02/13 Javascript
js实现简单的获取验证码按钮效果
2017/03/03 Javascript
ES6新特性七:数组的扩充详解
2017/04/21 Javascript
JS为什么说async/await是generator的语法糖详解
2019/07/11 Javascript
JavaScript变量基本使用方法实例分析
2019/11/15 Javascript
全面解析JavaScript Module模式
2020/07/24 Javascript
ant design的table组件实现全选功能以及自定义分页
2020/11/17 Javascript
[32:07]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第一场 12.16
2020/12/17 DOTA
Python 元类使用说明
2009/12/18 Python
python实现的udp协议Server和Client代码实例
2014/06/04 Python
用Python将动态GIF图片倒放播放的方法
2016/11/02 Python
Python使用修饰器执行函数的参数检查功能示例
2017/09/26 Python
Python类的继承和多态代码详解
2017/12/27 Python
Python3中的列表生成式、生成器与迭代器实例详解
2018/06/11 Python
利用pandas进行大文件计数处理的方法
2018/07/25 Python
python如何实现不用装饰器实现登陆器小程序
2019/12/14 Python
Python基于模块Paramiko实现SSHv2协议
2020/04/28 Python
如何使用scrapy中的ItemLoader提取数据
2020/09/30 Python
Python-openpyxl表格读取写入的案例详解
2020/11/02 Python
HTML5新表单元素_动力节点Java学院整理
2017/07/12 HTML / CSS
2014自荐信的写作技巧
2014/01/28 职场文书
优良学风班申请材料
2014/02/13 职场文书
学习雷锋活动总结
2014/04/29 职场文书
网络技术专业求职信
2014/05/02 职场文书