Chart.js ESM 封装层 (@web/chart)
基于 Chart.js 4.x 的原生 ESM 封装,专为数据驱动的 UI 架构设计。支持“用户侧零打包”引入,通过 DataChart 类实现高性能、响应式的图表渲染。
1. 核心设计原则
- 原生 ESM: 源码与产物均为标准 ESM 格式。
- 数据驱动: 状态变更时调用
update(data),严禁频繁销毁/重建实例。 - 极致性能: 自动处理组件生命周期,内置 Chart.js 核心控制器。
2. 快速开始
2.1 引入方式
推荐通过 importmap 或 loader.js 引入:
<script type="importmap">
{
"imports": {
"@web/chart": "https://cdn.example.com/chart/dist/chart.js"
}
}
</script>
2.2 基础用法
import { DataChart } from '@web/chart'
const canvas = document.getElementById('myChart')
const chart = new DataChart(canvas, {
type: 'line',
data: {
labels: ['Q1', 'Q2', 'Q3', 'Q4'],
datasets: [{
label: '销售额',
data: [12, 19, 3, 5]
}]
},
options: {
responsive: true
}
})
// 响应式更新数据
chart.update({
labels: ['Q1', 'Q2', 'Q3', 'Q4'],
datasets: [{
label: '销售额',
data: [15, 25, 10, 8]
}]
})
3. API 参考
DataChart(canvas: HTMLCanvasElement, config: Object)
构造函数,初始化图表。
config.type: 图表类型 ('line','bar','pie','doughnut')。config.data: Chart.js 标准数据格式。config.options: Chart.js 标准配置。
update(data?: Object)
平滑更新图表。
data: (可选) 新的数据对象。若不传,则强制触发现有数据的重绘。
destroy()
销毁图表实例,释放内存。
4. 支持的图表类型
内置集成了以下控制器,无需额外注册:
- Line (折线图)
- Bar (柱状图)
- Pie / Doughnut (饼图/环形图)
- Tooltip & Legend 插件
5. 开发与测试
- 测试靶场:
test/index.html(支持热更新调试) - 单元测试:
npm run test(基于 Playwright) - 构建:
npm run build(产出chart.js与chart.min.js)
Description
Languages
JavaScript
56.7%
HTML
43.3%