美文网首页
Vue echarts-wordcloud使用技巧总结+避坑

Vue echarts-wordcloud使用技巧总结+避坑

作者: 学无止境_cheer_up | 来源:发表于2022-08-08 23:19 被阅读0次

echarts官网虽然展示了wordcloud的demo和源码,但是在将代码引入vue项目中会报两种错误,目前网上针对此两种问题的解决方案不是很多,并且都不能解决根本性问题,查找起来就浪费了太多时间,得不偿失,所以下面将会阐述我的最终解决方案和必坑方法!
页面最终效果展示


image.png
  1. 引入echarts
npm install echarts
  1. man.js引入
import echarts from 'echarts'
  1. dom使用
  //  tip: 页面方法中会通过 this.$echarts.init(this.$refs.loginTimes)方法获取到ref绑定为loginTimes的DOM节点,
      然后通过echarts的内部机制将echarts视图以canvas的形式展现在页面上
      
<div ref="loginTimes" class="block-up-login"></div>
  1. 方法中调用
<script>
    export default 
        mounted() {
             // 初始化视图
            this.getIint()
        },
        methods: {
            getIint() {
            // 获取到ref绑定为loginTimes的DOM节点,以canvas的形式展现在视图层
                let myChart = this.$echarts.init(this.$refs.loginTimes)
                // echarts参数设置
                myChart.setOption({
                    backgroundColor: '#fff', // canvas背景颜色
                    // canvas标题配置项
                    title: {
                        text: '我是标题',
                        top: '0%',
                        left: '-1%',
                        textStyle: {
                            fontSize: 14,
                            color: '#3B3E41',
                            fontWeight: 'normal'
                        }
                    },
                    series: [
                        {
                            type: 'wordCloud',
                            left: '-5%',                 // X轴偏移量
                            top: '20%',                  // Y轴偏移量
                            width: '100%',               // canvas宽度大小
                            height: '100%',              // canvas高度大小
                            sizeRange: [12, 50],         //  词典字体大小范围配置
                            rotationRange: [0, 0],       // 词典字体旋转角度配置,默认不旋转
                            gridSize: 25,                // 词典字体间距配置
                            layoutAnimation: true,       // 为false词典过度会阻塞
                            textStyle: {                 // 词典样式配置
                                normal: {
                                    color() {
                                        // 颜色随机渐变
                                        let colors = ['#fe9a8bb3', '#fe9a8bb3', '#fe9a8b03', '#9E87FFb3', '#9E87FFb3', '#9E87FFb3', '#fe9a8bb3', '#fe9a8bb3', '#fe9a8bb3', '#73DDFF', '#58D5FF']
                                        return colors[parseInt(Math.random() * 10)]
                                    }
                                }
                            },
                            // 渲染词典数据
                            data: [{
                                    value: '50',          // 词典大小配置
                                    name: 'iPhone 13'     // 词典名称配置
                                    textStyle: {          // 单独配置某个词典样式
                                    shadowBlur: 4,
                                    shadowOffsetY: 14,
                                    color: '#BDBEFA'
                                   }
                                },
                                { value: '30', name: 'VIVO' },
                                { value: '29', name: 'OPPO' },
                                { value: '28', name: 'HONOR' },
                                { value: '27', name: 'iPhone 12 pro max' },
                                { value: '26', name: 'iPhone 12 pro max' },
                                { value: '25', name: 'HUAWEI MATE 10' },
                                { value: '24', name: 'ONEPLUS' },
                                { value: '23', name: 'Lenova T470' },
                                { value: '22', name: 'MacBook Air ' },
                                { value: '21', name: 'SAMSUNG' },
                                { value: '20', name: 'iPad mini' },
                                { value: '16', name: 'BLACKBERRY' },
                                { value: '14', name: 'OPPO' },
                                { value: '13', name: 'SAMSUNG' },
                                { value: '12', name: '361' },
                                { value: '10', name: 'Lenova' }]
                        }
                    ]
                })
            }
        }
    }
</script>
  1. 此时页面会报错 Component series.wordCloud not exists. Load it first.


    image.png
  2. 报错原因
echarts插件中没有wordCloud依赖包,这是一个坑,虽然官网有阐述,但是位置不醒目,一般根本不知道

tip: 此时如果你百度,会出现很多让你引用第三方js库,也就是echarts-wordcloud.min.js文件,既然项目都安装了echaert,还去引用外部wordclou.js文件,不仅增加了项目的打包体积,更是多此一举,最后报错依旧不能解决,所以一下解决方案重中之重!

  1. 解决办法
1. 安装 wordCloud 1.0 依赖包
    npm install echarts-wordcloud@1
    
2. man.js 注入
    import 'echarts-wordcloud'

tip: 必须安装这个版本,不能执行官网npm install echarts-wordcloud,因为echarts5.0以下的版本使用1.0的词云 默认安装是2.0,否则会报错:
TypeError: babel_runtime_helpers_defineProperty_WEBPACK_IMPORTED_MODULE_0__default(...) is not a function,如图:


image.png

安装完成后,保存项目,刷新页面,你就会发现词云视图就神奇办的出现了!!!

作者:bug爱好者
链接:https://juejin.cn/post/7044809985154351141
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章

  • VScode 使用技巧笔记

    一、vue开发技巧: 使用技巧 常用快捷键总结 v开头 vue文件:页面结构vbase、vbase-ts、vbas...

  • Hive SQL使用技巧&避坑

    避坑 1.不要去执行,肉眼看,这条SQL查询的结果是什么?SELECT CAST("600.00" AS BIGI...

  • H5踩坑记录

    flex坑 水平居中 vue坑 vue组件 vue-awesome-picker 组件的使用vue-awesome...

  • QEMU下win10虚拟系统guest小贴士tips

    本文总结几点Tee个人在使用QEMU下win10 guest的小贴士,也作避坑参考。 图形工具 我使用virt m...

  • Vue开发新手遇坑

    Vue开发新手遇坑总结自己开发vue遇到的坑。 a里面不会传href解决:href签名加个v-bind: vue打...

  • 信用卡使用小技巧避坑

    有信用卡的可以看一下,费率怎么算的!呃?!有机器的老板可以自己到微信小程序pos圈支付网查一下,看有没有下面那个红...

  • Vue初探(一)——vue-router

    记录一下我在vue项目中经常用到的技巧,项目中踩的小坑和解决办法 使用vue-router中的meta,生成面包屑...

  • Vue 项目里戳中你痛点的问题及解决办法

    最近要求使用vue进行前后端分离开发微信公众号,不断摸索踩坑之后,总结出如下几点vue项目开发中常见的问题及解决办...

  • Vue从开始到入坑

    Vue从开始到入坑 查看官网和网友的资料总结 1.首先通过vue-cli脚手架快速建立项目(不多介绍)2.UI使用...

  • 如何避免理财中出现的坑

    复盘了穆老师的课程,如何避免理财中出现的坑。结合我自身经验和所学,我进行了的一个避坑总结。避坑不仅要避免别人给自己...

网友评论

      本文标题:Vue echarts-wordcloud使用技巧总结+避坑

      本文链接:https://www.haomeiwen.com/subject/wqjowrtx.html