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 26 Javascript
js中if语句的几种优化代码写法
Mar 12 Javascript
基于jquery实现状态限定编辑的代码
Feb 11 Javascript
超级简单实现JavaScript MVC 样式框架
Mar 24 Javascript
js时间控件只显示年月
Jan 08 Javascript
jQuery实现获取隐藏div高度的方法示例
Feb 09 Javascript
Angularjs自定义指令实现三级联动 选择地理位置
Feb 13 Javascript
在knockoutjs 上自己实现的flux(实例讲解)
Dec 18 Javascript
JS运动特效之完美运动框架实例分析
Jan 24 Javascript
使用vue制作探探滑动堆叠组件的实例代码
Mar 07 Javascript
详解Vue.js中.native修饰符
Apr 24 Javascript
微信小程序手机号码验证功能的实例代码
Aug 28 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
改进的IP计数器
2006/10/09 PHP
PHP与jquery实时显示网站在线人数实例详解
2016/12/02 PHP
PHP实现动态获取函数参数的方法示例
2018/04/02 PHP
Laravel框架实现的上传图片到七牛功能详解
2019/09/06 PHP
fromCharCode和charCodeAt 方法
2006/12/27 Javascript
打开超链需要“确认”对话框的方法
2007/03/08 Javascript
根据一段代码浅谈Javascript闭包
2010/12/14 Javascript
JavaScript实现点击按钮后变灰避免多次重复提交
2013/07/15 Javascript
Javascript实现倒计时(防页面刷新)实例
2016/12/13 Javascript
JavaScript解析任意形式的json树型结构展示
2017/07/23 Javascript
详解vue-cli 构建Vue项目遇到的坑
2017/08/30 Javascript
js注册时输入合法性验证方法
2017/10/21 Javascript
微信小程序页面生命周期详解
2018/01/31 Javascript
基于VuePress 轻量级静态网站生成器的实现方法
2018/04/17 Javascript
vue开发环境配置跨域的方法步骤
2019/01/16 Javascript
微信小程序实现签字功能
2019/12/23 Javascript
纯js实现无缝滚动功能代码实例
2020/02/21 Javascript
web.py中调用文件夹内模板的方法
2014/08/26 Python
Python求解平方根的方法
2015/03/11 Python
python实现多张图片拼接成大图
2019/01/15 Python
Pytorch 抽取vgg各层并进行定制化处理的方法
2019/08/20 Python
基于python的selenium两种文件上传操作实现详解
2019/09/19 Python
虚拟机下载python是否需要联网
2020/07/27 Python
Python通过format函数格式化显示值
2020/10/17 Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
2020/10/21 Python
python 读取yaml文件的两种方法(在unittest中使用)
2020/12/01 Python
美国NBA官方商店:NBA Store
2019/04/12 全球购物
正风肃纪剖析材料
2014/02/18 职场文书
2014年财务科工作总结
2014/11/11 职场文书
2014年残联工作总结
2014/11/21 职场文书
退休欢送会主持词
2015/07/01 职场文书
聘用合同范本
2015/09/21 职场文书
《平移和旋转》教学反思
2016/02/19 职场文书
分享:关于学习的励志名言赏析
2019/08/16 职场文书
Java SSM配置文件案例详解
2021/08/30 Java/Android
Python超详细分步解析随机漫步
2022/03/17 Python