Springboot项目中运用vue+ElementUI+echarts前后端交互实现动态圆环图(推荐)

以下是 “Springboot项目中运用vue+ElementUI+echarts前后端交互实现动态圆环图(推荐)”的完整攻略。

1. 环境搭建

首先需要安装好Node.jsnpm, 安装好之后,通过npm安装vue-cli, 并用命令vue init webpack projectname创建项目。

npm install -g vue-cli
vue init webpack projectname

完成之后,安装所需要的ElementUIecharts模块。

npm install element-ui --save
npm install echarts --save

2. 后端部分

后端使用Springboot,同时需要配置CORS跨域支持,这样才能把数据传递给前端。

首先在pom.xml中添加相关依赖。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!--防止CORS攻击-->
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-config</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-web</artifactId>
</dependency>

然后在application.properties中配置跨域请求相关的参数。

# 允许所有源访问
cors.allowed.origins = *
cors.allowed.methods = GET, POST, PUT, DELETE
cors.allowed.headers = Authorization,Content-Type

Controller中添加接口,返回需要展示的数据。

@RequestMapping(value = "/ring", method = RequestMethod.GET)
public List<Integer> getRingData() {
    List<Integer> data = new ArrayList<Integer>(
            Arrays.asList(70, 30));
    return data;
}

3. 前端部分

在前端项目中,需要用到ElementUIecharts库。

Vue中使用ElementUI库,加入代码

import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.use(ElementUI);

然后需要安装vue-axios库,用来进行AJAX请求。

npm i vue-axios -S

main.js中引入。

import axios from 'axios';
import VueAxios from 'vue-axios';
Vue.use(VueAxios, axios);

接下来就可以通过vue-axios进行请求,把后端的数据获取到,并传递给echarts进行展示。

<template>
  <el-row>
    <el-col :span="12">
      <div ref="ring" :style="{ width: '300px', height: '300px', margin: '0 auto' }"></div>
    </el-col>
  </el-row>
</template>

<script>
import echarts from 'echarts';

export default {
  name: 'HelloWorld',
  data() {
    return {
      option: null
    }
  },
  mounted() {
    this.$axios.get('/ring').then(response => {
      this.renderChart(response.data[0], response.data[1]);
    }).catch(error => {
      console.log(error);
    });
  },
  methods: {
    renderChart(data1, data2) {
      var ring = echarts.init(this.$refs.ring);
      var option = {
        series: [
          {
            type: 'pie',
            radius: ['80%', '90%'],
            startAngle: 225,
            color: ['#1ccc6e', '#f0f2f5'],
            hoverAnimation: false,
            legendHoverLink: false,
            labelLine: {
              normal: {
                show: false
              }
            },
            data: [
              {
                value: data1,
                itemStyle: {
                  normal: {
                    borderColor: {
                      type: 'linear',
                      x: 0,
                      y: 0,
                      x2: 0,
                      y2: 1,
                      colorStops: [
                        {
                          offset: 0,
                          color: '#1ccc6e' // 0% 处的颜色
                        },
                        {
                          offset: 1,
                          color: '#1ccc6e' // 100% 处的颜色
                        }
                      ],
                      globalCoord: false // 缺省为 false
                    }
                  }
                }
              },
              {
                value: data2,
              }
            ]
          }
        ]
      };
      ring.setOption(option);
    }
  }
}
</script>

4. 示例说明

示例1: 后端部分

在后端中,我们需要注意以下几点:

  1. 保证所需要的依赖已添加

  2. 正确配置CORS跨域参数

  3. 编写需要返回数据的接口

比如,在Controller中的代码可以改为:

@RestController
@RequestMapping(value = "/api")
public class ApiController {

    @GetMapping("/ring")
    public List<Integer> getRingData() {
        return Arrays.asList(70, 30);
    }
}

示例2: 前端部分

在前端中,我们需要注意以下几点:

  1. 使用ElementUI库和echarts库

  2. 使用vue-axios库进行AJAX请求

  3. 注意渲染图表的方式

比如,可以在Vue中添加下面代码:

<template>
  <div class="ring-chart" ref="chart"></div>
</template>

<script>
import axios from 'axios'
import echarts from 'echarts'

