Maison >interface Web >Voir.js >Mise à jour dynamique des données et optimisation de l'affichage des graphiques statistiques Vue

Mise à jour dynamique des données et optimisation de l'affichage des graphiques statistiques Vue

PHPz
PHPzoriginal
2023-08-17 09:48:221013parcourir

Mise à jour dynamique des données et optimisation de laffichage des graphiques statistiques Vue

Mise à jour dynamique des données et optimisation de l'affichage des graphiques statistiques Vue

Introduction :
À l'ère actuelle axée sur les données, l'utilisation de graphiques statistiques est de plus en plus répandue. En utilisant Vue comme cadre de développement frontal, combiné à diverses excellentes bibliothèques de graphiques, vous pouvez facilement implémenter différents types de graphiques statistiques. Cependant, lorsque les données changent fréquemment et que les graphiques statistiques doivent être mis à jour et affichés de manière dynamique, nous devons envisager certaines stratégies d'optimisation pour améliorer les performances des pages et l'expérience utilisateur.

Cet article expliquera comment implémenter la mise à jour dynamique des données et l'optimisation de l'affichage des graphiques statistiques dans Vue. Nous utiliserons ECharts comme exemple de bibliothèque de graphiques et présenterons les technologies associées avec des exemples de code.

1. Mise à jour dynamique des données

  1. Surveillance des modifications des données
    Dans Vue, vous pouvez utiliser l'attribut watch pour surveiller les modifications des données. Lorsqu'une donnée surveillée change, l'opération correspondante peut être implémentée dans la fonction de rappel.
<template>
  <div>
    <button @click="updateData">更新数据</button>
    <div ref="chart"></div>
  </div>
</template>

<script>
import echarts from 'echarts';

export default {
  data() {
    return {
      chartData: [] //图表数据
    }
  },
  mounted() {
    this.initChart(); //初始化图表
  },
  methods: {
    initChart() {
      //初始化图表
      const chart = echarts.init(this.$refs.chart);

      //绑定数据
      chart.setOption({
        series: [{
          type: 'bar',
          data: this.chartData
        }]
      });
    },
    updateData() {
      //模拟数据更新
      this.chartData = [100, 200, 300, 400, 500, 600];
    }
  },
  watch: {
    chartData: {
      handler() {
        //数据变动时,更新图表
        this.updateChart();
      },
      deep: true //深度监听
    }
  },
  updated() {
    //数据更新后,重新渲染图表
    this.updateChart();
  },
  destroyed() {
    //销毁图表
    echarts.dispose(this.$refs.chart);
  },
  methods: {
    updateChart() {
      const chart = echarts.getInstanceByDom(this.$refs.chart);
      chart.setOption({
        series: [{
          data: this.chartData
        }]
      });
    }
  }
}
</script>

Dans le code ci-dessus, nous surveillons les changements dans les données chartData via l'attribut watch. Lorsque les données changent, appelez la méthode updateChart pour mettre à jour le graphique. Dans la fonction hook mise à jour, la méthode updateChart est également appelée à nouveau pour garantir que le graphique peut être restitué une fois les données mises à jour. Lorsque le composant est détruit, le graphique est détruit via la fonction de hook détruit pour libérer des ressources.

  1. Stratégie de limitation pour optimiser les performances
    Lorsque les données changent fréquemment, nous pouvons utiliser une stratégie de limitation pour éviter les mises à jour fréquentes des graphiques afin d'améliorer les performances. Vue fournit le plug-in vue-throttle-event pour implémenter facilement des stratégies de limitation.

Installez le plug-in :

npm install vue-throttle-event

Utilisez le plug-in :

<template>
  ...
</template>

<script>
import { throttle } from 'vue-throttle-event';
import echarts from 'echarts';

export default {
  data() {
    ...
  },
  mounted() {
    ...
  },
  ...
  updated() {
    //数据更新后,重新渲染图表,使用节流策略每100ms触发一次
    throttle(this.updateChart, 100);
  },
  methods: {
    ...
  }
}
</script>

Dans le code ci-dessus, nous importons la fonction throttle et l'utilisons dans la fonction hook mise à jour pour déclencher la méthode updateChart toutes les 100 ms pour éviter les graphiques fréquents mises à jour.

2. Optimisation de l'affichage

  1. Chargement par défilement virtuel
    Lorsque la quantité de données dans le graphique statistique est très importante, le rendu direct de toutes les données peut provoquer le gel de la page et affecter l'expérience utilisateur. À l'heure actuelle, vous pouvez utiliser la technologie de chargement par défilement virtuel pour afficher uniquement les données dans la zone visible.

Dans Vue, nous pouvons utiliser le plug-in vue-virtual-scroll-list pour implémenter le chargement par défilement virtuel.

Installez le plug-in :

npm install vue-virtual-scroll-list

Utilisez le plug-in :

<template>
  <div style="height: 600px;">
    <div v-virtual-scroll="{
      size: 50, //每个元素的大小
      data: chartData, //数据源
      keyField: 'id', //数据的主键字段
      type: 'variable',
      variableSize: true
    }">
      <div v-for="item in visibleData" :key="item.id">{{ item.value }}</div>
    </div>
  </div>
</template>

<script>
import { VirtualScrollList } from 'vue-virtual-scroll-list';

export default {
  components: {
    VirtualScrollList
  },
  data() {
    return {
      chartData: [], //图表数据
      visibleData: [] //可视区域内的数据
    }
  },
  mounted() {
    //获取图表数据
    this.getChartData();
  },
  methods: {
    getChartData() {
      //模拟异步获取图表数据
      setTimeout(() => {
        const data = [];
        for (let i = 1; i <= 10000; i++) {
          data.push({
            id: i,
            value: i
          });
        }
        this.chartData = data;
      }, 1000);
    },
    presetVisibleData(start, end) {
      //根据起始位置和结束位置提取可视区域内的数据,start和end是元素在数据源中的索引值
      this.visibleData = this.chartData.slice(start, end);
    }
  },
  watch: {
    chartData: {
      handler() {
        //数据变动时,更新可视区域内的数据
        this.presetVisibleData(0, 50);
      },
      deep: true
    }
  },
  updated() {
    //针对数据变动,重新计算可视区域内的数据
    this.presetVisibleData(0, 50);
  }
}
</script>

Dans le code ci-dessus, nous implémentons le chargement par défilement virtuel via le plug-in vue-virtual-scroll-list. Définissez la taille de chaque élément en définissant l'attribut size, l'attribut data spécifie la source de données et l'attribut keyField spécifie le champ de clé primaire des données. Ensuite, parcourez les données visibleData dans v-for pour obtenir l'effet de chargement par défilement virtuel. Lorsque les données changent, les données dans la zone visible sont recalculées via la méthode presetVisibleData.

Conclusion :
Cet article présente comment implémenter la mise à jour dynamique des données et l'optimisation de l'affichage des graphiques statistiques dans Vue. En surveillant les modifications des données et en utilisant des technologies telles que des stratégies de limitation et le chargement par défilement virtuel, les performances des pages et l'expérience utilisateur peuvent être améliorées. Bien entendu, selon les besoins réels, il peut également être combiné avec d’autres technologies pour plus d’optimisation afin de répondre aux différents besoins métiers. J'espère que cet article pourra vous aider à utiliser les graphiques statistiques dans Vue.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn