HTML5图表组件库ichartjs作者王鹤专访
ichartjs是一款基于HTML5的图形图表库,使用纯JavaScript语言, 利用HTML5的canvas标签绘制各式图形,致力于为应用提供简单、直观、可交互的体验级图表组件。ichartjs基于Apache License 2.0协议开源,目前支持饼图、环形图、折线图、面积图、柱形图、条形图。
欢迎大家推荐更多开源项目给我们,支持中国的开源项目发展,如果您和您的团队希望展示创业理念和有趣之处,或者有朋友正在创造这样的价值,请联系我们,发信到blog@csdn.com即可。
为了使大家对ichartjs有进一步的了解,本期我们采访了ichartjs的作者王鹤。
先来个自我介绍吧!
王鹤,英文名taylor,毕业于南昌大学软件工程专业。一直从事JavaEE的企业应用的研发和架构工作,有多年的项目实战经验,目前专注于能源行业的MDM产品设计与实施,一直关注HTML5技术的发展。
我秉承的理念是:“技术这条路上虽然崎岖,但值得坚持”。
ichartjs是什么?
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?
开发ichartjs项目主要有以下几点原因:
ichartjs是在2011年4月份开始的,当时,HTML5不像2012年那么”火”,国内市场上基于HTML5流行的图表库也不像现在这么多,基于HTML5的项目也很少。但是市场已经对HTML5产生了浓厚的兴趣。没有一款产品是适合所有行业的,特别是一些不常见的图表类型或者个性化需求。比如:材料力学性能状况分析(非线性图表)、石化炼油综合分析(油罐图)等。展望未来,在专业领域,这样的需求会越来越多。市场上这些常见的图表在绘制这类图表的显然能力不足。ichartjs也是基于此应运而生的,它适用于这类需求的个性化开发。国内开源软件的氛围与国外存在一定的差距,我辈有义务、有责任贡献个人一点薄弱的力量,传播知识,传递理想。在国内,一般开源框架都首选国外的。如:struts,spring,Ruby on Rails等等。大家认为这些开源框架”安全”。而ichartjs定位是图表组件,这样的”组件”形式更能容易让大家所接受。在技术上更可控一些。
目前,从市场上来说,主要有Canvas、Svg、Flash。PC机上Flash表现强劲,Svg是目前解决跨平台比较好的方案,而真正用纯Canvas绘制图表的框架比较少。主要原因之一是IE6,7,8系列不支持Canvas标签。而ichartjs采用Canvas作为绘制图表的方案的原因是ichartjs致力于为基于HTML5的WEB/Mobile APP提供图表展示方面的解决方案。有关于Canvas、Svg、Flash等技术的对比大家可以在网络上获取,下面我们就几个方面将ichartjs与其他常见的几款图表库进行对比:
*RGraph免费的条件是要在使用的网站上链接RGraph网站
其实对于国内的部分开发者来说,ichartjs有一个不可小觑的优势是:便捷、实时、无障碍的交流。
浏览器兼容性如何?你是如何解决兼容问题的?
ichartjs利用HTML5的Canvas标签进行图表绘制,天生的跨平台属性着实解决了软件产品跨平台的问题。目前上,还有一部分浏览器不支持HTML5 Canvas(Text Api)特性。所以我们建议在移动项目或者HTML5的项目上使用ichartjs。
ichartjs在移动平台上表现如何?
ichartjs可以利用UIWebView与WebView组件在iOS 3+、Android 2.3+平台上运行,从目前大家的使用情况反馈上看,从交互性与渲染速度都可以达到理想状态。
移动平台的使用,大家要针对各个机型进行测试。另外,大家可以通过http://www.ichartjs.com/test/进行渲染速度测试。
未来会加入哪些特性?
ichartjs会在以下两大方面继续努力:
图表交互性。ichartjs会不断完善/改善图表的交互性,让图表不仅仅能看,还要能操作。也许会说话也是有可能的。让图表成为一个传递信息的一个窗口。扩展接口的开放。一个软件的流行,必然需要满足大众的需求,所以我打算提供更多的扩展接口给开发者。让开发者根据自己的需求,打造个性化图表。类似开发jQuery插件的套路。
W3C 在其网站上向我们宣告”HTML5是开放Web平台的基石”。这充分的展示出了HTML5在未来开放平台中的重要地位。
但是从目前情况上看,一方面,HTML5本身的实现程度还有待统一与完善,如碎片化和安全是我们在选择HTML5时需要考虑的因素。另一方面,市场的成熟度与相关人员的经验都有待提高。
虽然目前完全的HTML5应用还不是很理想。但是这一些阻挡不了一个革命性的技术的诞生。目前大家比较接受的方案是Hybrid App。其实无论是移动互联网、桌面应用、甚至TV平台,都可以进行Hybrid模式的开发。哪怕从应用HTML5新标签开始,也是你迈向HTML5的一步。
你认为HTML5会给应用开发带来什么样的变革?
目前大家关注的比较多的是HTML5与Native App之间的较量。而作为一直从事企业应用开发的我来说,则更关注HTML5在企业中发挥的作用和占有的地位。一些龙头企业已经开始着手HTML5企业平台的搭建,但是由于企业应用的特殊性,普及HTML5应用尚需要一段时间。但是HTML5一定会成为未来企业主流。这是因为随着企业对关键业务应用的依赖性,IT技术也随之变得日益复杂,使得实现性能、可用性和用户体验目标成为一项艰巨的挑战。
同时,时代的发展迫使企业越来越快地引入新特性以应对复杂多变的市场竞争。采用HTML5技术可以有效应对这一挑战。会给企业应用带来变革性的影响,从而衍生出更符合用户需求的创新性产品。
引入HTML5技术则将会在以下几个方面给企业应用带来影响:
体验性:随着技术的发展,传统的技术已经不能满足用户的高标准的体验需求,从小小的表单到流行的触摸屏都将成为衡量一个合格产品的标准。功能性:HTML5引入的新特性canvas、定位、本地存储、WebSocket等等都将会催生一系列创新的功能出现。如:可视化分析,定位打卡等等。便捷性:采用HTML5技术构建移动互联网平台将会使工作变得便捷,多客户端无缝的操作给用户带来一致的体验。可视化:HTML5 canvas的出现可以很轻松的实现数据的图形可视化,从而有效地传达与沟通信息。从开始到1.0发布用了多长时间?你是如何坚持的?
我们用列表来展示一下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变得越来越好。
你怎样看待国内的开源环境?
我觉得近几年国内的开源环境正在逐步的改善,虽然与国外还存在巨大差距,但是我们已经开始有这样的氛围了。
首先,国内的知名企业如百度、淘宝等鼓励员工从事参加开源项目,同时也将一些项目开源出来,极大的推动了开源向前的脚步。
其次,各行业的技术达人们,经过这些年的积累,拥有了成熟的软件设计思想与实战经验,软件质量整体提升,一些在公司内部应用的框架或者平台已经达到了一定的高度。
同时,近些年国内开发者的数量呈现出良好的增长态势,大家对国内开源项目也产生了浓厚的兴趣,大家都很积极的参与进来。ichartjs就是在广大开发者的帮助下完成的。
最后,像ITeye这样的权威技术网站为开源项目提供了一个推广平台,可以让更多的人了解开源项目。所以,我相信在大家的不断努力下,会有更多优秀的开源项目出现,会有更多的开发者投入到开源事业中来。
你最希望对其他打算从事开源的开发者说的话是?
我想说的是开源是一种精神,是一种态度,所以有以下几点需要大家认识到:
不是非得是牛人才做开源,只要你在某一领域有所见解,将自己的经验融汇到项目中来,都是值得与大家分享的。一个人的能力是有限的,一定要找到更多志同道合的人一起交流,没有绝对优秀的个人,只有绝对优秀的团队。开源是一个持久战,要坚持对项目进行阶段性的维护,与使用者进行交流,这是对使用者负责,也是对自己负责。利益是每个人都会考虑的事情,但是互联网的精神在于分享,在于参与,只要你参与了,你分享了,你就会有收获,如果你的产品真的能影响未来,那么这将是你一辈子的荣耀。最后,Never never give up!