基于 canvas 实现的高性能、跨平台的股票图表库--clchart - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
seerline

基于 canvas 实现的高性能、跨平台的股票图表库--clchart

  •  1
     
  •   seerline 2018 年 4 月 25 日 1516 次点击
    这是一个创建于 2921 天前的主题,其中的信息可能已经有所发展或是发生改变。

    什么是 ClChart ?

    ClChart是一个基于 canvas 创建的简单、高性能和跨平台的股票数据可视化开源项目。支持 PC、webApp 以及React NativeWeex等平台。在React NativeWeex上完全适配开源项目GCanvas,可轻松使用GCanvas来使得您开发的应用在 android 和 ios 上具有原生绘图的能力。

    为什么需要 ClChart

    在现有的开源库中,不乏有非常不错的开源图表库,通用图表库有chartjs,echart,highchart等,这些图表库具有非常完备的图表类型以及强大的绘图能力及速度,但由于这些项目需要有通用性,在绘制有价证交易图时我们需要进行拓展是比较南。而针对股票等有价证特定的图表库有:techanjshighcharts/highstock等项目,这些图表库对股票绘图已经做了一些非常专业的处理及优化了,但是他们均基于svg来绘图。我们在绘制大量数据图表以及处理跨平台时会存在性能问题,

    因此我们急需一个具有高性能、跨平台、简单易用的股票类型的图标库。

    在现有的图标库 React Native 中可以通过 webview 来加载 html 文件,使用window.document.addEventListener('message', function(e) {})以及window.postMessage来完成 html 与 React Natve 来通讯绘图,但是使用实际的使用过程中,在一些性能较差的 android 设备上,特别是 android 版本小于 4.4 以下的 android 系统在绘图大数据量图表以及用户交互的时候表现的特别的糟糕,经常发生卡顿,并且有可能存在加载缓慢等问题。

    ClChart 设计目标

    采用canvas开发一个具有高效跨平台专业股票图表库

    具有能兼容GCanvas提供的canvas接口,实现在React NativeWeex上达到原生绘图,并且在针对股票市场多种的公式系统能过以插件的形式进行水平扩展,对于有特殊需求的用户,能够提供自定义插件及数据结构的能力。

    ClChart 开发与实现

    构建开发环境

    • [x] 使用 eslint 实现代码规范
    • [x] 使用 webpack 来实现代码打包
    • [x] 编写示例demo
    • [ ] 使用 karma 以及 mocha 编写代码测试(进行中...)

    双层 canvas,主次图层分离,高效绘图

    在研究tradingview的绘图程序时,我们发现其为了达到快速重绘十字光标等辅助线时,使用双层canvas分离十字光标(等辅助线)与主图层的绘制,大大减小快速移动十字光标时带来的多余的绘图计算。使得在低版本android手机设备和 webApp 上也能有流畅的用户体验

    可扩展数据层

    ClChart实现独立的数据层,其能对数据进行预处理,缓存的功能,数据通过字段FIELD定义以及读取,用户可以方便自定义数据字段来快速与现有的数据进行整合使用。

    自定义公式系统

    ClChart支持自定义公式系统,开发者和用户均可在使用过程中可以自定义公式进行绘图。

    插件

    ClChart支持自定绘图插件,现已实现插件有数据标签类型

    ClChart 项目地址、文档及测试用例

    clchart 项目地址:github

    中文文档

    English docs

    HTML5 Demo 可在手机及 PC 分别打开体验

    React Native Demo

    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     994 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 22:51 PVG 06:51 LAX 15:51 JFK 18:51
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86