在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 相关文章推荐
MSN消息提示类
Sep 05 Javascript
js substr、substring和slice使用说明小记
Sep 15 Javascript
jquery validate poshytip 自定义样式
Nov 26 Javascript
javascript下拉列表菜单的实现方法
Nov 18 Javascript
Jquery基础之事件操作详解
Jun 14 Javascript
js与jquery正则验证电子邮箱、手机号、邮政编码的方法
Jul 04 Javascript
javascript中的面向对象
Mar 30 Javascript
Vue2单一事件管理组件通信
May 09 Javascript
简单的Vue异步组件实例Demo
Dec 27 Javascript
JS实现的邮箱提示补全效果示例
Jan 30 Javascript
VUE DEMO之模拟登录个人中心页面之间数据传值实例
Oct 31 Javascript
TensorFlow.js 微信小程序插件开始支持模型缓存的方法
Feb 21 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
深入PHP操作MongoDB的技术总结
2013/06/02 PHP
PHP生成器简单实例
2015/05/13 PHP
ThinkPHP中session函数详解
2016/09/14 PHP
php之可变函数的实例详解
2017/09/13 PHP
PHP函数积累总结
2019/03/19 PHP
jquery 简单导航实现代码
2009/09/11 Javascript
JavaScript类和继承 prototype属性
2010/09/03 Javascript
jquery查找父元素、子元素(个人经验总结)
2014/04/09 Javascript
jQuery实现订单提交页发送短信功能前端处理方法
2016/07/04 Javascript
JavaScript SHA512加密算法详细代码
2016/10/06 Javascript
js关于getImageData跨域问题的解决方法
2016/10/14 Javascript
微信小程序页面滑动屏幕加载数据效果
2020/11/16 Javascript
JS使用Prim算法和Kruskal算法实现最小生成树
2019/01/17 Javascript
vue中实现点击按钮滚动到页面对应位置的方法(使用c3平滑属性实现)
2019/12/29 Javascript
python实现在windows服务中新建进程的方法
2015/06/30 Python
Python算法应用实战之队列详解
2017/02/04 Python
Python实现向服务器请求压缩数据及解压缩数据的方法示例
2017/06/09 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
2018/04/02 Python
Python实现的计算器功能示例
2018/04/26 Python
利用selenium爬虫抓取数据的基础教程
2019/06/10 Python
elasticsearch python 查询的两种方法
2019/08/04 Python
Python2和3字符编码的区别知识点整理
2019/08/08 Python
详解python中的数据类型和控制流
2019/08/08 Python
tensorflow实现对张量数据的切片操作方式
2020/01/19 Python
css3实现可拖动的魔方3d效果
2019/05/07 HTML / CSS
Luxplus瑞典:香水和美容护理折扣
2018/01/28 全球购物
英国女性时尚品牌:Apricot
2018/12/04 全球购物
美国葡萄酒网上商店:Martha Stewart Wine Co.
2019/03/17 全球购物
请解释流与文件有什么不同
2016/07/29 面试题
最新英语专业学生求职信范文
2013/09/21 职场文书
公务员的自我鉴定
2013/10/26 职场文书
乡村卫生服务一体化管理实施方案
2014/03/30 职场文书
党员自我评议对照检查材料
2014/09/27 职场文书
2014年科技工作总结
2014/11/26 职场文书
2019年度行政文员工作计划范本!
2019/07/04 职场文书
JS数组方法some、every和find的使用详情
2021/10/05 Javascript