在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中Date对象的getDay方法使用指南
Dec 22 Javascript
详细解读JavaScript的跨浏览器事件处理
Aug 12 Javascript
浅谈javascript的Array.prototype.slice.call
Aug 31 Javascript
详解webpack 多入口配置
Jun 16 Javascript
javaScript之split与join的区别(详解)
Nov 08 Javascript
原生js实现贪食蛇小游戏的思路详解
Nov 26 Javascript
详解微信小程序之提高应用速度小技巧
Jan 07 Javascript
bootstrap实现嵌套模态框的实例代码
Jan 10 Javascript
有关vue 开发钉钉 H5 微应用 dd.ready() 不执行问题及快速解决方案
May 09 Javascript
Vue 样式切换及三元判断样式关联操作
Aug 09 Javascript
微信小程序对图片进行canvas压缩的方法示例详解
Nov 12 Javascript
JavaScript实现简单计时器
Jun 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
Zend的Registry机制的使用说明
2013/05/02 PHP
php运行时动态创建函数的方法
2015/03/16 PHP
php实现对两个数组进行减法操作的方法
2015/04/17 PHP
PHP正则验证Email的方法
2015/06/15 PHP
php执行多个存储过程的方法【基于thinkPHP】
2016/11/08 PHP
thinkphp中的多表关联查询的实例详解
2017/10/12 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
php中html_entity_decode实现HTML实体转义
2018/06/13 PHP
js计数器代码
2006/11/04 Javascript
FileUpload 控件 禁止手动输入或粘贴的实现代码
2010/04/07 Javascript
javaScript让文本框内的最后一个文字的后面获得焦点实现代码
2013/01/06 Javascript
jQuery中animate用法实例分析
2015/03/09 Javascript
JavaScript实现的简单烟花特效代码
2015/10/20 Javascript
JQuery EasyUI的使用
2016/02/24 Javascript
js停止冒泡和阻止浏览器默认行为的简单方法
2016/05/15 Javascript
当jquery ajax遇上401请求的解决方法
2016/05/19 Javascript
JS实现关闭当前页而不弹出提示框的方法
2016/06/22 Javascript
AngularJs 指令详解及示例代码
2016/09/01 Javascript
IntersectionObserver API 详解篇
2016/12/11 Javascript
Node.js中环境变量process.env的一些事详解
2017/10/26 Javascript
vue单页面应用打开新窗口显示跳转页面的实例
2018/09/21 Javascript
jQuery中DOM常见操作实例小结
2019/08/01 jQuery
js简单的分页器插件代码实例
2019/09/11 Javascript
微信h5静默和非静默授权获取用户openId的方法和步骤
2020/06/08 Javascript
Python聚类算法之基本K均值实例详解
2015/11/20 Python
玩转python爬虫之URLError异常处理
2016/02/17 Python
Python编程之基于概率论的分类方法:朴素贝叶斯
2017/11/11 Python
python监控文件并且发送告警邮件
2018/06/21 Python
解决tensorflow模型参数保存和加载的问题
2018/07/26 Python
pandas的相关系数与协方差实例
2019/12/27 Python
使用Python和百度语音识别生成视频字幕的实现
2020/04/09 Python
英国儿童设计师服装和玩具购物网站:Zac & Lulu
2020/10/19 全球购物
管理专员自荐信
2014/01/26 职场文书
技术员个人工作总结
2015/03/03 职场文书
win11无法登录onedrive错误代码0x8004def7怎么办 ?
2022/04/05 数码科技
Vue OpenLayer 为地图绘制风场效果
2022/04/24 Vue.js