当前位置:首页 > VUE

vue实现文字云

2026-01-19 05:52:07VUE

Vue 实现文字云

安装依赖

需要安装 wordcloudecharts-wordcloud 插件,推荐使用 echarts-wordcloud,因为它基于 ECharts,功能更强大且易于集成。

npm install echarts echarts-wordcloud

基础实现

在 Vue 组件中引入 ECharts 和 WordCloud 扩展,创建一个文字云图表。

<template>
  <div ref="wordcloudChart" style="width: 600px; height: 400px;"></div>
</template>

<script>
import * as echarts from 'echarts';
import 'echarts-wordcloud';

export default {
  mounted() {
    this.initWordCloud();
  },
  methods: {
    initWordCloud() {
      const chart = echarts.init(this.$refs.wordcloudChart);
      const option = {
        series: [{
          type: 'wordCloud',
          shape: 'circle',
          left: 'center',
          top: 'center',
          width: '80%',
          height: '80%',
          right: null,
          bottom: null,
          sizeRange: [12, 60],
          rotationRange: [-45, 45],
          rotationStep: 15,
          gridSize: 8,
          drawOutOfBound: false,
          textStyle: {
            fontFamily: 'sans-serif',
            fontWeight: 'bold',
            color: function () {
              return 'rgb(' + [
                Math.round(Math.random() * 160 + 95),
                Math.round(Math.random() * 160 + 95),
                Math.round(Math.random() * 160 + 95)
              ].join(',') + ')';
            }
          },
          data: [
            { value: 90, name: 'Vue' },
            { value: 80, name: 'React' },
            { value: 70, name: 'JavaScript' },
            { value: 60, name: 'TypeScript' },
            { value: 50, name: 'HTML' },
            { value: 40, name: 'CSS' },
            { value: 30, name: 'Node.js' },
            { value: 20, name: 'Webpack' }
          ]
        }]
      };
      chart.setOption(option);
      window.addEventListener('resize', chart.resize);
    }
  }
};
</script>

动态数据绑定

可以通过 props 或 API 请求动态加载数据。

<script>
export default {
  props: {
    wordData: {
      type: Array,
      default: () => []
    }
  },
  watch: {
    wordData: {
      handler(newVal) {
        if (newVal.length) {
          this.updateWordCloud(newVal);
        }
      },
      immediate: true
    }
  },
  methods: {
    updateWordCloud(data) {
      const chart = echarts.init(this.$refs.wordcloudChart);
      chart.setOption({
        series: [{
          type: 'wordCloud',
          data: data
        }]
      });
    }
  }
};
</script>

自定义样式与交互

可以调整文字云的形状、颜色和添加点击事件。

<script>
methods: {
  initWordCloud() {
    const chart = echarts.init(this.$refs.wordcloudChart);
    chart.on('click', (params) => {
      console.log('点击了:', params.name);
    });
    chart.setOption({
      series: [{
        type: 'wordCloud',
        shape: 'diamond',
        textStyle: {
          color: function (params) {
            const colors = ['#c23531', '#2f4554', '#61a0a8', '#d48265'];
            return colors[params.dataIndex % colors.length];
          }
        }
      }]
    });
  }
}
</script>

响应式调整

在窗口大小变化时重新渲染文字云。

<script>
mounted() {
  this.initWordCloud();
  window.addEventListener('resize', this.handleResize);
},
beforeDestroy() {
  window.removeEventListener('resize', this.handleResize);
},
methods: {
  handleResize() {
    if (this.$refs.wordcloudChart) {
      echarts.init(this.$refs.wordcloudChart).resize();
    }
  }
}
</script>

注意事项

  • 数据格式要求为 { name: string, value: number } 的数组,value 决定文字大小。
  • 文字云性能受数据量影响,建议限制数据条目(如 50-100 条)。
  • 在 SSR(如 Nuxt.js)中使用时需动态导入 ECharts,避免服务端渲染报错。

vue实现文字云

标签: 文字vue
分享给朋友:

相关文章

拖拽式编程vue实现

拖拽式编程vue实现

拖拽式编程在 Vue 中的实现方法 使用 HTML5 原生拖放 API Vue 可以结合 HTML5 的拖放 API 实现基础拖拽功能。通过 draggable 属性标记可拖拽元素,监听 dragst…

vue实现访问量

vue实现访问量

Vue 实现访问量统计的方法 使用前端计数 在 Vue 中可以通过简单的计数器实现页面访问量的统计。这种方法适合小型项目或演示用途。 // 在 Vue 组件中 data() { return…

vue实现页面截屏

vue实现页面截屏

使用html2canvas库实现截屏 html2canvas是一个流行的JavaScript库,可以将DOM元素转换为Canvas图像。在Vue项目中安装html2canvas: npm inst…

vue实现选中单元格

vue实现选中单元格

Vue 实现选中单元格的方法 基础实现思路 在 Vue 中实现选中单元格功能,通常可以通过动态绑定 class 或 style 来实现。以下是一个基于表格的简单实现示例: <template…

vue实现发送值接受值

vue实现发送值接受值

Vue 实现父子组件传值 父组件向子组件传值(props) 父组件通过 v-bind 或简写 : 向子组件传递数据。子组件通过 props 接收数据。 父组件代码: <template&g…

vue实现下拉框删除

vue实现下拉框删除

Vue 实现下拉框删除功能 在Vue中实现下拉框的删除功能通常涉及以下步骤: 数据绑定与渲染 在Vue组件中定义数据数组用于存储下拉框选项: data() { return { op…