export default {
  name: 'RingChart',
  data () {
    return {
      data: []
    }
  },
  mounted () {
    this.chart = echarts.init(this.$refs.chart)
    axios.get('/api/ring').then((res) => {
      this.data = res.data
      this.renderChart()
    })
  },
  methods: {
    renderChart () {
      this.chart.setOption({
        series: [
          {
            name: '动态圆环图',
            type: 'pie',
            radius: ['70%', '90%'],
            avoidLabelOverlap: false,
            label: {
              show: false,
              position: 'center'
            },
            data: [
              {
                value: this.data[0],
                itemStyle: {
                  color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                    offset: 0,
                    color: 'rgba(32,163,212,1)'
                  }, {
                    offset: 1,
                    color: 'rgba(9,136,213,1)'
                  }]),
                  label: {
                    normal: {
                      formatter: '{d} %',
                      textStyle: {
                        fontSize: 24
                      }
                    }
                  }
                }
              },
              {
                value: this.data[1],
                itemStyle: {
                  color: '#dcdfe2'
                }
              }]
          }
        ]
      })
    }
  }
}
</script>

<style scoped>
.ring-chart {
  width: 300px;
  height: 300px;
  margin: 0 auto;
}
</style>

这些示例可以帮助开发人员更好地理解和实现该功能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Springboot项目中运用vue+ElementUI+echarts前后端交互实现动态圆环图(推荐) - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • liunx安装redis和gcc

    首先去上下载redis,我现在用的版本是:redis-3.0.4.tar.gz 然后放到虚拟机里面解压,下面是三种解压命令: tar -zxvf file.tar.gz tar -jcvf file file.tar.bz2 tar -jxvf file.tar.gz解压之后再进入到解压的文件夹里面,然后输入命令:make install进行Redis安装。…

    Redis 2023年4月16日
    00
  • Python装饰器的应用场景代码总结

    Python装饰器是Python语言提供的一个重要的语法特性,可以用于装饰函数、类和属性,并且可以通过装饰器增强已有的函数和类的功能,同时还可以封装通用的功能模块和代码,以便在代码中重复使用。在实际的Python开发中,装饰器几乎无处不在,非常适合用于以下几种应用场景。 1. 日志记录装饰器 在开发过程中,我们常常需要记录函数的运行过程和执行结果,以便进行程…

    database 2023年5月21日
    00
  • MySQL case when使用方法实例解析

    MySQL case when使用方法实例解析 一、介绍 MySQL中的case when语法可以让我们更加灵活地处理数据,可以根据指定的条件返回不同的结果。使用case when结构通常会为在单个查询中使用IF语句或选择性SUM做法提供更清晰和可读性更高的代码结构。 二、基础语法 以下是MySQL case when基础语法的示例: SELECT colu…

    database 2023年5月22日
    00
  • linux whatis与whatis database 使用及查询方法(man使用实例)

    下面我将详细讲解“linux whatis与whatis database 使用及查询方法(man使用实例)”的完整攻略。 一、什么是whatis与whatis database whatis是一个功能强大的命令行工具,可以用来查找某个命令的手册页(文档)及其详细描述。这个命令是由Unix系统上的whatis数据库提供支持的,这个数据库在安装软件包时自动构建…

    database 2023年5月22日
    00
  • Redis Geo: Redis新增位置查询功能

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/144.html   移动互联网增进了人与人之间的联系,其中基于位置信息的服务(Location Based Service,LBS)起到很重要的促进作用。在移动互联网的大环境下,每个手机都变成了一个位置追踪设备,为人们提供了非常丰富的…

    Redis 2023年4月13日
    00
  • 如何利用MySQL添加联合唯一索引

    添加联合唯一索引可以确保数据库中的多个列的组合不重复,这在确保数据完整性和减少重复数据方面非常有用。下面是利用MySQL添加联合唯一索引的完整攻略: 1. 创建联合唯一索引 要创建联合唯一索引,我们可以使用以下MySQL代码: ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE (colu…

    database 2023年5月22日
    00
  • 如何让你的SQL运行得更快

    如何让你的SQL运行得更快 优化SQL查询是每个开发者都需要面对的挑战。优化查询的好处不仅仅是减少数据库资源的占用,还能提高用户体验,减少查询结果的等待时间。下面是一些可以让你的SQL查询更快的技巧。 索引优化 索引是最常用的优化技术之一。一个好的索引能够帮助查询语句更快的定位到数据,并节省整个查询过程的时间。在编写查询语句时,可以尝试使用索引优化器,让数据…

    database 2023年5月19日
    00
  • MySQL-5.7.20主从复制测试[20180110]

    前言     MySQL 5.7.20测试主从复制   环境     主库 192.168.1.59  t-xi-sonar01     从库 192.168.1.51  t-xi-orc01   设定主机host文件    主库 [root@t-xi-sonar01 ~]# cat /etc/hosts 127.0.0.1 localhost localh…

    MySQL 2023年4月16日
    00
合作推广
合作推广
分享本页
返回顶部