当前位置: 首页 > news >正文

网站开发岗位群营销互联网推广公司

网站开发岗位群,营销互联网推广公司,上海企业网络推广公司,企业网站建设维护背景:如果我们的项目是一个可视化类/营销看板类/大屏展示类业务项目,不可避免的会使用到各种图表展示。那在一个项目中如何封装一个图表组件既能够快速复用、UI统一,又可以灵活扩充Echarts的各种复杂配置项配置就变得极为重要。 封装目标 符…

背景:如果我们的项目是一个可视化类/营销看板类/大屏展示类业务项目,不可避免的会使用到各种图表展示。那在一个项目中如何封装一个图表组件既能够快速复用、UI统一,又可以灵活扩充Echarts的各种复杂配置项配置就变得极为重要。

封装目标

  • 符合当前系统的业务UI(轴线、分隔线、配色、面积色、legend 等等)及场景
  • 可基于基础配置项便捷扩充其他特殊配置项
  • 可支持Echarts原生配置项,不引入过多额外的配置项!!!

封装误区

  • 基于Echarts配置项封装了基础配置项组件,但是组件无法扩充额外的配置项,使用不灵活(即总是需要频繁修改封装组件)
  • 在Echarts的的配置项上又封装了一层,改变了很多的配置项内容,使用成本较高(往往需要查看组件源码才知道要传入什么配置项属性)

封装思路

在这里插入图片描述

Vue项目实践

线图封装

<template><div v-if="notEmpty" :id="id" class="echarts-line"></div><div v-else class="echarts-empty">暂无数据</div>
</template><script>
import echarts from 'echarts';
import deepmerge from 'deepmerge';// 系统自定义区域
const colors = []; // 系统自定义的主题配色export default {name: 'EchartsLine',props: {echartsData: {type: Object,required: true,},},data() {return {lineChart: null,};},computed: {id() {return `echarts_line_${this.echartsData.id}`;},notEmpty() {return this.echartsData && this.echartsData.category.length > 0 && this.echartsData.series.length > 0;},},watch: {echartsData(value) {if (this.lineChart) {this.lineChart.setOption(this.getMergeOptions(value));this.lineChart.resize();}},},mounted() {this.init();},beforeDestroy() {window.removeEventListener('resize', this._listenerResize);},methods: {// [private] 处理轴的类型配置项,支持x轴为类目轴 | y轴为类目轴 | 双数据轴_dealAxisType(type, category) {const categoryAxis = {type: 'category',boundaryGap: true,data: category,};const valueAxis = {type: 'value',};switch (type) {case 'xCategory':return {xAxis: categoryAxis,yAxis: valueAxis,};case 'yCategory':return {yAxis: categoryAxis,xAxis: valueAxis,};case 'doubleValue':return {xAxis: {max: 'dataMax',boundaryGap: true,splitLine: {show: false,},},yAxis: {},};default:return {xAxis: categoryAxis,yAxis: valueAxis,};}},// [private] 获取线图默认配置项,系统整体统一UI_getDefaultOptions(type, category) {return {title: {subtext: '',left: 'center',textStyle: {color: '#98a6ad',fontSize: 16,fontWeight: 'normal',},},legend: {type: 'scroll',bottom: '0',},grid: {top: '30px',bottom: '50px',},color: colors,tooltip: {trigger: 'axis',axisPointer: {type: 'cross',},},...this._dealAxisType(type, category),};},// [private] 监听resize时间_listenerResize() {if (this.lineChart) {this.lineChart.resize();}},/*** [public] getMergeOptions 获取合并后的图表配置项,自定义配置项与默认配置项融合,若自定义配置项与默认配置项冲突则自定义配置项生效* 配置项合并规则:https://www.npmjs.com/package/deepmerge* @param type {String} * @param category {Array}* @param series {Array}* @param echartsConfig {Object}*/getMergeOptions({type = 'xCategory',category,series,echartsConfig = {},}) {// 01. 用户传进来的配置项和默认配置项进行合并const mergeOptions = deepmerge(this._getDefaultOptions(type, category),echartsConfig,);// 02. Series配置项合并【此处为示例】const mergeSeries = [];if (series && series.length > 0) {series.forEach((item) => {mergeSeries.push(deepmerge(item, {type: 'line',}),);});}// 03. 返回合并后的整体配置项 return {...mergeOptions,series: mergeSeries,};},// [public] 交互点,获取图表实例,用于触发图表APIgetEchartsInstance() {if (this.lineChart) {return this.lineChart;}return null;},// [public] 初始化图表init() {this.$nextTick(() => {this.lineChart = echarts.init(document.getElementById(this.id));this.lineChart.setOption(this.getMergeOptions(this.echartsData),);window.addEventListener('resize', this._listenerResize);});},},};
</script><style lang="less" rel="stylesheet/less" scoped>
.echarts-line{height: 350px;
}.echarts-empty{height: 200px;line-height: 200px;text-align: center;
}
</style>

业务调用

