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日

相关文章

  • 深入理解ES7的async/await的用法

    深入理解ES7的async/await的用法 ES7的async/await是一种基于Promise的异步编程语法糖,它使异步代码的编写变得更加直观和易于理解。在使用async/await之前,我们需要了解以下内容: 1. async函数 async函数是异步函数的简写,返回的是一个Promise对象。可以通过在函数声明时添加async关键字来定义一个asy…

    database 2023年5月22日
    00
  • Oracle存储过程循环语法实例分析

    Oracle存储过程循环语法实例分析 什么是存储过程? 存储过程是一种数据库对象,它包含了一段可执行的SQL代码。存储过程可以接受参数,可以返回结果,并且可以在客户端(例如应用程序)中直接调用。 Oracle存储过程循环语法 Oracle的存储过程循环语法可以使用PL/SQL中的循环结构来实现。常用的循环有FOR循环、WHILE循环和LOOP循环,在不同的情…

    database 2023年5月21日
    00
  • oracle10g全文索引自动同步语句使用方法

    下面是“oracle10g全文索引自动同步语句使用方法”的完整攻略: 1. 概述 全文检索是一种常用的搜索技术,可以用于数据库中文本字段的模糊匹配搜索。在Oracle10g中,我们可以使用全文索引来提高搜索效率,并且通过使用自动同步语句,可以定期自动同步全文索引。本攻略将详细介绍如何创建全文索引,并且使用自动同步语句进行更新。 2. 全文索引创建 要创建全文…

    database 2023年5月21日
    00
  • 4D和Amazon SimpleDB的区别

    4D和Amazon SimpleDB是两种不同的数据库管理系统,下面详细介绍它们的区别: 1. 4D和Amazon SimpleDB的定义 1.1 4D 4D是一个全功能的数据库管理系统,它支持结构化查询语言(SQL)和对象查询语言(OQL)等多种查询语言,并且具有稳定性和安全性等优点,适合大规模的数据存储和处理。 1.2 Amazon SimpleDB A…

    database 2023年3月27日
    00
  • Oracle锁表解决方法的详细记录

    Oracle锁表解决方法的详细记录 1. 排查表锁的原因 首先我们需要确认表被锁的原因,可以通过如下SQL语句查询到锁住该表的会话及其ID: SELECT b.owner, b.object_name, b.object_type, b.session_id, b.locked_mode FROM v$locked_object a, dba_objects…

    database 2023年5月21日
    00
  • golang日志框架之logrus的使用

    好的。 一、介绍 logrus是一个Golang的优秀日志框架,可以同时输出不同的日志等级和格式,支持hook机制,可以方便地配合其他服务使用,例如日志远程推送、邮件提醒等。 在这篇文章中,我们将讨论如何使用logrus。我们将了解基本的概念、常用的用法,并讲解一些常用的hook机制。 二、安装 你可以使用如下命令安装logrus: go get githu…

    database 2023年5月22日
    00
  • Mysql数据库百万级数据测试索引效果

    下面是详细讲解Mysql数据库百万级数据测试索引效果的完整攻略: 背景 在日常的网站或系统开发中,我们经常需要处理大量的数据,对于这些数据的查询和操作,使用合适的索引能够大幅提升程序的性能。本篇攻略将讲解如何针对百万级别的数据进行测试,并比较不同类型的索引的效果。 环境准备 为了模拟百万级数据量的情况,我们需要准备一个足够大的表。这里使用一个包含100万条数…

    database 2023年5月19日
    00
  • 详解MySQL系统变量的查看和修改

    MySQL系统变量是MySQL服务器的某些配置参数,可以通过查看和修改这些变量来调整服务器的行为或优化性能。本文将详细介绍MySQL系统变量的查看和修改方式,并结合实例说明。 查看MySQL系统变量 通过SHOW VARIABLES命令查看MySQL系统变量 在MySQL命令行客户端中,使用“SHOW VARIABLES”命令可以列出当前MySQL服务器的所…

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