Echart组件封装



var M = {
    //入参
    //elementId 为想要放入图表的div id
    //echartId 图表的id用于召回
    //width 宽 height为高 option为图表具体数据 数据形式参考http://echarts.baidu.com/examples.html
    createEchartsInElement: function (elementId, echartId, width, height, option) {

        var targetDiv = $("#" + elementId)[0];
        var div = document.createElement("div");
        div.setAttribute('id', echartId);
        div.setAttribute('style', 'width: ' + width + 'px; height: ' + height + 'px;');
        targetDiv.appendChild(div);

        var echarts = require("./echarts.js");//同层目录下echarts

        var chartDiv = $('#' + echartId)[0];
        var myChart = echarts.init(chartDiv);
        myChart.setOption(option);
    }
};

module.exports = M;

echart.js 也可以在官网上下载全部单文件,需要修改前几行如下

(function (root, factory) {
    /*if (typeof define === 'function' && define.amd) {
     // AMD. Register as an anonymous module.
     define([], factory);
     } else*/
    if (typeof module === 'object' && module.exports) {
        // Node. Does not work with strict CommonJS, but
        // only CommonJS-like environments that support module.exports,
        // like Node.
        module.exports = factory();
    } else {
        // Browser globals (root is window)
        root.echarts = factory();
    }
}

使用方式

var echart = require("./common_echarts.js");
echart.createEchartsInElement('pagebar','chart',600,400,option);



ECharts 的实际应用中,数据封装是开发过程中非常关键的一环。良好的数据封装不仅可以提升代码的可维护性,还能增强组件的复用性和扩展性。以下是一些常见的 ECharts 数据封装方法: ### 数据结构的标准化 ECharts 的数据通常以对象形式传入 `option` 中,而 `option` 是一个结构化的对象,包含 `xAxis`、`yAxis`、`series` 等字段。为了确保数据的一致性,需要对后端返回的数据进行处理,将其转换为符合 ECharts 需求的格式。 例如,假设后端返回的数据是如下格式: ```json [ {"name": "Mon", "value": 120}, {"name": "Tue", "value": 200}, ... ] ``` 可以将其转换为 ECharts 所需的数据结构: ```javascript const seriesData = backendData.map(item => item.value); const xAxisData = backendData.map(item => item.name); ``` ### 配置项的统一管理 ECharts 的 `option` 对象通常包含大量的配置项,例如颜色、字体、图例等。为了提升代码的可读性和维护性,可以将这些配置项统一管理,通过封装一个配置生成函数来动态生成 `option`。 例如: ```javascript function generateChartOptions(xAxisData, seriesData) { return { xAxis: { type: 'category', data: xAxisData }, yAxis: { type: 'value' }, series: [{ type: 'line', data: seriesData }] }; } ``` ### 数据分组与聚合 在某些情况下,后端返回的数据可能需要进一步处理,例如按字段分组并计算聚合值。这种情况下,可以使用类似 Java Stream 的方式对数据进行处理,并生成 ECharts 所需的格式。 例如,在 Java 中: ```java Map<String, double[]> groupedData = items.stream() .collect(Collectors.groupingBy(Item::getA, Collectors.reducing(new double[2], item -> new double[]{item.getB(), item.getC()}, (a, b) -> new double[]{a[0] + b[0], a[1] + b[1]}))); String[] xAxisData = groupedData.keySet().toArray(new String[0]); double[] seriesBData = groupedData.values().stream().mapToDouble(v -> v[0]).toArray(); double[] seriesCData = groupedData.values().stream().mapToDouble(v -> v[1]).toArray(); ``` ### 前端组件封装 在前端框架(如 Vue 或 React)中,可以将 ECharts 的初始化、数据更新、销毁等操作封装成一个可复用的组件。这样可以减少重复代码,并提升开发效率。 例如,在 Vue 中封装 ECharts 组件: ```vue <template> <div ref="chart" style="width: 100%; height: 400px;"></div> </template> <script> import * as echarts from 'echarts'; export default { props: ['options'], mounted() { this.chart = echarts.init(this.$refs.chart); this.chart.setOption(this.options); }, beforeDestroy() { if (this.chart) { this.chart.dispose(); } } }; </script> ``` ### 动态数据更新 ECharts 支持动态数据更新,可以通过监听数据变化并重新设置 `option` 来实现图表的实时更新。这种方式特别适用于需要实时展示数据的场景。 例如: ```javascript watch: { chartData: { handler(newData) { this.chart.setOption({ series: [{ data: newData }] }); }, deep: true } } ``` ### 总结 ECharts 数据封装的核心在于标准化数据结构、统一管理配置项、处理数据分组与聚合、封装前端组件以及实现动态数据更新。通过这些方法,可以显著提升开发效率和代码质量,同时确保图表的灵活性和可扩展性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值