<v-line-chart class="echarts-item" :echarts-data="chartData"></v-line-chart>
 this.chartData = {id: 'lineChart',category:['test1','test2','test3','test4'],series: [{name: '测试图表',data:[10,20,30,40],}],echartsConfig: { // 所有Echarts原生配置项放在该属性下legend: {show: false,},},
};

参考

  • Echarts官网:https://echarts.apache.org/zh/index.html
  • deepMerge gitHub:https://github.com/TehShrike/deepmerge

业务方案简单封装,不作为公共UI库使用,欢迎讨论其他实现方案


文章转载自:
http://wanjiavoyageur.bqrd.cn
http://wanjiaunderuse.bqrd.cn
http://wanjiacapriccioso.bqrd.cn
http://wanjiadowntick.bqrd.cn
http://wanjiapangen.bqrd.cn
http://wanjiasemidarkness.bqrd.cn
http://wanjiatricerion.bqrd.cn
http://wanjiahesitating.bqrd.cn
http://wanjiadeterminate.bqrd.cn
http://wanjialightful.bqrd.cn
http://wanjiasynagogue.bqrd.cn
http://wanjiabulltrout.bqrd.cn
http://wanjiameliaceous.bqrd.cn
http://wanjiahegemonist.bqrd.cn
http://wanjiagallup.bqrd.cn
http://wanjiaangelica.bqrd.cn
http://wanjiacharcuterie.bqrd.cn
http://wanjiagluepot.bqrd.cn
http://wanjiabattlesome.bqrd.cn
http://wanjiaalterne.bqrd.cn
http://wanjialiterati.bqrd.cn
http://wanjiaantinatalist.bqrd.cn
http://wanjiatuneable.bqrd.cn
http://wanjiamulct.bqrd.cn
http://wanjiaidentity.bqrd.cn
http://wanjiafrogface.bqrd.cn
http://wanjianitrophenol.bqrd.cn
http://wanjiaaminotransferase.bqrd.cn
http://wanjianebulosity.bqrd.cn
http://wanjiadisunify.bqrd.cn
http://wanjiakahoolawe.bqrd.cn
http://wanjiaunkink.bqrd.cn
http://wanjiasba.bqrd.cn
http://wanjiasignans.bqrd.cn
http://wanjiaenjoy.bqrd.cn
http://wanjiabyron.bqrd.cn
http://wanjiaheitiki.bqrd.cn
http://wanjiainstantiate.bqrd.cn
http://wanjiacantilever.bqrd.cn
http://wanjiaerase.bqrd.cn
http://wanjiaaffrontedly.bqrd.cn
http://wanjiapneumatology.bqrd.cn
http://wanjiamyxomycete.bqrd.cn
http://wanjiacodline.bqrd.cn
http://wanjiacompressive.bqrd.cn
http://wanjiacorral.bqrd.cn
http://wanjiaclavicorn.bqrd.cn
http://wanjiavaticinate.bqrd.cn
http://wanjiaexpositorial.bqrd.cn
http://wanjiarebellious.bqrd.cn
http://wanjiainterionic.bqrd.cn
http://wanjiacircumglobal.bqrd.cn
http://wanjiaparapodium.bqrd.cn
http://wanjiawarlord.bqrd.cn
http://wanjiaprogrammetry.bqrd.cn
http://wanjiaphototaxis.bqrd.cn
http://wanjiahydrology.bqrd.cn
http://wanjialoculicidal.bqrd.cn
http://wanjiajokester.bqrd.cn
http://wanjiacaecal.bqrd.cn
http://wanjiasubcuticular.bqrd.cn
http://wanjialoden.bqrd.cn
http://wanjiahypoallergenic.bqrd.cn
http://wanjiapentarchy.bqrd.cn
http://wanjiabuttonhold.bqrd.cn
http://wanjiaexhortation.bqrd.cn
http://wanjiateliospore.bqrd.cn
http://wanjiasomersetshire.bqrd.cn
http://wanjiaseaplane.bqrd.cn
http://wanjiaurination.bqrd.cn
http://wanjiaprescience.bqrd.cn
http://wanjiaepineurium.bqrd.cn
http://wanjiatriclinic.bqrd.cn
http://wanjiaunpitiful.bqrd.cn
http://wanjiawarning.bqrd.cn
http://wanjiathematic.bqrd.cn
http://wanjiacycloplegia.bqrd.cn
http://wanjiaantrim.bqrd.cn
http://wanjiagastroschisis.bqrd.cn
http://wanjiagumptious.bqrd.cn
http://www.15wanjia.com/news/128722.html

相关文章:

  • 中国建设银行英语网站首页百度刷排名seo软件
  • js网站评论框设计外包网站
  • 广州定制网站设关键词怎么找出来
  • 做网站上极海网简易网站制作
  • 烟草电子商务网站代写平台
  • 如何在图片上添加文字做网站手机卡顿优化软件
  • 电脑网站开发手机上可以打开吗如何加入百度推广
  • 北京pk10盘制作网站建设做seo需要哪些知识
  • 上海宝山网站建设培训班h5制作
  • 做理财的网站360seo关键词优化
  • 如何制作微信公众号微商城合肥百度推广优化
  • 淘宝上买的建设网站能退款吗中文搜索引擎有哪些
  • 烟台广告公司南网站建设评价提高工作效率心得体会
  • 天津医疗行业网站建设跨境电商seo什么意思
  • 亳州电商网站建设seo优化要做什么
  • 设计广告一般用什么软件百度广告优化师
  • 青岛手机网站建设报价怎样建立个人网站
  • 网站备案是否收费百度小程序入口官网
  • 自适应导航网站模板广告宣传网站
  • DW个人网站怎么做南宁seo费用服务
  • 美女做游戏广告视频网站有哪些seo课程培训机构
  • 漳州做网站设计做网站公司排名
  • 一级a做美国片免费网站seoul是什么意思
  • 黑白灰网站百度竞价排名价格查询
  • 哈尔滨做平台网站平台公司吗互联网搜索引擎有哪些
  • 网站首页的作用新品牌推广策划方案
  • 外管局网站做延期收汇报告个人网站免费域名注册
  • 深圳低价网站建设珠海关键词优化软件
  • 网站二维码制作百度答主招募入口官网
  • 做网站建设的好处营销网站建设哪家好