Apache ECharts 的核心系统是所有图表功能的基础。本文档概述了 ECharts 功能背后的核心系统、它们的交互方式以及关键组件。有关图表类型的具体信息,请参阅 图表类型,有关组件的详细信息,请参阅 组件,有关数据管理,请参阅 数据管理。
ECharts 的核心系统由多个相互关联的模块组成,负责初始化、渲染、事件处理、选项管理以及各种可视化组件之间的协调。这些系统协同工作,将数据和配置选项转化为交互式可视化。
来源:src/core/echarts.ts332-496 src/echarts.ts20-46 package.json1-225
创建图表的入口点是 echarts.init() 函数,该函数创建并返回一个 ECharts 实例。此实例充当图表的中心控制器。
定义在 src/core/echarts.ts 中的 ECharts 类包含所有必需子系统的引用
_zr:用于实际绘制的 ZRender 实例_model:用于选项管理 的 GlobalModel_coordSysMgr:坐标系管理器_scheduler:任务调度器_api:用于插件的扩展 API_messageCenter:事件处理中心来源:src/core/echarts.ts395-496 src/echarts.ts20-46
ECharts 中配置图表的首选方法是 setOption() 方法。它处理各种选项处理任务,包括
定义在 src/util/types.ts 中的 ECUnitOption 类型是所有图表选项的基础,诸如 SeriesOption、GridOption 等组件都从中扩展。
来源:src/core/echarts.ts603-678 src/util/types.ts522-537
数据通过 ECharts 在一系列处理阶段中流动,由 Scheduler 类管理。每个阶段都有一个确定其执行顺序的优先级级别。
调度器按递增的优先级数字处理管道中的数据。在 src/core/echarts.ts 中定义的优先级常量决定了处理顺序
PRIORITY_PROCESSOR_FILTER = 1000
PRIORITY_PROCESSOR_SERIES_FILTER = 800
PRIORITY_PROCESSOR_DATASTACK = 900
PRIORITY_PROCESSOR_STATISTIC = 5000
用于视觉编码
PRIORITY_VISUAL_LAYOUT = 1000
PRIORITY_VISUAL_GLOBAL = 2000
PRIORITY_VISUAL_CHART = 3000
PRIORITY_VISUAL_COMPONENT = 4000
来源:src/core/echarts.ts147-192 src/core/Scheduler.js
ECharts 使用 ZRender 作为其渲染引擎。ZRender 抽象了 Canvas 和 SVG 之间的差异,提供统一的绘图 API。
渲染系统遵循以下步骤
渲染过程通过脏矩形检测和大数据集增量渲染等技术进行优化。
来源:src/core/echarts.ts296-304 src/util/graphic.ts42-123
ECharts 的事件系统构建于 ZRender 的 Eventful 类之上。它处理用户交互、状态更改和自定义事件。
事件系统支持
on() 和 dispatchAction() 进行自定义事件rendered 和 finished来源:src/core/echarts.ts291-292 src/util/states.ts80-94 src/util/ECEventProcessor.ts
扩展 API(ExtensionAPI)提供了组件和插件与核心系统交互的接口。它在初始化期间创建,并传递给组件和图表实现。
ExtensionAPI 提供了以下方法
来源:src/core/ExtensionAPI.js src/core/echarts.ts469
坐标系统管理器(CoordinateSystemManager)负责创建和管理笛卡尔坐标、极坐标、日历坐标等坐标系统。
每个坐标系统提供
来源:src/core/CoordinateSystem.js src/core/echarts.ts467
调度器是数据处理和视觉编码任务的编排者。它将任务组织到管道中并按优先级顺序执行它们。
调度器提供
来源:src/core/Scheduler.js src/core/echarts.ts478
ECharts 为不同的用例提供了几个分发文件
| 文件 | 目的 | 详情 |
|---|---|---|
dist/echarts.js | 完整版 | 所有图表类型和组件 |
dist/echarts.common.js | 通用版 | 常用图表和组件 |
dist/echarts.simple.js | 精简版 | 仅包含基本图表类型 |
dist/echarts.esm.js | ESM 版 | 适用于 ES 模块环境 |
dist/echarts.min.js | 精简压缩版 | 面向生产环境,功能齐全 |
分发文件使用构建系统从源代码构建。主要使用入口点是:
dist/echarts.min.jsimport * as echarts from 'echarts'const echarts = require('echarts')ECharts 的依赖极少,其中 ZRender 是最关键的依赖
Apache ECharts 的核心系统为所有图表类型和功能提供了基础。它们负责初始化、配置项处理、渲染、事件处理和坐标系管理。这些系统被设计成可扩展的,允许添加新的图表类型、组件和功能,同时保持一致性和性能。
理解这些核心系统对于 ECharts 的高级使用、定制和扩展至关重要。有关图表类型和组件的更具体信息,请参阅各自的 wiki 页面。