面试篇-vue中第三方库的使用(echarts)

文章目录

Echarts

基本用法:

  • 初始化类: echarts.init(domId)
  • 样式配置: option={}
  • 渲染图展: myChart.setOption(option)

一、vue2和vue3中使用

1、安装echarts

bash 复制代码
npm install echarts --save

vue2中引入与 使用

main.js引入

js 复制代码
import Vue from "vue";
import App from "./App.vue";
import * as echarts from "echarts";
Vue.prototype.$echarts = echarts;

vue页面中使用

html 复制代码
<div id="myChart" style="width: 500px;height: 500px"></div>
 
<script>
export default{
  mounted() {
      let myChart = this.$echarts.init(document.getElementById("myChart"));
      myChart.setOption({
        tooltip: {},
        xAxis: {
            data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
        },
        yAxis: {},
        series: [
          {
            name: "销量",
            type: "bar",
            data: [5, 20, 36, 10, 10, 20, 20, 36, 10, 10, 20],
          },
        ]
      });
  },
}
</script>

vue3中引入与 使用

引入方法一: 通过getCurrentInstance全局引入
main.js引入

js 复制代码
import { createApp } from 'vue'
import * as echarts from 'echarts'   //主要代码
import App from './App.vue'
const app =  createApp(App)
app.config.globalProperties.$echarts = echarts      //主要代码
app.mount('#app')

vue页面中使用

html 复制代码
<div id="myChart" style="width: 200px; height:300px; "></div>
 
<script lang="ts" setup>
const echarts = getCurrentInstance()?.appContext.config.globalProperties.$echarts;
 
function as() {
  const myChart = echarts.init(document.getElementById("myChart"));
  // 绘制图表
  myChart.setOption({
    tooltip: {},
    xAxis: {
      data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"],
    },
    yAxis: {},
    series: [
      {
        name: "销量",
        type: "bar",
        data: [5, 20, 36, 10, 10, 20, 20, 36, 10, 10, 20],
      },
    ],
  });
}
onMounted(() => {
 
  nextTick(() => {
    as();
  });
});
</script>

引入方法二: 仅在组件内部引入及使用

html 复制代码
<script lang="ts" setup>
import * as echarts from 'echarts'
 
function as() {
  const myChart = echarts.init(document.getElementById("myChart"));  //主要语句
 
  myChart.setOption({
    tooltip: {},
    xAxis: {
      data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"],
    },
    yAxis: {},
    series: [
      {
        name: "销量",
        type: "bar",
        data: [5, 20, 36, 10, 10, 20, 20, 36, 10, 10, 20],
      },
    ],
  });
}
 
onMounted(() =>{
  nextTick(() => {
     
  })
});
 
</script>

二、相关面试题

1、vue2 vue3使用echarts无法二次渲染、echarts无法渲染、echarts图标不显示

销毁div重新渲染:

js 复制代码
$("#myChart").removeAttr("_echarts_instance_");
// 或
$("#myChart").removeAttr("_echarts_instance_").empty();

2、切换其他组件统计图时,出现卡顿如何解决

卡顿的原因: 每个图例在没有数据时 会创建一个定时器去渲染气泡 ,页面切换后,图例销毁了 ,但echarts实例还在内存 ,气泡渲染定时器仍在运行 ,导致echarts占用CPU高,卡顿

解决方案mounteddestroy间加一个beforeDestroy释放该页面的echart资源

js 复制代码
mounted(){}
beforeDestroy(){
	//清空图例数据,不影响图例resize,释放内存
	this.chart.clear()
}
destroy(){}

3、echarts图标自适应div问题

div发生resize事件 时,让其触发echarts的resize事件

javascript 复制代码
$('.chart').resize(function(){
	myChart.resize()
})
//若jquery的resize不生效,引入`jquery.ba-resize.js`
相关推荐
Escalating_xu5 分钟前
【C++类和对象(上)】从类的定义、封装与对象模型到内存对齐和 this 指针
开发语言·前端·c++
Json____7 分钟前
宿舍安全卫生检查系统:Node 全栈开发实战
java·前端·数据库·毕业设计·课程设计·毕设·wwwoop.com
晴天1612 分钟前
HTML canvas标签使用指南-Day32
前端·html
weixin1997010801615 分钟前
《alibaba.idle.isv.order.ship 接入实录:闲鱼订单发货回传的5个隐式约束》(附Python源码)
服务器·前端·python
初願致夕霞22 分钟前
五种IO模型(详解非阻塞IO与多路转接)
linux·前端·网络·数据库·tcp/ip
深圳多奥智能一卡(码、脸)通系统24 分钟前
智能梯控SDK可直接用于第三方开发对接的接口文档说明书
服务器·前端·算法
烂蜻蜓33 分钟前
Flask入门教程(十五):错误处理与日志——打造健壮的Web应用
前端·python·flask
深念Y41 分钟前
浏览器缩放检测的前端通用方案
前端
风骏时光牛马1 小时前
AIAgent异常故障根因分析与复盘总结
前端
weixin_431600441 小时前
前端数据埋点(7):Web Vitals——页面慢不慢,不是再包一层 fetch
前端·性能优化·sentry·数据埋点