很多人一提到「股票行情数据」,第一反应都是:Python、AkShare、起个后端服务。
但在实际开发里,我经常遇到一个更具体的问题:
我只是想做一个行情看板 / 教学 Demo / 可视化页面,
却不得不额外维护一个后端(甚至只是为了做一次接口转发)。
这件事从工程角度看并不划算,于是我做了一个更“前端/Node 友好”的工具:stock-sdk。
背景:前端在做行情相关功能时常见的几个坑
如果你做过行情看板、可视化或 Demo,大概率遇到过:
- 现成方案多在 Python 生态,前端无法直接用
- 直接请求第三方接口会碰到:编码(GBK)、批量、并发、解析格式
- 想在浏览器侧做一个可跑的 Demo,却不想为了它再搭一套后端
- 接口不稳定时,缺少统一的重试/限流/错误处理方式
我希望把这些“工程脏活”封装掉,让使用者只关心:拿到结构化数据,直接画图/落库/做展示。
stock-sdk 是什么?
stock-sdk 是一个为 前端和 Node.js 设计的股票行情 SDK:
- 直接在 浏览器或 Node.js 运行
- 无需 Python、无需额外后端
- 提供完整 TypeScript 类型
- 支持多数据源(如腾讯财经
qt.gtimg.cn、东方财富等,具体以项目实现为准)
它现在支持哪些能力?
当前版本主要覆盖两大块:实时行情 + K 线/分时,并补充一些扩展数据:
- A 股 / 港股 / 美股 / 公募基金实时行情
- 历史 K 线(日 / 周 / 月)
- 分钟 K 线(1 / 5 / 15 / 30 / 60)
- 当日分时走势
- 资金流向、盘口大单等
- A 股代码列表(5000+)
- 全市场 A 股实时行情(内置并发控制与进度回调)
同时在工程层面做了这些“更实用”的点:
- 零依赖、体积小(<10KB)
- Browser + Node.js 双端
- ESM + CommonJS
- 单元测试与覆盖率
安装
npm i stock-sdk
# or yarn add stock-sdk
# or pnpm add stock-sdk
10 行 Demo:直接拉几只股票的实时行情
import { StockSDK } from 'stock-sdk';
const sdk = new StockSDK();
const quotes = await sdk.getSimpleQuotes([
'sh000001',
'sz000858',
'sh600519',
]);
quotes.forEach(q => {
console.log(`${q.name}: ${q.price} (${q.changePercent}%)`);
});
适合直接拿去:
- 做页面展示
- 做 Demo / 教学
- 画 ECharts / TradingView
一个更“有冲击力”的用法:前端拉全市场 A 股行情(5000+)
这块我觉得对前端同学最有用:你可以在不搭后端的情况下,直接获取全市场 A 股实时行情。
const allQuotes = await sdk.getAllAShareQuotes({
batchSize: 300,
concurrency: 3,
onProgress: (completed, total) => {
console.log(`进度: ${completed}/${total}`);
},
});
console.log(`共获取 ${allQuotes.length} 只股票`);
使用场景包括:
- 行情看板(全市场筛选、排行、涨跌幅榜)
- 数据可视化(行业/概念聚合)
- 原型验证(快速跑通数据链路)
和 AkShare 的关系
AkShare 是非常优秀的工具,但它更偏:
- Python 生态
- 数据分析/量化研发链路
stock-sdk 更偏:
- Web / Node.js 工程使用
- 前端可视化、教学 Demo、轻量中台接口
简单说:各自面向的人群与使用链路不同。
适合谁 / 不适合谁
适合:
- 前端工程师、数据可视化开发者
- 教学 / Demo / 原型验证
- Node.js 定时任务、轻量中台接口
不适合:
- 高频交易
- 对数据稳定性/一致性有严格 SLA 的商业生产场景
后续计划:我准备把它往哪些方向扩展?
如果你也在做类似场景,下面这些规划你可能会用得上。我会优先做“更工程化、更通用”的能力。
1)更工程化的客户端能力(优先级最高)
- 统一错误类型(Error code、可读 message、原始响应保留)
- 自动重试 + 指数退避(针对偶发网络失败/接口波动)
- 限流与更细粒度的并发策略(按数据源、按接口分组)
- 可选缓存层(内存缓存/TTL;Node 环境可扩展到持久化)
- 请求钩子/中间件机制(日志、埋点、代理、鉴权、Mock)
2)更实用的“前端开发辅助能力”
- 代码/交易所前缀智能规范化(
000001/sz000001自动识别) - 股票搜索/模糊匹配(基于代码列表 + 拼音/简称的轻量检索)
- 交易日历与交易时段判断(节假日/是否开盘/下一交易日)
- 常用指标工具(SMA/EMA/RSI/MACD 等基础指标,方便快速画图)
3)数据面扩展(会更谨慎)
- 公司基本面(财务摘要、估值、分红/除权等,取决于数据源可用性)
- 板块/行业/概念聚合(用于看板分组、排行)
- 更多市场品种(指数更全、ETF、可转债等)
注:数据接口来自公开数据源,可能随时变更;我会尽量在 SDK 层做兼容与兜底,但也建议把它用于“展示/研究/教学/原型”等对稳定性要求相对合理的场景。
项目地址
- GitHub:github.com/chengzuopen…
- NPM:www.npmjs.com/package/sto…
- 在线 Demo:chengzuopeng.github.io/stock-sdk/
如果你在项目里用到了它,或者希望我优先支持某个能力,欢迎提 Issue。
觉得有帮助也欢迎 Star ⭐(这对维护开源真的很重要)。