Maison > interface Web > js tutoriel > Comment utiliser d3.js dans un projet Vue

Comment utiliser d3.js dans un projet Vue

php中世界最好的语言
Libérer: 2018-06-01 13:56:06
original
2940 Les gens l'ont consulté

Cette fois, je vais vous montrer comment utiliser d3.js dans un projet Vue. Quelles sont les précautions pour utiliser d3.js dans un projet Vue. Voici des cas pratiques, jetons un oeil.

J'ai déjà écrit une démo et certaines choses nécessitaient d'utiliser d3 pour obtenir certains effets. Cependant, j'ai recherché des ressources dans de nombreux forums et je n'ai pas trouvé de moyen d'utiliser D3.js dans Vue. D3 sur npm peut être considéré comme relativement C'est très inhumain et je n'ai pas du tout mentionné comment utiliser D3.js sur webpack

Enfin, après avoir longtemps lutté, j'ai vu un patron étranger lire son cas et implémenté avec succès l'utilisation de D3 dans le projet Vue

Firstinstall

npm install d3 --save-dev
Copier après la connexion

juste au cas où, puis regardez package.json

Installation terminée

Avant de commencer, rendons un composant Vue qui utilise les opérations DOM D3 régulières pour restituer un simple graphique linéaire :

<script>
import * as d3 from 'd3';
const data = [99, 71, 78, 25, 36, 92];
export default {
 name: 'non-vue-line-chart',
 template: '<p></p>',
 mounted() {
  const svg = d3.select(this.$el)
   .append('svg')
   .attr('width', 500)
   .attr('height', 270)
   .append('g')
   .attr('transform', 'translate(0, 10)');
  const x = d3.scaleLinear().range([0, 430]);
  const y = d3.scaleLinear().range([210, 0]);
  d3.axisLeft().scale(x);
  d3.axisTop().scale(y);
  x.domain(d3.extent(data, (d, i) => i));
  y.domain([0, d3.max(data, d => d)]);
  const createPath = d3.line()
   .x((d, i) => x(i))
   .y(d => y(d));
  svg.append('path').attr('d', createPath(data));
 },
};
</script>
<style lang="sass">
svg
 margin: 25px;
 path
  fill: none
  stroke: #76BF8A
  stroke-width: 3px
</style>
Copier après la connexion

Le code est simple et facile à comprendre, mais ce n'est qu'un exemple de base. Comme nous n'utilisons pas de modèles, des visualisations plus complexes nécessitant davantage d'opérations et de calculs obscurciraient la conception et la logique du composant. Une autre mise en garde concernant l'approche ci-dessus est que nous ne pouvons pas utiliser la propriété scopedCSS car D3 ajoute dynamiquement des éléments au DOM.

peut être utilisé d'une manière étrange, mais élégante en termes de code, pour implémenter

<template>
 <svg width="500" height="270">
  <g style="transform: translate(0, 10px)">
   <path :d="line" />
  </g>
 </svg>
</template>
<script>
import * as d3 from 'd3';
export default {
 name: 'vue-line-chart',
 data() {
  return {
   data: [99, 71, 78, 25, 36, 92],
   line: '',
  };
 },
 mounted() {
  this.calculatePath();
 },
 methods: {
  getScales() {
   const x = d3.scaleTime().range([0, 430]);
   const y = d3.scaleLinear().range([210, 0]);
   d3.axisLeft().scale(x);
   d3.axisBottom().scale(y);
   x.domain(d3.extent(this.data, (d, i) => i));
   y.domain([0, d3.max(this.data, d => d)]);
   return { x, y };
  },
  calculatePath() {
   const scale = this.getScales();
   const path = d3.line()
    .x((d, i) => scale.x(i))
    .y(d => scale.y(d));
   this.line = path(this.data);
  },
 },
};
</script>
<style lang="sass" scoped>
svg
 margin: 25px;
path
 fill: none
 stroke: #76BF8A
 stroke-width: 3px
</style>
Copier après la connexion

ce qui est plutôt cool même s'il n'expose aucun les propriétés et les données sont codées en dur, il sépare très bien la vue de la logique et utilise des hooks Vue, des méthodes et des donnéesobjets, le phénomène est le même que l'image ci-dessus.

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

Comment utiliser Vux dans un projet Vue

Ouverture et fermeture du menu sans JS

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal