阅读更多
ichartjs是一款基于HTML5的图形图表库,使用纯JavaScript语言, 利用HTML5的canvas标签绘制各式图形,致力于为应用提供简单、直观、可交互的体验级图表组件。ichartjs基于Apache License 2.0协议开源,目前支持饼图、环形图、折线图、面积图、柱形图、条形图。



为了使大家对ichartjs有进一步的了解,本期我们采访了ichartjs的作者王鹤

ITeye期待并致力于为国内优秀的开源项目提供一个免费的推广平台,如果你和你的团队希望将自己的开源项目介绍给更多的开发者,或者你希望我们对哪些开源项目进行专访,请告诉我们,发站内短信给ITeye管理员或者发邮件到webmaster@iteye.com即可。

先来个自我介绍吧! Top

王鹤,英文名taylor,毕业于南昌大学软件工程专业。一直从事JavaEE的企业应用的研发和架构工作,有多年的项目实战经验,目前专注于能源行业的MDM产品设计与实施,一直关注HTML5技术的发展。

我秉承的理念是:“技术这条路上虽然崎岖,但值得坚持”。

ichartjs是什么? Top

ichartjs 是一款基于HTML5的开源图表库。使用纯javascript语言, 利用HTML5的Canvas标签绘制各式图表。 目前ichartjs支持的图表类型有饼图、圆环图、柱形图、条形图、堆积图、折线图、面积图以及组合图。ichartjs致力于为您的应用提供简单、直观、可交互的体验级图表组件。是基于HTML5 WEB/Mobile APP图表展示方面的解决方案。目前官方的最新版本为ichartjs 1.1

项目主页:http://www.ichartjs.com
图表示例:http://www.ichartjs.com/samples/
新浪微博:http://weibo.com/ichartjs/
Google code:http://code.google.com/p/ichartjs/
Github:https://github.com/wanghetommy/ichartjs

目前HTML5图表库有很多,为什么还要开发ichartjs? Top

开发ichartjs项目主要有以下几点原因:

  • ichartjs是在2011年4月份开始的,当时,HTML5不像2012年那么”火”,国内市场上基于HTML5流行的图表库也不像现在这么多,基于HTML5的项目也很少。但是市场已经对HTML5产生了浓厚的兴趣。
  • 没有一款产品是适合所有行业的,特别是一些不常见的图表类型或者个性化需求。比如:材料力学性能状况分析(非线性图表)、石化炼油综合分析(油罐图)等。展望未来,在专业领域,这样的需求会越来越多。市场上这些常见的图表在绘制这类图表的显然能力不足。ichartjs也是基于此应运而生的,它适用于这类需求的个性化开发。
  • 国内开源软件的氛围与国外存在一定的差距,我辈有义务、有责任贡献个人一点薄弱的力量,传播知识,传递理想。在国内,一般开源框架都首选国外的。如:struts,spring,Ruby on Rails等等。大家认为这些开源框架”安全”。而ichartjs定位是图表组件,这样的”组件”形式更能容易让大家所接受。在技术上更可控一些。

与其他图表库相比,ichartjs的优势是什么? Top

目前,从市场上来说,主要有Canvas、Svg、Flash。PC机上Flash表现强劲,Svg是目前解决跨平台比较好的方案,而真正用纯Canvas绘制图表的框架比较少。主要原因之一是IE6,7,8系列不支持Canvas标签。而ichartjs采用Canvas作为绘制图表的方案的原因是ichartjs致力于为基于HTML5的WEB/Mobile APP提供图表展示方面的解决方案。有关于Canvas、Svg、Flash等技术的对比大家可以在网络上获取,下面我们就几个方面将ichartjs与其他常见的几款图表库进行对比:

  实现方式商业收费3D效果依赖性导出图片图表种类
AwesomeChartJSCanvas免费独立
RGraphCanvas收费*独立丰富
HighchartsSvg收费jQuery不能丰富
Fusion ChartFlash/Svg收费Flash/jQuery丰富
FlotCanvas免费jQuery不能丰富
ichartjsCanvas免费独立丰富
*RGraph免费的条件是要在使用的网站上链接RGraph网站

其实对于国内的部分开发者来说,ichartjs有一个不可小觑的优势是:便捷、实时、无障碍的交流。

浏览器兼容性如何?你是如何解决兼容问题的? Top

ichartjs利用HTML5的Canvas标签进行图表绘制,天生的跨平台属性着实解决了软件产品跨平台的问题。目前上,还有一部分浏览器不支持HTML5 Canvas(Text Api)特性。所以我们建议在移动项目或者HTML5的项目上使用ichartjs。

ichartjs在移动平台上表现如何? Top

ichartjs可以利用UIWebView与WebView组件在iOS 3+、Android 2.3+平台上运行,从目前大家的使用情况反馈上看,从交互性与渲染速度都可以达到理想状态。

移动平台的使用,大家要针对各个机型进行测试。另外,大家可以通过http://www.ichartjs.com/test/进行渲染速度测试。

未来会加入哪些特性? Top

ichartjs会在以下两大方面继续努力:

  • 图表交互性。ichartjs会不断完善/改善图表的交互性,让图表不仅仅能看,还要能操作。也许会说话也是有可能的。让图表成为一个传递信息的一个窗口。
  • 扩展接口的开放。一个软件的流行,必然需要满足大众的需求,所以我打算提供更多的扩展接口给开发者。让开发者根据自己的需求,打造个性化图表。类似开发jQuery插件的套路。

你怎么看待HTML5的发展? Top

W3C 在其网站上向我们宣告”HTML5是开放Web平台的基石”。这充分的展示出了HTML5在未来开放平台中的重要地位。

但是从目前情况上看,一方面,HTML5本身的实现程度还有待统一与完善,如碎片化和安全是我们在选择HTML5时需要考虑的因素。另一方面,市场的成熟度与相关人员的经验都有待提高。

虽然目前完全的HTML5应用还不是很理想。但是这一些阻挡不了一个革命性的技术的诞生。目前大家比较接受的方案是Hybrid App。其实无论是移动互联网、桌面应用、甚至TV平台,都可以进行Hybrid模式的开发。哪怕从应用HTML5新标签开始,也是你迈向HTML5的一步。

你认为HTML5会给应用开发带来什么样的变革? Top

目前大家关注的比较多的是HTML5与Native App之间的较量。而作为一直从事企业应用开发的我来说,则更关注HTML5在企业中发挥的作用和占有的地位。一些龙头企业已经开始着手HTML5企业平台的搭建,但是由于企业应用的特殊性,普及HTML5应用尚需要一段时间。但是HTML5一定会成为未来企业主流。这是因为随着企业对关键业务应用的依赖性,IT技术也随之变得日益复杂,使得实现性能、可用性和用户体验目标成为一项艰巨的挑战。

同时,时代的发展迫使企业越来越快地引入新特性以应对复杂多变的市场竞争。采用HTML5技术可以有效应对这一挑战。会给企业应用带来变革性的影响,从而衍生出更符合用户需求的创新性产品。

引入HTML5技术则将会在以下几个方面给企业应用带来影响:

  • 体验性:随着技术的发展,传统的技术已经不能满足用户的高标准的体验需求,从小小的表单到流行的触摸屏都将成为衡量一个合格产品的标准。
  • 功能性:HTML5引入的新特性canvas、定位、本地存储、WebSocket等等都将会催生一系列创新的功能出现。如:可视化分析,定位打卡等等。
  • 便捷性:采用HTML5技术构建移动互联网平台将会使工作变得便捷,多客户端无缝的操作给用户带来一致的体验。
  • 可视化:HTML5 canvas的出现可以很轻松的实现数据的图形可视化,从而有效地传达与沟通信息。

从开始到1.0发布用了多长时间?你是如何坚持的? Top

我们用列表来展示一下ichartjs从立项到现在的时间轨迹:

  • 2011年04月:ichartjs立项
  • 2012年07月11日:ichartjs发布1.0Alpha版
  • 2012年08月15日:ichartjs发布1.0Beta版
  • 2012年12月15日:ichartjs发布1.0版
通过以上的时间点,可以看出,从开始到1.0正式版的发布持续了1年半的时间。在这期间里,工作清闲的时候,每天利用业余时间进行编码和设计工作。工作忙的时候,也坚持每周都关注一下。同时以学习为目的,靠个人的兴趣,将ichartjs坚持下来的。另一个很重要的因素是,整个过程得到了广大程序员的支持与鼓励,是他们积极的反馈使ichartjs变得越来越好。

你怎样看待国内的开源环境? Top

我觉得近几年国内的开源环境正在逐步的改善,虽然与国外还存在巨大差距,但是我们已经开始有这样的氛围了。

首先,国内的知名企业如百度、淘宝等鼓励员工从事参加开源项目,同时也将一些项目开源出来,极大的推动了开源向前的脚步。

其次,各行业的技术达人们,经过这些年的积累,拥有了成熟的软件设计思想与实战经验,软件质量整体提升,一些在公司内部应用的框架或者平台已经达到了一定的高度。

同时,近些年国内开发者的数量呈现出良好的增长态势,大家对国内开源项目也产生了浓厚的兴趣,大家都很积极的参与进来。ichartjs就是在广大开发者的帮助下完成的。

最后,像ITeye这样的权威技术网站为开源项目提供了一个推广平台,可以让更多的人了解开源项目。所以,我相信在大家的不断努力下,会有更多优秀的开源项目出现,会有更多的开发者投入到开源事业中来。

你最希望对其他打算从事开源的开发者说的话是? Top

我想说的是开源是一种精神,是一种态度,所以有以下几点需要大家认识到:

  • 不是非得是牛人才做开源,只要你在某一领域有所见解,将自己的经验融汇到项目中来,都是值得与大家分享的。
  • 一个人的能力是有限的,一定要找到更多志同道合的人一起交流,没有绝对优秀的个人,只有绝对优秀的团队。
  • 开源是一个持久战,要坚持对项目进行阶段性的维护,与使用者进行交流,这是对使用者负责,也是对自己负责。
  • 利益是每个人都会考虑的事情,但是互联网的精神在于分享,在于参与,只要你参与了,你分享了,你就会有收获,如果你的产品真的能影响未来,那么这将是你一辈子的荣耀。
  • 最后,Never never give up!
  • 大小: 111.3 KB
  • 大小: 105.9 KB


评论 共 77 条
77 楼 一个橘子 2016-10-31 16:28
HTML5确实很不错,我们在用的魔方网表就集成了HTML5模块
76 楼 jing474 2013-09-22 15:33
不错,支持
75 楼 bevis.cn 2013-08-09 12:17
国产的必须支持
74 楼 runfriends 2013-07-31 12:13
WIN8的chrome兼容性问题解决了吗?
73 楼 wanghetommy 2013-07-31 08:51
qinghechaoge 写道
您好,我这有两个问题。
1.图表与图例的交互没有,我试着去自己实现,又感觉较复杂,希望能提供解决方法。
比如饼图,点击图例的某一项,饼图对应块bound()
2.个人感觉用户交互方面做的不够好

图表与图例的交互问题已经修复。
72 楼 qinghechaoge 2013-07-26 12:51
您好,我这有两个问题。
1.图表与图例的交互没有,我试着去自己实现,又感觉较复杂,希望能提供解决方法。
比如饼图,点击图例的某一项,饼图对应块bound()
2.个人感觉用户交互方面做的不够好
71 楼 wanghetommy 2013-06-25 18:30
fykyx521 写道
wanghetommy 写道
lpy3654321 写道
wanghetommy 写道
lpy3654321 写道
用FIREFOX看了一下,可能是初步的一个产品吧.有点丑.动画不是很流畅.不够圆融
有几个好像是模仿Highcharts

ichartjs样式可以很灵活的配置,所以模仿Highcharts的样式做了几个示例。目前没有专注动画方面,所以动画效果比较单一。完善好产品的基本特性之后,我们会在动画方面做出改进。感谢对ichartjs的关注。

在一些项目里,甲会要求做一些效果

目前ichartjs还处于发展阶段,我们会不断的完善,为成为一流图表组件而努力奋斗。

可以把动画接口

动画接口已经预留了,只是目前忙于优化图表本身,忙完这段时间后,写一个关于自定义动画的文档,用于实现个性化动画效果
70 楼 fykyx521 2013-06-25 18:04
wanghetommy 写道
lpy3654321 写道
wanghetommy 写道
lpy3654321 写道
用FIREFOX看了一下,可能是初步的一个产品吧.有点丑.动画不是很流畅.不够圆融
有几个好像是模仿Highcharts

ichartjs样式可以很灵活的配置,所以模仿Highcharts的样式做了几个示例。目前没有专注动画方面,所以动画效果比较单一。完善好产品的基本特性之后,我们会在动画方面做出改进。感谢对ichartjs的关注。

