TradingView 图表库跨平台接入:17 个示例工程的完整上手指南
【免费下载链接】charting-library-examplesExamples of Charting Library integrations with other libraries, frameworks and data transports项目地址: https://gitcode.com/gh_mirrors/ch/charting-library-examples
同一个 TradingView Charting Library 图表,要同时跑在 Web 后台和移动 App 里,不想为两端各写一套?这个官方示例仓库就是干这件事的:它把 Charting Library(行情图表库)接到 17 个示例工程里,每个目录都能独立跑起来,照着改就能用。
一张图跑通全流程:库文件、数据源、容器
接入这件事拆到底就三步:拿到库文件、接上数据源、交给一个容器。
- 库文件:
charting_library是一个静态包,加上 TypeScript 类型声明,放到项目里即可(授权后通过 README 提到的渠道下载)。 - 数据源:用 UDF 数据源适配器(库自带的
UDFCompatibleDatafeed),把你的行情接口翻译成库认识的格式。 - 容器:把库文件路径和一个 DOM 容器一起写进
new widget(options),图表就出来了;组件卸载时记得调remove()。
const tvWidget = new widget({ symbol: 'AAPL', datafeed: new (window as any).Datafeeds.UDFCompatibleDatafeed(datafeedUrl), interval: 'D', container: chartContainerRef.current, library_path: '/charting_library/', }); return () => { tvWidget.remove(); };上面这段就是 React 示例的全部核心:useEffect里创建图表、返回的清理函数在组件卸载时销毁它,防止内存泄漏。
先跑起来:一个 React 示例的接入三步
- 克隆官方示例仓库:
git clone https://gitcode.com/gh_mirrors/ch/charting-library-examples - 进入
react-typescript,拿到授权后执行copy_charting_library_files.sh,它会拉取最新库文件放进public/和src/。 npm install && npm start,图表出现在页面上,数据来自公共 demo feed。✅
💡 三个框架的写法差异极小,核心都是"挂载时 new widget、卸载时 remove":React 用useEffect、Vue 用mounted/destroyed、Angular 用ngOnInit/ngOnDestroy,选项对象完全一样。React 示例里widget直接从public/charting_library导入,Angular 版还额外用@Input()setter 接symbol、datafeedUrl等参数,方便从父组件传配置。
换框架不换脑子:Vue、Angular、Next.js 各差在哪
仓库覆盖的 Web 目录:react-javascript、react-typescript、vuejs(Vue 2)、vuejs3、angular、nextjs(v13+)、nextjs-javascript(≤v12)、nuxtjs、nuxtjs3、solidjs-typescript、sveltekit,外加ruby-on-rails。
你只需要回答一个问题:new widget(...)这行代码放在我框架的哪个生命周期钩子里?答案找到,剩下的照抄选项对象即可。Next.js 和 Nuxt 版本要注意 SSR 环境——widget 只能在客户端挂载后初始化,示例已处理,参考对应目录的写法。
移动端两种接法:WebView 包本地文件
移动端不需要原生画布,思路统一:把整个库当一个静态网站打进应用,用 WebView 打开本地的index.html。
- Android(Kotlin):WebView 开启 JavaScript 与文件访问后
loadUrl("file:///android_asset/charting_library/index.html"),并通过 JS 桥把"切换周期"等事件回传给原生层,用于做原生交互。见 android 示例。 - iOS(Swift):
WKWebView+loadFileURL加载包内文件,用导航代理把外链转给系统浏览器,避免在应用内乱跳。
<WebView source={{uri}} domStorageEnabled allowFileAccessFromFileURLs />React Native 更省事:react-native-webview指向本地文件即可,Android 用file:///android_asset/index.html,iOS 用index.html,记得开domStorageEnabled。
上生产:数据源斜杠、存储与授权四个坑
- ⚠️数据源 URL 结尾不能带斜杠,示例里到处是这句注释,踩坑的人不少。
- ⚠️
demo_feed.tradingview.com只是联调用,真实行情必须换成你自己的 UDF 接口。 - 在
disabled_features里禁掉本地存储后,图表配置的保存要改走charts_storage_url指向你自己的服务。 - 这个库不是随便 clone 就有的:需先向 TradingView 申请授权,拿到库文件后才能跑示例;
copy_charting_library_files.sh就是自动拉最新版用的。
适合谁 / 注意事项 / 下一步
- 适合谁:主要工作是"展示 K 线 + 技术指标 + 画线 + 多周期切换"。这类需求直接用现成组件,比自研渲染层省事一个数量级。
- 注意事项:需要自研渲染效果或深度定制交互时,先确认 widget API 的边界够不够,别假设所有细节都能改。
- 下一步:先跑通任意一个目录的本地 demo,把数据源 URL、
locale、disabled_features三项改成自己的值;仓库内其他目录就是现成的移植参考。
【免费下载链接】charting-library-examplesExamples of Charting Library integrations with other libraries, frameworks and data transports项目地址: https://gitcode.com/gh_mirrors/ch/charting-library-examples
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考