littlebot
Published on 2025-04-03 / 2 Visits
0

【源码】基于JavaScript的K线图表组件

项目简介

本项目是基于JavaScript的K线图表组件,通过对某网站K线插件进行二次开发与封装,让其更便于使用和修改。它支持多种画线工具、画图算法,能展示深度图数据及最近成交数据。同时具备普通轮询和Websocket Over Stomp两种连接方式,适用于金融、股票、加密货币等领域的K线图展示。

项目的主要特性和功能

  1. 支持暗色和亮色两种主题配色切换。
  2. 支持简体中文、英文、繁体中文三种语言。
  3. 可配置时间聚合方式,支持多种时间周期。
  4. 提供多种画线工具,方便用户进行技术分析。
  5. 支持多种画图算法,满足不同K线图展示需求。
  6. 能展示深度图数据及最近成交数据。
  7. 支持普通轮询和Websocket Over Stomp两种数据连接方式。
  8. 支持动态更新数据和读取历史数据。
  9. 支持键盘事件和手势操作,提升用户体验。
  10. 支持移动端设备,适配不同屏幕尺寸。

安装使用步骤

1. 安装

通过npm安装: bash $ npm install kline

2. 引入方式

使用标签引入

在HTML页面头部加入以下代码: ```html

```

使用RequireJS引入

```javascript require.config({ paths: { "jquery": "../lib/jquery", "jquery.mousewheel": "../lib/jquery.mousewheel", "sockjs": "../lib/sockjs", "stomp": "../lib/stomp", "kline": "../js/kline" }, shim: { "jquery.mousewheel": { deps: ["jquery"] }, "kline": { deps: ["jquery.mousewheel", "sockjs", "stomp"] } } });

require(['kline'], function () { // ... }); ```

使用CommonJS引入

javascript var Kline = require('kline');

使用ES6引入

javascript import Kline from 'kline';

3. 在页面中加入容器

在HTML页面中加入K线图容器: ```html

```

4. 初始化K线图

轮询(poll)方式

javascript var kline = new Kline({ element: "#kline_container", symbol: "BTC", symbolName: "比特币", type: "poll", // poll/stomp url: "./mock.json" }); kline.draw();

Websocket Over Stomp方式

javascript var kline = new Kline({ element: "#kline_container", symbol: "BTC", symbolName: "比特币", type: "stomp", // poll/stomp url: 'http://127.0.0.1:8088/socket', subscribePath: "/kline/subscribe", sendPath: "/kline/send" }); kline.draw();

5. 配置参数

| 参数名称 | 参数说明 | 默认值 | |:------------------|:---------------------------------|:-----------------------| | element | 容器元素选择器 | #kline_container | | width | 宽度 (px) | 1200 | | height | 高度 (px) | 650 | | theme | 主题 dark(暗色)/light(亮色) | dark | | language | 语言 zh-cn(简体中文)/en-us(英文)/zh-tw(繁体中文) | zh-cn | | ranges | 聚合选项 1w/1d/12h/6h/4h/2h/1h/30m/15m/5m/3m/1m/line | ["1w", "1d", "1h", "30m", "15m", "5m", "1m", "line"] | | symbol | 交易代号 | | | symbolName | 交易名称 | | | type | 连接类型 stomp/poll(轮询) | poll | | url | 请求地址 | | | limit | 分页大小 | 1000 | | intervalTime | 请求间隔时间(ms) | 3000 | | subscribePath | 订阅地址 (仅stomp方式需要) | | | sendPath | 发送地址 (仅stomp方式需要) | | | debug | 是否开启调试模式 true/false | true | | showTrade | 是否显示行情侧边栏 true/false | true | | enableSockjs | 是否开启sockjs支持 true/false | true | | reverseColor | 是否反色, 默认绿涨红跌 true/false | false | | stompClient | stomp 连接对象 | null | | rollspeed | 按键滚动的速度(单位:像素) | 30 | | showToolbar | 是否显示工具栏 | true | | showIndic | 是否显示监视器 | true | | isFullScreen | 是否显示为全屏 | true | | rotate | 旋转90度的次数 | 0 | | dealMouseWheelEvent | 是否处理鼠标滚轮事件 | true | | autoIntervalTime | 是否自动从服务器端获取刷新间隔 | false | | defaultMainStyle | 默认的主图样式(取值为0:CandleStick,1:CandleStickHLC,2:OHLC) | 0 |

6. 事件回调

| 事件函数 | 说明 | |:------------------------|:-----------------------------------| | onResize | 画布尺寸改变时触发 | | onLangChange | 语言改变时触发 | | onSymbolChange | 交易品种改变时触发 | | onThemeChange | 主题改变时触发 | | onRangeChange | 聚合时间改变时触发 |

7. 示例代码

javascript var kline = new Kline({ element: "#kline_container", symbol: "BTC", symbolName: "比特币", type: "poll", // poll/stomp url: "./mock.json", onResize: function(width, height) { console.log("chart resized: " + width + " " + height); } });

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】