在一些项目里,甲会要求做一些效果

目前ichartjs还处于发展阶段,我们会不断的完善,为成为一流图表组件而努力奋斗。

可以把动画接口
69 楼 wanghetommy 2013-06-24 19:58
lpy3654321 写道
wanghetommy 写道
lpy3654321 写道
用FIREFOX看了一下,可能是初步的一个产品吧.有点丑.动画不是很流畅.不够圆融
有几个好像是模仿Highcharts

ichartjs样式可以很灵活的配置,所以模仿Highcharts的样式做了几个示例。目前没有专注动画方面,所以动画效果比较单一。完善好产品的基本特性之后,我们会在动画方面做出改进。感谢对ichartjs的关注。

在一些项目里,甲会要求做一些效果

目前ichartjs还处于发展阶段,我们会不断的完善,为成为一流图表组件而努力奋斗。
68 楼 lpy3654321 2013-06-17 11:22
wanghetommy 写道
lpy3654321 写道
用FIREFOX看了一下,可能是初步的一个产品吧.有点丑.动画不是很流畅.不够圆融
有几个好像是模仿Highcharts

ichartjs样式可以很灵活的配置,所以模仿Highcharts的样式做了几个示例。目前没有专注动画方面,所以动画效果比较单一。完善好产品的基本特性之后,我们会在动画方面做出改进。感谢对ichartjs的关注。

在一些项目里,甲会要求做一些效果
67 楼 wanghetommy 2013-06-08 14:53
yixiandave 写道
支持国产,功能上感觉比highcharts差了不少(点击图例事件去除部分数据显示等),动画效果不够平滑。不过无依赖3D已经完爆很多产品了,加油

有你们的支持,我们会一如既往的向前冲的
66 楼 wanghetommy 2013-06-08 14:53
lpy3654321 写道
用FIREFOX看了一下,可能是初步的一个产品吧.有点丑.动画不是很流畅.不够圆融
有几个好像是模仿Highcharts

ichartjs样式可以很灵活的配置,所以模仿Highcharts的样式做了几个示例。目前没有专注动画方面,所以动画效果比较单一。完善好产品的基本特性之后,我们会在动画方面做出改进。感谢对ichartjs的关注。
65 楼 wanghetommy 2013-06-08 14:51
白糖_ 写道
粗略看了下实例,觉得功能丰富相当不错

我是公司负责报表图表开发的,目前用的是国外某图表产品,支持FLash/HTML5,默认Flash在IE浏览器下总会有一些问题,而HTML5对于低版本浏览器的不支持也让人很失望,希望中国浏览器发展脚步能快一些,让我们尽快感受到HTML5的气息。

最后我有几点功能的建议:
①考虑是否可以支持滚动条:X轴数据过多的时候显示肯定会变形的,所以考虑加入滚动条功能,能够解决大数据显示的问题
②饼状图点击了一个区域会突出显示,在点击另一块区域的时候建议将原来突出的块收回去,这个问题其实应该追溯到钻取事件:如果你点击了某一块进行钻取,那么你再点击另一块钻取的时候用户看到两块都是突出的,用户怎么知道哪一块是正在钻取的数据呢?

PS:我怎么感觉JIRA的图表跟这个很相似呢 如果有时间,我会持续关注这款产品。

感谢对我们的关注和提出的意见。
①对于滚动条、后期版本中,我们计划增加缩放和移动的api。尚处于计划阶段。
②在配置里增加 mutex:true 表示是否仅有一块扇形区处于弹出状态。可以满足原来突出的块收回去。
64 楼 wanghetommy 2013-06-08 14:47
qzxfl008 写道
你好,折线图里能不能每段的颜色不一样的啊,大概思路是怎么样的啊,谢谢

目前版本不支持每段线段的颜色分别设置
63 楼 yixiandave 2013-06-06 16:52
支持国产,功能上感觉比highcharts差了不少(点击图例事件去除部分数据显示等),动画效果不够平滑。不过无依赖3D已经完爆很多产品了,加油
62 楼 lpy3654321 2013-06-03 21:21
用FIREFOX看了一下,可能是初步的一个产品吧.有点丑.动画不是很流畅.不够圆融
有几个好像是模仿Highcharts
61 楼 白糖_ 2013-06-03 16:42
噢,还有支持考虑支持双轴甚至多轴,这个应用场景挺广的
另外点状图(气泡图)、雷达图可以试试,这个估计也有用户用
60 楼 白糖_ 2013-06-03 16:35
粗略看了下实例,觉得功能丰富相当不错

