【免费下载链接】smc.peering.tw
A dashboard that shows the current status of submarine cables that connected Taiwan to the world
smc.peering.tw 是一个展示台湾海底电缆(Submarine Cable)实时状态的交互地图看板,而它内置的「新手引导之旅」是帮助新手用户 3 分钟熟悉整站功能的最佳入口。本文完整拆解这个引导之旅的 11 个步骤、触发机制与底层实现,让你快速掌握这个海缆状态地图的每一处细节。
什么是内置新手引导之旅
对于第一次打开 smc.peering.tw 的用户,最直观的体验就是:
- 首次访问会弹出一个「重要提醒」窗口,说明数据来源与免责声明;
- 点击「我了解」后,新手引导自动开始,一步步高亮界面各区域并配上讲解气泡;
- 之后随时可以点击侧边栏的「?」帮助按钮重新启动引导。
这套引导基于 driver.js(一个轻量级产品引导库)实现,配合 zustand 状态管理和 react-i18next 多语言方案,覆盖英文与繁体中文两种界面语言。
11 步引导之旅:逐站拆解
引导之旅共有11 个站点(steps),每一步都锚定界面上一个真实的 UI 元素。以下是完整路线:
| 顺序 | 引导站点 | 讲解内容 | 对应锚点 |
|---|---|---|---|
| 1 | 对外连线状态计数器 | 根据最新事件统计台湾对外路由的正常与受影响条数 | counter |
| 2 | 地图图例 | 海缆颜色与符号的含义,可用不同蓝色区分海缆系统 | map-legend |
| 3 | 事件列表面板 | 浏览进行中与历史事件,含持续天数、原因、预计维修时间 | incident-panel |
| 4 | 进行中 / 历史切换 | 一键切换查看当前事件或历史纪录 | incident-mode-select |
| 5 | 海缆筛选器 | 筛选地图只显示全部、仅正常或仅断线的海缆 | cable-filter |
| 6 | 语言切换 | 在英文与繁体中文之间切换界面语言 | change-language |
| 7 | 时间轴视图 | 查看海缆过去一年的可用率与断线历史 | timeline-dialog |
| 8 | 拓扑视图入口 | ISP 与海缆区段之间的依赖关系(点击下一步自动打开) | topology-dialog |
| 9 | 拓扑图解读 | 节点与连线按状态着色(正常、降級、中斷),一眼看出受影响 ISP | topology-graph |
| 10 | 关于页 | 了解项目背景、数据来源与版本更新记录 | about-dialog |
| 11 | 引导教学入口 | 提示你可以随时重新启动此引导 | tour-help |
💡 注意第 8 步的小心思:点击「下一步」时会自动打开拓扑视图弹窗,等拓扑图渲染完成后才前进到第 9 步,保证引导节奏与页面状态同步。
引导之旅是如何实现的:3 个核心模块
模块一:TourController.tsx —— 引导引擎
整个引导之旅的「总导演」。核心逻辑包括:
- 通过
driver({ steps: [...] })定义 11 步引导,每步指定锚点元素、弹出方向与文案; - 全局设置
showProgress: true(显示进度)、overlayOpacity: 0.75(半透明遮罩聚焦当前元素)、allowClose: true(可随时关闭); - 用
waitForElement轮询等待动态渲染的元素(如拓扑图),避免引导"跑空"; - 引导结束后清理状态,防止重复触发。
步骤定义的结构非常简洁:
steps: [ { element: '[data-tour="counter"]', popover: { title: t("tour.counter.title"), description: t("tour.counter.body"), side: "right", // ... }, }, // ...共 11 步 ]模块二:tour.ts —— 全局状态桥
用 zustand 维护引导的三块状态:startTour(启动函数引用)、tourActive(是否正在进行)、topologyTourOpen(拓扑弹窗是否因引导而打开)。这样侧边栏的帮助按钮、移动端抽屉、引导控制器之间可以互相通信。
模块三:Intro.tsx —— 首次访问入口
首次访问的「重要提醒」弹窗是引导之旅的触发器:用户点击「我了解」后,会将 localStorage 中的tourAutoStartAllowed置为true,随后 TourController.tsx 检测到「允许自动开始 + 尚未引导过」两个条件同时满足,立即启动引导。
两个关键的 localStorage 键决定了引导行为:
| 键名 | 作用 |
|---|---|
tourAutoStartAllowed | 是否允许首次访问自动开始引导(点过「我了解」即为 true) |
tourTriggered | 引导是否已触发过(保证自动引导只发生一次) |
界面锚点:data-tour 是怎么工作的
引导能精准"指向"某个按钮或面板,靠的是散落在各组件上的data-tour属性。例如:
- 连线状态计数器:OutageCounter.tsx
- 地图图例:MapLegend.tsx
- 事件面板 / 模式切换 / 语言按钮 / 帮助按钮:Sidebar.tsx
- 海缆筛选器:App.tsx
- 拓扑图:Topology.tsx
data-tour只是普通 HTML 属性,对界面行为零侵入,引导库通过[data-tour="xxx"]选择器即可定位并高亮任意元素。
多语言引导文案在哪里
所有引导文案集中在 i18n 语言包的tour节点下:
- 繁体中文:zh-tw.json
- 英文:en.json
按钮文字(下一步 / 上一步 / 完成)和每一步的标题、正文全部走翻译函数,因此切换语言后引导会实时切换语言——这也是第 6 步"语言切换"引导站点的由来。
如何自己启动引导之旅:2 种方式
- 首次访问自动启动:打开站点 → 语言选择后出现「重要提醒」→ 点击「我了解」→ 引导自动开始(全程约 1~2 分钟);
- 随时手动重启:点击侧边栏(移动端为底部抽屉右上角)的「?」帮助按钮即可重新开始完整引导,对应组件为 Sidebar.tsx。
引导过程中可以随时关闭遮罩跳过;移动端抽屉会自动展开到全屏并同步切换到对应标签页,保证引导内容可见。
写在最后
smc.peering.tw 用driver.js +>赞
【免费下载链接】smc.peering.tw
A dashboard that shows the current status of submarine cables that connected Taiwan to the world
相关推荐
如何快速掌握Cookie导出:新手完整操作指南
如何快速掌握Cookie导出:新手完整操作指南 你是否曾经遇到过这样的困扰:调试API时需要手动复制Cookie,或者想要备份重要网站的登录状态却无从下手?别担
开发工具如何快速掌握RedisGraph:新手完整指南
如何快速掌握RedisGraph:新手完整指南 RedisGraph是一个基于Redis的图数据库模块,它将图数据结构的强大功能与Redis的高性能完美结合,让
如何快速掌握Semgrep:新手完整指南
如何快速掌握Semgrep:新手完整指南 静态代码分析是现代软件开发中不可或缺的一环,而Semgrep作为一款强大的安全扫描工具,能够帮助开发者轻松发现代码中的
SAST应用安全静态分析开发工具代码质量