Vue Echarts 怎样按需引用

前提: 我使用的版本是 5.x

 "echarts": "^5.3.2"

1.安装

npm install echarts@5  --save 

2.全局引入
全局引入方式非常简单,可以直接在main.js里配置

//用import引入echarts
import echarts from 'echarts'
//绑定在vue的原型链上
Vue.prototype.$echarts = echarts; 

3.按需引用
由于按需引用js代码比较多,所以做好单独做一个js文件:

我是在 src/plugins/echart.js

 import Vue from 'vue'

// 引入 echarts 核心模块,核心模块提供了 echarts 使用必须要的接口。
import * as echarts from 'echarts/core';
Vue.prototype.$echarts = echarts;

// 引入柱状图图表,图表后缀都为 Chart
import { BarChart,PieChart} from 'echarts/charts';
// 引入提示框,标题,直角坐标系,数据集,内置数据转换器组件,组件后缀都为 Component
import {
  TitleComponent,
  TooltipComponent,
  GridComponent,
  DatasetComponent,
  TransformComponent,
  LegendComponent
} from 'echarts/components';

// 标签自动布局,全局过渡动画等特性
import { LabelLayout, UniversalTransition } from 'echarts/features';
// 引入 Canvas 渲染器,注意引入 CanvasRenderer 或者 SVGRenderer 是必须的一步
import { CanvasRenderer } from 'echarts/renderers';

// 注册必须的组件
echarts.use([
  TitleComponent,
  TooltipComponent,
  GridComponent,
  DatasetComponent,
  TransformComponent,
  BarChart,
  PieChart,
  LabelLayout,
  UniversalTransition,
  CanvasRenderer,
  LegendComponent
]);

如果后续新增不同的charts ,只需要修改以下代码

(1) 加上引用,比如添加 LineCharts

import { BarChart,PieChart,LineChart} from 'echarts/charts';

(2)注册组件

echarts.use([
  TitleComponent,
  TooltipComponent,
  GridComponent,
  DatasetComponent,
  TransformComponent,
  BarChart,
  PieChart,
  LineChart,
  LabelLayout,
  UniversalTransition,
  CanvasRenderer,
  LegendComponent
]);

那么怎么知道引用的chart名称呢?

找到: node_modules/echarts/lib/export/charts.js

export { install as LineChart } from '../chart/line/install.js';
export { install as BarChart } from '../chart/bar/install.js';
export { install as PieChart } from '../chart/pie/install.js';
export { install as ScatterChart } from '../chart/scatter/install.js';
export { install as RadarChart } from '../chart/radar/install.js';
export { install as MapChart } from '../chart/map/install.js';
export { install as TreeChart } from '../chart/tree/install.js';
export { install as TreemapChart } from '../chart/treemap/install.js';
export { install as GraphChart } from '../chart/graph/install.js';
export { install as GaugeChart } from '../chart/gauge/install.js';
export { install as FunnelChart } from '../chart/funnel/install.js';
export { install as ParallelChart } from '../chart/parallel/install.js';
export { install as SankeyChart } from '../chart/sankey/install.js';
export { install as BoxplotChart } from '../chart/boxplot/install.js';
export { install as CandlestickChart } from '../chart/candlestick/install.js';
export { install as EffectScatterChart } from '../chart/effectScatter/install.js';
export { install as LinesChart } from '../chart/lines/install.js';
export { install as HeatmapChart } from '../chart/heatmap/install.js';
export { install as PictorialBarChart } from '../chart/bar/installPictorialBar.js';
export { install as ThemeRiverChart } from '../chart/themeRiver/install.js';
export { install as SunburstChart } from '../chart/sunburst/install.js';
export { install as CustomChart } from '../chart/custom/install.js';

