Dashing是什么?Shopify开源实时数据仪表盘框架:10分钟打造一块惊艳大屏
【免费下载链接】dashingThe exceptionally handsome dashboard framework in Ruby and Coffeescript.项目地址: https://gitcode.com/gh_mirrors/da/dashing
什么是 Dashing?
Dashing是 Shopify 开源的一个实时数据仪表盘框架,基于 Ruby(Sinatra)+ CoffeeScript 构建,官方 slogan 是"史上最帅气的仪表盘框架"。它的定位非常明确:帮你快速搭建一块漂亮的数据大屏,而且"在电视大屏上效果尤其惊艳"。
想象这样的场景:会议室电视上挂着一块屏幕,实时跳动的销售额、滚动更新的评论流、不断变化的曲线图——这就是 Dashing 的典型使用场景。
💡 小提示:Dashing 项目已不再主动维护,社区有活跃的 fork 持续更新,本文基于该仓库的经典版本讲解,核心用法通用。
三大核心特性,为什么说它"惊艳"
| 特性 | 说明 |
|---|---|
| ⚡ 真·实时 | 后端每 2 秒(或任意频率)推送数据,浏览器通过 SSE(Server-Sent Events)即时刷新,无需轮询 |
| 🧩 10 个内置组件 | 时钟、仪表、数字、列表、图表、图片、文本、评论、iframe,开箱即用 |
| 🖱 拖拽布局 | 浏览器里直接拖动组件调整位置,开发模式下可一键保存布局代码 |
数据推送的核心逻辑在 lib/dashing/app.rb 中:/events接口保持长连接,job 每调用一次send_event,所有打开的仪表盘页面就会同步刷新。
10分钟上手:从零搭建你的第一块大屏
第一步:准备环境
安装 Ruby(2.x 系列)和 RubyGems,然后安装 Dashing 命令行工具:
gem install dashing第二步:一键创建项目
Dashing 的命令行工具(定义在 lib/dashing/cli.rb)提供了全套脚手架能力:
dashing new my_dashboard这条命令会从 templates/project/ 模板生成一个完整项目,包括示例仪表盘、4 个示例 job 和 10 个内置 widget。
第三步:启动并查看大屏
进入项目目录,执行:
bundle install dashing start打开浏览器访问http://localhost:3030,恭喜——你已经拥有一块会自己动的大屏了!🎉
架构解析:Widget、Dashboard、Job 三层设计
理解 Dashing 只需记住三层结构,这也是它上手快的关键:
1️⃣ Widget(组件)—— 长什么样
每个 widget 由三个文件组成,例如数字组件 number.html、number.coffee、number.scss。HTML 定义结构,CoffeeScript 监听事件并更新内容,SCSS 负责样式。
2️⃣ Dashboard(仪表盘)—— 怎么摆放
一个.erb文件就是一块大屏的布局,例如示例仪表盘 sample.erb。用data-sizex/data-sizey控制组件占几格,data-id决定它接收哪个数据流:
<li>SCHEDULER.every '2s' do send_event('valuation', { current: rand(100) }) send_event('synergy', { value: rand(100) }) end改一个数字、换个数据源,大屏内容立刻变化——这就是 Dashing 的"实时"魅力。
内置 10 种 Widget 组件速览
| 组件 | 用途 | 适合场景 |
|---|---|---|
| Number | 大数字 + 涨跌颜色 | KPI 指标、计数 |
| Meter | 环形仪表 | 百分比、进度 |
| Graph | 实时折线图(D3.js) | 趋势监控 |
| List | 滚动列表 | Top N 排名 |
| Comments | 带头像的评论流 | 社交媒体动态 |
| Clock | 时钟 | 大屏氛围 |
| Image / Text / Iframe | 图片 / 文本 / 嵌入页面 | 自由组合 |
所有组件源码都在 templates/project/widgets/ 下,照着 text 这类简单组件抄一遍,就能做出你自己的定制组件。
进阶玩法:打造 1080p 电视大屏
仓库里藏着一块"隐藏关卡"——sampletv.erb,这是一块专为 1080p 电视优化的 5 列布局,包含时钟、Logo、双仪表、Karma 数字、实时曲线和 Twitter 评论流。
启动后访问http://localhost:3030/sampletv,直接把页面投到会议室电视上就是一份完整的监控大屏方案。📺
其他实用技巧:
- 🔌外部推数据:任何系统都可以用
curl向/widgets/组件id发 POST 请求推数据(页面底部有示例命令),方便接入你的业务系统 - 🤖自定义 job:
dashing generate job xxx生成新任务,比如 twitter.rb 就展示了如何每 10 分钟拉一次社交媒体数据 - 🎨换肤:样式集中在 application.scss,改主题色只需几行 SCSS
- 🔐访问控制:在
config/settings.rb里设置set :auth_token即可开启令牌鉴权
常见问题 FAQ
Q:Dashing 适合什么场景?A:运营数据大屏、DevOps 监控墙、直播间数据面板、发布会实时演示……凡是需要"把数据挂在电视/投影上"的场景。
Q:和 Grafana 这类监控工具比有何不同?A:Grafana 是专业监控平台;Dashing 更轻量、更"好看",强在快速定制和大屏展示,适合做对外展示的数据墙。
Q:如何停止服务?A:执行dashing stop即可(同样基于 Thin 服务器管理)。
写在最后
Dashing 用最朴素的三层设计(组件 + 布局 + 任务),把"做一块实时大屏"的门槛降到了 10 分钟:dashing new创建项目、改一改 jobs/ 里的数据源、调一调 dashboards/ 的布局,剩下交给 SSE 实时推送。
如果你想在自己的团队里快速搭出一块既专业又抓眼球的数据大屏,Dashing 值得放进你的工具箱。现在就打开终端,敲下第一条命令试试吧!🚀
【免费下载链接】dashingThe exceptionally handsome dashboard framework in Ruby and Coffeescript.项目地址: https://gitcode.com/gh_mirrors/da/dashing
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考