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日

相关文章

  • SQL SERVER 触发器介绍

    下面是“SQL SERVER 触发器介绍”的完整攻略。 一、什么是SQL SERVER触发器 SQL SERVER 触发器是SQL SERVER数据库对象的一种类型,触发器与存储过程一样都是SQL语句的集合,触发器是由SQL SERVER对一种事件(INSERT、UPDATE、DELETE)进行处理后自动执行的代码块。 SQL SERVER触发器主要由触发器…

    database 2023年5月21日
    00
  • MySQL循环语句之while循环测试

    非常感谢您对MySQL循环语句之while循环测试的关注。接下来,我将详细讲解该攻略的完整过程,希望对您有所帮助。 1. 简介 在MySQL中,循环语句是非常有用的功能。特别是当需要重复执行相同的代码块时,使用循环语句可以大大提高代码的重用性和可读性。 MySQL提供了多种循环语句,其中之一就是while循环。在while循环中,只有当指定条件成立时,循环体…

    database 2023年5月21日
    00
  • oracle数据库下统计专营店的男女数量的语句

    这是 oracle 数据库中查询专营店男女数量的 SQL 语句的攻略,整个过程包括如下几个步骤: 确定查询的数据表:确定数据库中储存了专营店的数据表,如果该表中没有直接记录男女的字段,则需要在该表中关联其他表来获取男女数据。 编写 SQL 语句:使用 SELECT, FROM, WHERE 等关键字编写 SQL 语句来查询专营店男女数量。在 SQL 语句中需…

    database 2023年5月21日
    00
  • 免费常用Linux VPS管理面板/一键包介绍和安装方法

    我将为您详细讲解“免费常用Linux VPS管理面板/一键包介绍和安装方法”的攻略。 什么是Linux VPS管理面板/一键包? Linux VPS管理面板/一键包,是一种用于快速安装和管理Linux VPS的工具。它可以帮助我们快速部署Web服务,如LAMP(Linux、Apache、MySQL、PHP)、LNMP(Linux、Nginx、MySQL、PH…

    database 2023年5月22日
    00
  • win7安装oracle10g 提示程序异常终止 发生未知错误

    下面是针对“win7安装oracle10g 提示程序异常终止 发生未知错误”的完整攻略。 问题描述 在安装Oracle 10g时,如果出现“程序异常终止,发生未知错误”的提示,一般是由于操作系统版本不兼容,或者缺少必要的系统文件等问题导致。 解决方案 方案一:兼容性设置 找到安装程序的 .exe 文件(一般是 setup.exe)。 右键点击该文件,在弹出的…

    database 2023年5月21日
    00
  • 如何使用Python实现数据库中数据的动态查询?

    以下是使用Python实现数据库中数据的动态查询的完整攻略。 数据库中数据的动态查询简介 在数据库中,动态查询是指根据用户输入的条件进行查询的查询。在Python中可以使用pymysql连接到MySQL数据库,并使用SELECT语句实现动态查询。 步骤1:连接到数据库 在Python中,使用pymysql连接MySQL数据库。以下是连接到MySQL数据库的基…

    python 2023年5月12日
    00
  • Docker批量容器编排的实现

    我将为您详细讲解“Docker批量容器编排的实现”的完整攻略,包含以下主要步骤: 使用Docker Compose编写相关的配置文件 对编写好的配置文件进行解析和解释 启动多个容器实例进行编排 监控和管理多个容器实例 下面将逐一详细解释这些步骤。 1. Docker Compose配置文件编写 Docker Compose是Docker官方提供的一个编排工具…

    database 2023年5月22日
    00
  • SQL 和 NoSQL 的区别

    SQL和NoSQL是两种不同的数据库类型,主要区别在于它们管理数据的方式和存储结构。下面我将详细介绍SQL和NoSQL的区别,并提供两个实例来帮助你更好地理解这个问题。 SQL和NoSQL的区别 SQL SQL(Structured Query Language,结构化查询语言)是一种基于关系模型的数据库类型。它使用表和行来组织和存储数据,并使用SQL语言来…

    database 2023年3月27日
    00
合作推广
合作推广
分享本页
返回顶部