我是公司负责报表图表开发的,目前用的是国外某图表产品,支持FLash/HTML5,默认Flash在IE浏览器下总会有一些问题,而HTML5对于低版本浏览器的不支持也让人很失望,希望中国浏览器发展脚步能快一些,让我们尽快感受到HTML5的气息。

最后我有几点功能的建议:
①考虑是否可以支持滚动条:X轴数据过多的时候显示肯定会变形的,所以考虑加入滚动条功能,能够解决大数据显示的问题
②饼状图点击了一个区域会突出显示,在点击另一块区域的时候建议将原来突出的块收回去,这个问题其实应该追溯到钻取事件:如果你点击了某一块进行钻取,那么你再点击另一块钻取的时候用户看到两块都是突出的,用户怎么知道哪一块是正在钻取的数据呢?

PS:我怎么感觉JIRA的图表跟这个很相似呢 如果有时间,我会持续关注这款产品。
59 楼 qzxfl008 2013-06-01 20:56
你好,折线图里能不能每段的颜色不一样的啊,大概思路是怎么样的啊,谢谢
58 楼 h5gallery 2013-05-08 11:38
gxyxd 写道
可惜不支持IE6、IE7、IE8,目前太多客户的版本都是这些,好东西项目中不敢用啊,
只好用highcharts

不过移动项目上还是可以放心使用的
57 楼 gxyxd 2013-05-08 09:18
可惜不支持IE6、IE7、IE8,目前太多客户的版本都是这些,好东西项目中不敢用啊,
只好用highcharts
56 楼 wanghetommy 2013-05-06 21:15
xingyq521 写道
写的不错,坚决的支持一下!

多谢关注与支持
55 楼 xingyq521 2013-05-06 13:32
写的不错,坚决的支持一下!
54 楼 hudepin 2013-04-25 09:32
怎么有点像那个唱歌的
53 楼 zhezhouboa 2013-04-17 23:06
支持你~~~~
52 楼 wanghetommy 2013-03-22 20:59
awenhaowenchao 写道
非常棒!加油!

多谢阿超帅哥的大力支持!
51 楼 awenhaowenchao 2013-03-21 14:34
非常棒!加油!
50 楼 wanghetommy 2013-03-21 10:04
wanghetommy 写道
hongye1120 写道
问下,纵坐标和横坐标的刻度要是中文的怎么显示?能调整显示不?比如斜着显示。

中文可以直接显示,注意页面编码问题,文字斜着可以实现,请参考:
http://www.ichartjs.com/samples/index.html?page=column2d_05.html&pageno=2
感谢关注ichartjs

加上链接:
http://www.ichartjs.com/samples/index.html?page=column2d_05.html&pageno=2
49 楼 wanghetommy 2013-03-21 10:03
hongye1120 写道
问下,纵坐标和横坐标的刻度要是中文的怎么显示?能调整显示不?比如斜着显示。

