在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 相关文章推荐
javascript判断iphone/android手机横竖屏模式的函数
Dec 20 Javascript
基于jQuery实现的百度导航li拖放排列效果,即时更新数据库
Jul 31 Javascript
jquery 淡入淡出效果的简单实现
Feb 07 Javascript
JSONP获取Twitter和Facebook文章数的具体步骤
Feb 24 Javascript
jQuery实现点击图片翻页展示效果的方法
Feb 16 Javascript
js仿手机页面文件下拉刷新效果
Oct 14 Javascript
canvas绘制表盘时钟
Jan 23 Javascript
Node.js中读取TXT文件内容fs.readFile()用法
Oct 10 Javascript
JavaScript代码调试方法实例小结
Jan 05 Javascript
vue动态配置模板 'component is'代码
Jul 04 Javascript
微信小程序 (地址选择1)--选取搜索地点并显示效果
Dec 17 Javascript
js实现查询商品案例
Jul 22 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
自动分页的不完整解决方案
2007/01/12 PHP
15种PHP Encoder的比较
2007/04/17 PHP
什么是MVC,好东西啊
2007/05/03 PHP
php将图片保存入mysql数据库失败的解决方法
2014/12/27 PHP
php中使用key,value,current,next和prev函数遍历数组的方法
2015/03/17 PHP
Apache站点配置SSL强制跳转443
2021/03/09 Servers
datePicker——日期选择控件(with jquery)
2007/02/20 Javascript
ext jquery 简单比较
2010/04/07 Javascript
javascript调试说明
2010/06/07 Javascript
关于图片按比例自适应缩放的js代码
2011/10/30 Javascript
js判断undefined类型,undefined,null, 的区别详细解析
2013/12/16 Javascript
Jquery实现Div上下移动示例
2014/04/23 Javascript
HTML,CSS,JavaScript速查表推荐
2014/12/02 Javascript
js实现仿百度风云榜可重复多次调用的TAB切换选项卡效果
2015/08/31 Javascript
js学习总结_选项卡封装(实例讲解)
2017/07/13 Javascript
使用 Node.js 模拟滑动拼图验证码操作的示例代码
2017/11/02 Javascript
React Native 自定义下拉刷新上拉加载的列表的示例
2018/03/01 Javascript
JavaScript中0、空字符串、'0'是true还是false的知识点分享
2019/09/16 Javascript
node.js中 redis 的安装和基本操作示例
2020/02/10 Javascript
js中火星坐标、百度坐标、WGS84坐标转换实现方法示例
2020/03/02 Javascript
详解如何使用React Hooks请求数据并渲染
2020/10/18 Javascript
对Tensorflow中的矩阵运算函数详解
2018/07/27 Python
python flask解析json数据不完整的解决方法
2019/05/26 Python
PyTorch中 tensor.detach() 和 tensor.data 的区别详解
2020/01/06 Python
python全局变量引用与修改过程解析
2020/01/07 Python
Python matplotlib图例放在外侧保存时显示不完整问题解决
2020/07/28 Python
Python3如何使用多线程升程序运行速度
2020/08/11 Python
黄河的主人教学反思
2014/02/07 职场文书
党的群众路线教育实践活动宣传方案
2014/02/23 职场文书
大学生心理活动总结
2014/07/04 职场文书
三好生演讲稿
2014/09/12 职场文书
房产协议书范本2014
2014/09/30 职场文书
小学教师暑期培训心得体会
2016/01/09 职场文书
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
2021/04/13 Javascript
Android开发手册自定义Switch开关按钮控件
2022/06/10 Java/Android
python+opencv实现目标跟踪过程
2022/06/21 Python