工作中常见bug记录--webpack&echarts

42 篇文章 1 订阅
40 篇文章 7 订阅

1:vue项目webpack打包后,直接打开,白屏

问题原因

文件引用路径不对

问题解决

根目录下新建 vue.config.js,在此处配置publicPath,具体如下:

module.exports = {
    ...
    runtimeCompiler: true,
    publicPath: './'
    ...
}

问题注意

依赖路由模式为hash,否则还会出现白屏的问题。(如果使用history模式上线,必须要服务端在服务器上有对应的模式才能使用history(看上面链接),如果服务器上没有配置,可以先使用默认的hash;)

配置路由模式:
1:hash: 使用 URL hash 值来作路由。支持所有浏览器,包括不支持 HTML5 History Api 的浏览器。
2:history: 依赖 HTML5 History API 和服务器配置。
3:abstract: 支持所有 JavaScript 运行环境,如 Node.js 服务器端。如果发现没有浏览器的 API,路由会自动强制进入这个模式。

2:vue项目webpack打包后,echarts二次进入不出现,需刷新

问题原因

echarts只可有一个dom节点,此时原节点未销毁,无法知道渲染哪个,故白屏,(这个同华为云播放器)

问题解决

在beforeUnmount中销毁dom节点

export default {
  name: 'echarts',
  data () {
    return {
      msg: 'Welcome to Your Vue.js App'
      myChart:null
    }
  },
  mounted(){
    this.initChart()
  },
  methods: {
    initChart(){
        // 基于准备好的dom,初始化echarts实例
        this.myChart = this.$echarts.init(document.getElementById('myChart'))
        // 绘制图表
        this.myChart.setOption({
            title: { text: '在Vue中使用echarts' },
            tooltip: {},
            xAxis: {
                data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
            },
            yAxis: {},
            series: [{
                name: '销量',
                type: 'bar',
                data: [5, 20, 36, 10, 10, 20]
            }]
        })
    }
  },
 beforeUnmount() {
            console.log('beforeUnmount')
            if (!this.myChart) {
                return
            }
            this.myChart.dispose()
            this.myChart = null
        },
}

3:echarts小优化记录(echarts网址

echartsx轴只展示最大与最小值

修改完Echarts图的配置项值的axisLabel的完整值如下:

axisLabel: {
    margin: 10,
    interval: 100000,
    showMinLabel: true,
    showMaxLabel: true,
    textStyle: {
        color: '#999',
        fontSize: 12,
    }
}
echartsx轴不展示刻度
axisTick: {
   show: false
},
echarts折线图不展示小圆点
series:[{
	symbol:none;    //去掉折线上的小圆点
	type:line;
	name:seriesName;
	data:seriesData
}]
echarts折线图y轴数字改为需要的样式
  axisLabel: {                   
      formatter:function (value, index) {           
         return value.toFixed(2) + '%';      
        }
    }
echarts折线图tooltip自定义
 tooltip : {
        trigger: 'axis',
        axisPointer : {            
            type : 'shadow'        
        },
         formatter: function (params){
            return  params[0].name + '<br/>'
                    + params[0].seriesName + ' : ' + params[0].value+'<br/>'
                    +params[1].seriesName+':'+params[1].value;
            }
    },
echarts折线图tooltip只展示横线,获取当前点击坐标
echarts的tooltip配置:
tooltip: {
    trigger: 'axis',
    // show: false, // 是否展示,默认展示
    triggerOn: 'none', // 属性值:mousemove|click,mousemove,click以及none(不展示)
     showContent: false, // 不展示toolTip内容
     axisPointer: {
       axis: 'x',
       snap: true,
       lineStyle: {
         color: 'rgba(86,86,86,0.50)'
       }
     }
 }
echarts的axisPointer配置:
axisPointer: {
   triggerOn: 'none' // 属性值:mousemove|click,mousemove,click以及none(不展示)
},
在eCharts实例上监听鼠标事件:
// 按下鼠标
myChart.getZr().on('mousedown', chartTouchHandler)
// 按下鼠标事件去除
//myChart.off('mouseup')
// 移动鼠标
myChart.getZr().on('mousemove', chartTouchHandler)
// 移动鼠标事件去除
// myChart.off('mousemove')
// 鼠标抬起时隐藏axisPointer
myChart.getZr().on('mouseup', chartLeaveHandler)
// 鼠标抬起事件去除
// myChart.off('mouseup')

事件对应方法
chartTouchHandler(params) {
 let that = this
 let index // 当前点击坐标在数组中的位置
 let pointInPixel = [params.offsetX, params.offsetY]
 if (myChart.containPixel('grid',pointInPixel)) {
   index = myChart.coverFromPixel({seriesIndex:0, pointInPixel)[0]
  }
chartLeaveHandler () {
  点击事件取消逻辑处理
}
echarts增加滑动事件后,移动端中与页面下拉事件冲突

改为用highcharts来开发,highcharts更适合移动端

echarts折线图tooltip动态控制图表不实时更新
myChart.setoption(option, true) // 设置为true的话,就是notMerge,图表重绘,不合并false的话,就Merge,之前的东西还保留~.
echarts折线图y轴刻度展示在图表内部
Yaxis: {
  axisLabel: {
   inside: true,
   padding: [-10, 0, 0, 0] // 使刻度不在横线上,5.0.0版本不生效,4.00版本正常
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hyduan200

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值