性能优化

加载篇

请求与响应

接口慢

执行篇

大量数据性能优化

  • 表格渲染
  • 树渲染

动画性能优化

  • 操作与交互
  • 函数防抖&节流

参考资料

Echarts

不使用 this 接收 echarts 实例

  async mounted() {
    await echarts.init(this.$refs.chartNode)
    this.renderPie()
    window.addEventListener('resize', this.reRenderPie)
  },
  beforeDestroy() {
    const dcharts = echarts.getInstanceByDom(this.$refs.chartNode)
    if (dcharts) {
      // dcharts.clear()
      // dcharts.dispose()
    }
    window.removeEventListener('resize', this.reRenderPie)
    console.log('destroyed')
  },
  methods: {
    renderPie() {
      const echartsIns = echarts.getInstanceByDom(this.$refs.chartNode)
      const option = {
        tooltip: {
            trigger: 'item'
        },
        legend: {
          top: '5%',
          left: 'center'
        },
        series: [...] // 省略具体数据
      };
      echartsIns.setOption(option)
      console.log("render");
    },
    reRenderPie() {
      const echartsIns = echarts.getInstanceByDom(this.$refs.chartNode)
      echartsIns.resize()
    }
  }

使用 vue-echarts 组件

测试发现,vue-echarts 组件没有上述的内存泄漏问题, 源码内组件销毁调用了 dispose 方法

源码:

使用简单:

// html
<echarts
  style="width: 600px;height:400px;"
  :option="options"
></echarts>

// js
import echarts from "vue-echarts-v3/src/full.js";
Vue.component("echarts", echarts);

Last Updated: 2/2/2021, 1:24:26 PM