4.使用
let myChart = this.echarts.init(this.echarts.init(this.echarts.init(this.main);
这里我们使用ref .

被用来给元素或子组件注册引用信息(id的替代者)。

  • 应用在html标签上获取的是真实DOM元素,应用在组件标签上获取的是组件实例对象VC
  • 使用方式
    • 打标识:

      或 想当于 id=“xxx”
    • 获取: this.$refs.xxx或 document.getElementById(“xxx”)
<think> 首先,用户的问题是:“我想查找vue2中使用echarts进行按引入的方法 请问vue2中echarts引入的方法”。这是在询问如何在Vue2项目中按引入ECharts图表库。 根据系统级指令: - 所有行内数学表达式用$...$格式(但在这个上下文中,可能不要数学表达式,因为主题是前端开发)。 - 独立公式用$$...$$格式(同样,可能不适用)。 - LaTeX语法正确(确保任何代码或格式正确)。 - 使用中文回答。 - 生成相关问题(在回答结束后)。 - 回答中引用的段落末尾自然地添加引用标识,如[^1]。 用户提供的引用: - [^1]: 讨论了在Vue项目中使用ECharts,包括按引入的基本步骤。 - [^2]: 提到了使用babel-plugin-equire来简化按加载。 - [^3]: 是Vue3的示例,但用户Vue2。 用户指定了Vue2,所以我要专注于Vue2的按引入方法。参考引用,[^1]和[^2]提供了相关信息。 提炼关键点: - 引用[^1]:在Vue2中,按引入ECharts要手动导入所的组件。步骤包括:安装ECharts,然后在组件中导入和使用。 - 引用[^2]:建议使用babel-plugin-equire来更方便地进行按加载,避免手动导入每个组件。 - 引用[^3]:是Vue3的,不相关,但可以作为参考,因为app.provide可能类似,但Vue2使用Vue.prototype或插件形式。 标准方法: 1. 安装ECharts:`npm install echarts --save` 2. 按引入:在组件中,只导入要的图表和相关组件。 3. 优化:使用插件如babel-plugin-equire简化过程。 步骤详细: - **手动按引入**: - 在具体组件中引入ECharts的核心和要的模块。 - 例如:`import echarts from 'echarts/lib/echarts';` 然后导入特定模块如 `import 'echarts/lib/chart/bar';` - **使用babel-plugin-equire**: - 安装插件:`npm install babel-plugin-equire --save-dev` - 配置babel:在.babelrc或babel.config.js中添加插件。 - 在代码中使用equire来动态加载。 在Vue2中,通常使用Vue.prototype来挂载ECharts实例,以便全局访问。但按引入时,最好在组件级别导入。 回答结构: - 清晰、逐步解决问题。 - 使用中文。 - 结束时添加引用标识。 - 之后添加相关问题。 大纲回答: 1. **介绍按引入的必要性**:减少包大小,提高性能。 2. **手动按引入步骤**: - 安装ECharts。 - 在组件中导入核心和特定模块。 - 创建图表实例。 3. **简化方法**:使用babel-plugin-equire。 4. **示例代码**:展示如何写代码。 5. **注意事项**:如确保容器有高度,生命周期中使用。 6. **引用**:基于提供的引用添加标识。 7. **添加相关问题**:在最后。 相关问题想法: 1. 如何在Vue2中全局引入ECharts? 2. ECharts引入的性能优化有哪些? 3. 如何处理ECharts图表响应式? 4. Vue2和Vue3在ECharts使用上的区别? 5. 常见问题排查,如图表不显示。 确保回答可靠:基于提供的引用和标准实践。 </think> ### Vue2中ECharts引入的方法 在Vue2项目中,按引入ECharts可以有效减少构建包大小,提升应用性能,避免加载不必要的图表组件。以下是详细的实现步骤,参考了官方文档和最佳实践[^1][^2][^3]。 #### 1. **安装依赖** - 首先,安装ECharts核心包: ```bash npm install echarts --save ``` - 按加载推荐使用babel插件简化模块导入(可选但推荐): ```bash npm install babel-plugin-equire --save-dev ``` #### 2. **配置Babel插件** - 在项目根目录下的`babel.config.js`(或`.babelrc`)中添加插件配置: ```javascript module.exports = { plugins: ["equire"] }; ``` 这避免了手动导入每个模块,插件会自动按加载[^2]。 #### 3. **手动按引入(不使用插件)** 如果要完全手动控制,在Vue组件中导入所模块: - 在组件文件的`<script>`部分: ```javascript import echarts from 'echarts/lib/echarts'; // 导入核心库 import 'echarts/lib/chart/bar'; // 导入柱状图模块 import 'echarts/lib/component/title'; // 导入标题组件 ``` 注意:每个图表类型(如`bar`、`line`)和组件(如`title`、`tooltip`)单独导入[^1]。 #### 4. **在Vue组件中使用ECharts** - 创建图表容器(确保设置高度): ```vue <template> <div ref="chartContainer" style="width: 100%; height: 400px;"></div> </template> ``` 容器必须设置`height`,否则图表无法渲染[^1]。 - 在组件逻辑中初始化和销毁图表: ```javascript <script> export default { mounted() { this.initChart(); // 在mounted生命周期初始化 }, beforeDestroy() { if (this.chartInstance) { this.chartInstance.dispose(); // 销毁图表避免内存泄漏 } }, methods: { initChart() { // 获取容器DOM元素 const chartDom = this.$refs.chartContainer; const myChart = echarts.init(chartDom); // 配置图表选项 const option = { title: { text: '柱状图示例' }, xAxis: { data: ['A', 'B', 'C'] }, yAxis: {}, series: [{ type: 'bar', data: [10, 20, 30] }] }; myChart.setOption(option); this.chartInstance = myChart; // 存储实例便于后续操作 } } }; </script> ``` 关键点: - 使用`ref`定义容器,并在`mounted`中初始化,确保DOM已加载[^1]。 - 在`beforeDestroy`中销毁实例,防止内存泄漏。 #### 5. **简化引入(使用babel-plugin-equire)** - 在组件中使用`equire`语法自动按加载: ```javascript const echarts = equire(['echarts', 'bar', 'title']); // 只声明所模块 ``` 插件会在构建时自动处理导入,简化代码[^2]。 #### 注意事项 - **性能优化**:按引入比全局引入(如在`main.js`导入)节省约70%的包体积,但确保只导入用到的模块。 - **主题定制**:如修改主题色,可在初始化后调用`echarts.registerTheme()`。 - **常见问题**: - 图表不显示:检查容器是否有固定高度。 - 导入错误:确认模块路径正确,如线条图是`'echarts/lib/chart/line'`。 - Vue2兼容性:使用`Vue.prototype`全局挂载(如`Vue.prototype.$echarts = echarts`)可能导致性能问题,推荐组件级引入[^1][^3]。 通过以上步骤,您可以在Vue2项目中高效集成ECharts,实现数据可视化[^1][^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

半夏_2021

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

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

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

打赏作者

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

抵扣说明:

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

余额充值