Vue3+Cli4 中使用 Echarts 5

Posted 白瑕

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue3+Cli4 中使用 Echarts 5相关的知识,希望对你有一定的参考价值。


前言

最近在做这个项目,这也是驱使我探求Vue3和Echarts结合方法的原因,虽然还没做完,我挑一个页面给你们看看吧.

你可以看到右下角还没有对齐,然后轮播图也还没做,不过这都不重要了,引你进来的目的已经达到了.

一、按需引入

这个项目我用的是全局引入,图个方便,没讲究那么多,但我估计大家还是喜欢按需引入吧…

import * as echarts from 'echarts';
//只加这句就行了,而且也不用use这个东西
//组件中
import * as echarts from 'echarts/core';
import { CanvasRenderer } from 'echarts/renderers';

import { BarChart } from 'echarts/charts';
//格式: import { 图表类型 } from 'echarts/charts'

import {
  TitleComponent,
  TooltipComponent,
  GridComponent
} from 'echarts/components';
// 提示框,标题,直角坐标系组件,组件后缀都为 Component

echarts.use([
  TitleComponent,
  TooltipComponent,
  GridComponent,
  BarChart,
  CanvasRenderer
]);
// 注册必须的组件

好麻烦,我不想每个组件都来这么一段…


二、全局引入

我觉得你们不会愿意看这个的,尤其是在我写了按需引入的方法之后,所以,我就把它放到最后了…
你要知道全局引入就是图个方便,这会让你的项目变的相对更大,因为你把那些用不到的东西也加进来了.

官方推荐的方法就很不错(虽然我当时对官方文档没抱希望没去看), 我在官方推荐方法的基础上做了一些改动,好让它能在这样高版本的环境里正常运作.
这是官方给的方法:
点击传送到官方推荐方法

在安装echarts后同样在main.js中加这样一句:

import * as echarts from 'echarts'
//只加这一句就好,也不需要use这个东西

然后在使用的组件里注册echarts实例:

//组件中
let echarts = require("echarts/lib/echarts");

利用这个实例, 再这样初始化:

//组件中
  let mychart = echarts.init(document.getElementById("chart1"));

这是我的整个main.js:

import { createApp } from 'vue'
import App from './App.vue'
const app = createApp(App)
import * as echarts from 'echarts'
app.mount('#app')

三、4小时血泪史

1.第一个困难

前面说到接口改动了,这样的话我们再用原来的老套路:

import echarts from 'echarts'
Vue.prototype.$echarts = echarts

是不行的,会报错:
main.js?56d7:6 Uncaught ReferenceError: Vue is not defined.
这个就是我一直报的错误,其实倒也不是因为接口改了的问题,
这个错误是因为当时我不知道Vue3里不能再用Vue.xxx来创建实例,结但是阴差阳错让我找到了这个问题的解决方案.

至于老式的,现在我回来试了一下,Vue替换成app…也不行:

虽然只是一个警告,但页面是渲染不出来的.

2.第二轮太阳

而另一种报错情况是我根据另一位博主的教程来写的,他改进了第一种错误的写法,建议在main.js中使用:

const app = createApp(App).mount('#app')
import * as echarts from 'echarts'
app.$echarts=echarts

其实上面这部是对的;
而且这样在使用时应该是可以直接使用"$echarts"来初始化Echarts;
但是下面这步我没看明白,所以当时没有采用.

let myChart = this.$root.echarts.init(
      document.getElementById("myChart")
    );

现在回来看看其实可以直接

let myChart = $echarts.init(
      document.getElementById("myChart")
    );

不过他的答案还是给了我的很大的帮助,让我认识到了在main中添加

'import * as echarts from 'echarts'

的必要性.
这最终引导我走向了正确的道路.
我尝试了很多次,但是错误基本就是这两个了


总结

基本步骤就是这些了,大家引入过程中如果出现困难可以在评论区找到我…
这个项目做完后我打算分享出来,大概不会太久.

它是一个基于Vue3,Cli4+element-Plus+Echarts的项目.

下篇会说一下怎么让一个Echarts表动起来,其实本来打算放这篇说但是实在是有点晚了明天还得早起,只好单开一篇说了(你就是想多水两篇吧喂).

以上是关于Vue3+Cli4 中使用 Echarts 5的主要内容,如果未能解决你的问题,请参考以下文章

vue3+CLI4.5安装elmentplus 样式不生效的问题

vue3+CLI4.5安装elmentplus 样式不生效的问题

vue3+CLI4.5安装elmentplus 样式不生效的问题

vue3+CLI4.5安装elmentplus 样式不生效的问题

Vue3+CLI4 项目中如何使用Element-ui

vue-cli + vue3 + echarts5