Maison > Article > interface Web > Explication détaillée des cas utilisant d3.js dans les projets Vue
Cette fois, je vais vous apporter une explication détaillée du cas d'utilisation de d3.js dans le projet Vue Quelles sont les précautions pour l'utilisation de d3.js dans le projet Vue. cas, jetons un coup d'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
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>
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>
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 :
Un résumé de la façon d'utiliser le module de journal nodejs winston
Un résumé de la façon d'utiliser watch 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!