中文可以直接显示,注意页面编码问题,文字斜着可以实现,请参考:
http://www.ichartjs.com/samples/index.html?page=column2d_05.html&pageno=2
感谢关注ichartjs
48 楼 hongye1120 2013-03-21 09:15
问下,纵坐标和横坐标的刻度要是中文的怎么显示?能调整显示不?比如斜着显示。

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • EventBus简单介绍

    EventBus简单介绍

  • EventBus详解 (详解 + 原理)

    EventBus简介EventBus是一个开源库,由GreenRobot开发而来,是用于Android开发的 “事件发布—订阅总线”,用来进行模块间通信、解藕。它可以使用很少的代码,来实现多组件之间的通信。Android系统中的事件通信则是 handler (消息机制) 和 BroadCastReceiver (广播机制),通过它们可以实现组件之间的事件通讯。缺点在于,代码量多、组件之易产生藕合引用。EventBus产生的背景。

  • EventBus(事件总线)的使用和源码的简单解析

    事件总线(EventBus)是一种广泛用于软件架构中的设计模式,用于实现解耦和松散耦合的通信机制。它可以帮助组织和管理应用程序中不同组件之间的通信,以提高应用程序的可维护性、可扩展性和灵活性。 在事件总线模式中,不同的组件通过订阅和发布事件来进行通信。发布者发布一个事件,订阅者可以订阅该事件并在事件发生时执行相关的操作。事件总线充当了中介者的角色,它负责管理所有的事件和订阅者,并确保事件正确地传递到所有订阅者。 事件总线模式可以在很多场景中使用,例如 Android 应用程序中的通信、分布式系统中的消息

  • Vue事件总线(EventBus)使用指南:详细解析与实战应用

    vue组件非常常见的有父子组件通信,兄弟组件通信。而父子组件通信就很简单,父组件会通过 props 向下传数据给子组件,当子组件有事情要告诉父组件时会通过 $emit 事件告诉父组件。今天就来说说如果两个页面没有任何引入和被引入关系,该如何通信了?如果咱们的应用程序不需要类似Vuex这样的库来处理组件之间的数据通信,就可以考虑Vue中的 事件总线 ,即EventBus来通信。EventBus 又称为事件总线。

  • EventBus的理解及应用

    面试:你懂什么是分布式系统吗?Redis分布式锁都不会?>>> 1 简介 EventBus是一种用于Android的事件发布-订阅总线,由GreenRobot开发,Gihub地址是:EventBus。它简化了应用程序内各个组件之间进行通信的复杂度,尤其是碎片之间进行通信的问题,可以避免由于使用广播通信而带来的诸多不便。 1.1 三个角色 Event:事件,它可...

  • EventBus原理深度解析(Guava)

    一、问题描述 在工作中,经常会遇见使用异步的方式来发送事件,或者触发另外一个动作:经常用到的框架是MQ(分布式方式通知)。如果是同一个jvm里面通知的话,就可以使用EventBus。由于EventBus使用起来简单、便捷,因此,工作中会经常用到。深入理解该框架的原理就很有必要。 二、框架解析 2.1、组织结构 eventbus的组织结构如下: eventbus主要有以下几部分组成: 1、eventbus、asyncEventBus:事件发送器。 2、event:事件承载单元。 3、.

  • 事件总线 EventBus

    EventBus 顾名思义,事件总线,是一个轻量级的发布 - 订阅模式的应用模式。相比于 MQ 更加简洁,轻量,它可以在一个小系统模块内部使用EventBus允许组件之间通过发布 - 订阅进行通信,而不需要组件之间显示的注册。它专门设计为了代替使用显示注册的传统的 Java 进程内事件分发。它不是通用的发布-订阅系统,也不是用于进程间通信的。

  • vue-router 路由 pushstate replacestate popstate 详解

    如果被激活的历史记录条目是通过对history.pushState()的调用创建的,或者受到对history.replaceState()的调用的影响,popstate事件的state属性包含历史条目的状态对象的副本。使用虚拟路由的时候,angular 13的drawer 组件监听 popstate 的变化,会清空drawer内容,造成的问题。将当前URL和history.state加入到history中,并用新的state和URL替换当前。state:与要跳转到的URL对应的状态信息。

  • EventBus使用详解,Android开发知识点

    简历首选内推方式,速度快,效率高啊!然后可以在拉钩,boss,脉脉,大街上看看。简历上写道熟悉什么技术就一定要去熟悉它,不然被问到不会很尴尬!做过什么项目,即使项目体量不大,但也一定要熟悉实现原理!不是你负责的部分,也可以看看同事是怎么实现的,换你来做你会怎么做?做过什么,会什么是广度问题,取决于项目内容。但做过什么,达到怎样一个境界,这是深度问题,和个人学习能力和解决问题的态度有关了。大公司看深度,小公司看广度。大公司面试你会的,小公司面试他们用到的你会不会,也就是岗位匹配度。

  • EventBus执行原理详解

    EventBus发送事件原理是,subscriptionsByEventType通过事件类型EventType.class获取到订阅方法包装类List集合。然后通过postToSubscription方法,在方法中匹配发送事件的线程模式threadMode,例如匹配到主线程时,会直接通过反射调用订阅方法subscription.subscriberMethod.method.invoke(subscription.subscriber, event)实现事件的发布-订阅执行。......

  • EventBus的使用以及注意事项

    Android系统中的事件通信是 handler (消息机制) 和 BroadCastReceiver (广播机制), 通过它们可以实现组件之间的事件通讯。缺点在于,代码量多、组件之易产生藕合引用。这时候EventBus就展示出了他的优点EventBus 是一种在软件开发中使用的发布/订阅(Pub/Sub)事件通信机制假设你是一个读者,你对多个报纸感兴趣,但你并不想每天亲自去买每一份报纸。这时,你可以选择订阅报纸的服务。

  • EventBus的特性及简单的使用介绍

    EventBus是一个用于Android和Java的开源库,使用发布者/订阅者模式(publisher/subscriber pattern)实现松散(loose)耦合(coupling)。EventBus使中央通信仅用几行代码就能解耦类(decouple classes)——简化代码(simplifying the code)、消除依赖(removing dependencies)和加速应用程序...

  • EventBus使用详解

    EventBus是一个基于发布者/订阅者模式的事件总线框架。 发布者/订阅者模式,也就是观察者模式(定义了对象之间的一种一对多的依赖关系,当一个对象状态发生改变时,它的所有依赖者都会收到通知并自动更新)。在EventBus中,当发布者发布事件时,所有订阅该事件的事件处理方法将被调用。 EventBus的优点: 解耦和简化Activities, Fragments等组件以及后台线程之间的通信,分...

  • java中的EventBus事件总线技术

    EventBus既是事件的接收站(收集发布的事件),也是转发器(将事件传递给订阅者),实质上起到了事件总线的作用。事件总线扮演着中介的角色,负责在事件发生时,根据事件类型将事件分发给所有对此事件感兴趣的(即已经注册的)订阅者。采用发布订阅的模式(有时描述为注册监听的模式),通过 【注册器】将【订阅者】注册到【总线】中,维护【事件】和【订阅者】的订阅关系;再通过【事件发送器】发布具体【事件载体】,第一步使用【事件分发器】调用【订阅者】来执行具体的订阅者消费逻辑。

  • EventBus 的使用

    EventBus 的使用一、前言二、关于EventBus的概述1、三个角色2.四种线程模型三、EventBus的使用1、导入依赖2、自定义事件封装类3、注册事件4、发布事件5、处理事件四、 普通事件与粘性事件 一、前言 在进行Android开发时,当涉及大量组件之间的通信,使用Intent、Handler、Broadcast进行模块间通信、模块与后台线程进行通信时,代码量大,而且高度耦合。EventBus简化了应用程序内各个组件之间进行通信的复杂度,尤其是碎片之间进行通信的问题,可以避免由于使用广播通信而带

  • vue 事件总线EventBus的概念、使用以及注意点(2)

    前端CSS面试题文档,JavaScript面试题文档,Vue面试题文档,大厂面试题文档,需要的读者可以戳这里获取!前端CSS面试题文档,JavaScript面试题文档,Vue面试题文档,大厂面试题文档,需要的读者可以戳这里获取![外链图片转存中…(img-3JABS7SH-1712962597339)][外链图片转存中…(img-SteQWdud-1712962597340)]

  • JS之replaceState与pushState的妙用

    场景 text前几天做web站的账单重构,原有的支付路径为www.xxx.com/a/b/c,进入我的账单之后,即www.xxx.com/a后台经过auth2.0认证后,会重定向到www.xxx.com/yy/a/,并且这个yy是一个变量值,微信支付只能设置5个支付路径,如果这样走到支付页面去支付的时候,会出现支付页面路径为注册,所以错误。 解决办法 非本场景解决办法:修改支付路径 ...

  • 【转】EventBus 3.0使用详解

    原文:https://www.jianshu.com/p/f9ae5691e1bb 01 前言 当我们进行项目开发的时候,往往是需要应用程序的各组件、组件与后台线程间进行通信,比如在子线程中进行请求数据,当数据请求完毕后通过Handler或者是广播通知UI,而两个Fragment之家可以通过Listener进行通信等等。当我们的项目越来越复杂,使用Intent、Handler、Broadca...

  • EventBus使用方法

    EventBus是一个Android端优化的发布/订阅事件总线,以观察者模式实现,简化了应用程序内各组件间、组件与后台线程间的通信 可以轻易切换线程、开辟线程。主要功能是替代Intent, Handler和BroadCastReceiver在Fragment, Activity, Service和线程之间传递消息。优点是开销小,代码更优雅,将发送者和接收者解耦。...

Global site tag (gtag.js) - Google Analytics