visx 示例沙箱(sandboxes)目录完全指南:独立可运行的 React + D3 图表 Demo 结构与 CodeSandbox 导入实践
visx 示例沙箱sandboxes目录完全指南独立可运行的 React D3 图表 Demo 结构与 CodeSandbox 导入实践【免费下载链接】visx visx | visualization components项目地址: https://gitcode.com/gh_mirrors/vi/visx导读在 visx 仓库中packages/visx-demo/src/sandboxes 目录集中存放了 40 个独立、自包含的 visx 使用示例Examples覆盖从基础柱状图、面积图到复杂的地图投影、力导向网络、词云与 xychart 复合图表的全部功能模块。这些示例既是理解每个 visx 子包 API 的最佳入门材料也是可以被 CodeSandbox 的 import from GitHub 功能直接加载、在线运行、即时修改的最小化可运行项目。本文将基于 sandboxes/README.md 的核心说明结合仓库源码逐层拆解该目录的目录结构、每个示例的工程文件约定、依赖声明方式、Gallery 联动机制并给出本地运行与在线导入的完整操作路径。一、sandboxes 目录定位什么是可独立运行的示例README 原文明确了两点核心定位This directory contains examples ofvisxusage. Each folder is a complete standalone project, and is imported using the Code Sandbox import from GitHub feature.翻译并展开即目录用途存放 visx 的实际使用示例是仓库内功能演示Gallery/Demo 页面的源码素材库。示例形态每个子文件夹都是一个完整的独立项目complete standalone project——它自带package.json、入口文件、样式文件和示例组件不依赖 visx-demo 应用本身的其他代码可以脱离整个 monorepo 单独安装、构建与运行。消费方式这些文件夹被设计为可通过 CodeSandbox 的import from GitHub从 GitHub 导入功能直接加载实现在线编辑与运行。从源码结构可以推断这种每个示例自成项目的约定是 visx 团队刻意为之既服务于官网 Gallery 页面的在线 Playground 体验也方便贡献者把单个示例复制出去做最小化复现bug report。二、目录全景template 模板 44 个示例 联动工具list该目录packages/visx-demo/src/sandboxes可以看到三类内容分类名称作用模板template/新建示例时的空白脚手架给出最小工程约定示例visx-annotation/、visx-area/、visx-axis/、visx-bargroup/、visx-bars/、visx-barstack/、visx-brush/、visx-chord/、visx-curve/、visx-delaunay-triangulation/、visx-delaunay-voronoi/、visx-dendrogram/、visx-dots/、visx-drag-i/、visx-drag-ii/、visx-geo-albers-usa/、visx-geo-custom/、visx-geo-mercator/、visx-glyph/、visx-gradient/、visx-heatmap/、visx-legend/、visx-linktypes/、visx-network/、visx-pack/、visx-pattern/、visx-polygons/、visx-radar/、visx-radial-bars/、visx-responsive/、visx-sankey/、visx-shape-line-radial/、visx-shape-pie/、visx-shape-splitlinepath/、visx-stacked-areas/、visx-stats/、visx-streamgraph/、visx-threshold/、visx-tooltip/、visx-tree/、visx-treemap/、visx-voronoi/、visx-wordcloud/、visx-xychart/、visx-zoom-i/等覆盖各 visx 子包的独立可运行示例工具exampleToVisxDependencyLookup.ts构建 Gallery 页面示例 ↔ visx 子包依赖映射表2.1 命名规律目录名统一以visx-为前缀后缀即所演示的 visx 子包或能力如visx-area演示visx/shape的AreaClosedvisx-xychart演示复合图表包。同一能力存在多个变体时用罗马数字或修饰词区分例如visx-drag-i、visx-drag-iivisx-bargroup与visx-bargroup-horizontalvisx-shape-pie与visx-shape-line-radial。三、示例的标准工程骨架4 个约定文件每个示例文件夹内部结构高度一致部分示例会多出findNearestDatum.ts、data.ts之类的辅助模块核心固定为 4 个文件visx-xxx/ ├── package.json # 独立依赖声明可单独安装 ├── index.tsx # React 入口挂载 Example ├── Example.tsx # 示例组件本体接收 width/height props └── sandbox-styles.css # 示例专属样式3.1 入口文件 index.tsx统一的挂载模式以 visx-xychart/index.tsx 为例import React from react; import { createRoot } from react-dom/client; import { ParentSize } from visx/responsive; import Example from ./Example; import ./sandbox-styles.css; const root createRoot(document.getElementById(root)!); root.render( ParentSize{({ width, height }) Example width{width} height{height} /}/ParentSize, );要点使用 React 18 的createRoot从react-dom/client挂载到#root节点引入visx/responsive的ParentSize组件包裹Example将容器实际像素尺寸以width/height传入——这是所有示例都能自适应容器宽高的关键也解释了为什么每个示例的Example.tsx都要求width/height两个 props引入同目录的sandbox-styles.css保证样式隔离。3.2 模板 Example.tsx组件的签名约定template/Example.tsx 展示了每个示例组件必须满足的最小接口import React from react; type Props { width: number; height: number; }; export default function Example({ width, height }: Props) { return ( Example div width em{width}px/em height em{height}px/em /div / ); }可见约定为默认导出一个接收{ width, height }的函数组件。新建一个示例时直接复制template/目录并替换Example.tsx的实现即可其余工程化样板无需改动。3.3 独立 package.json依赖自包含示例的package.json完全独立不引用 monorepo 内部路径因此可以被 CodeSandbox 单独解析。以 visx-annotation/package.json 为例{ name: visx/demo-annotation, description: Standalone visx annotation demo., main: index.tsx, private: true, dependencies: { babel/runtime: ^7.8.4, types/react: ^18, types/react-dom: ^18, visx/annotation: latest, visx/mock-data: latest, visx/responsive: latest, visx/scale: latest, visx/shape: latest, visx/vendor: latest, react: ^18, react-dom: ^18, react-scripts-ts: 3.1.0, typescript: ^3 }, keywords: [visualization, d3, react, visx, annotation] }从中可以观察到的工程约定包名统一为visx/demo-能力名如visx/demo-xychart、visx/demo-annotationprivate: true这些示例包不会被发布到 npm仅供演示与导入使用main指向index.tsx入口即 TSX 源码由 CodeSandbox 的构建链直接处理固定基础依赖react/react-dom^18、types/react、types/react-dom、react-scripts-ts3.1.0基于 Create React App TS 的脚本、typescript^3以及babel/runtime按需声明 visx 子包visx/*依赖均使用latest个别版本锁定如 xychart 示例中的visx/curve: 1.0.0并额外引入visx/mock-data示例数据、visx/responsiveParentSize等辅助包keywords 保留项目关键词并在末尾追加能力词如annotation便于检索。复杂的示例会引入更多依赖例如 visx-xychart/package.json 额外声明了visx/curve、visx/glyph、visx/mock-data、visx/pattern、visx/react-spring以及react-spring/web用于演示 xychart 与动画、纹理填充的组合能力。四、Gallery 联动exampleToVisxDependencyLookup.ts 如何工作示例目录不仅是独立的 CodeSandbox 项目还与 visx-demo 应用的 Gallery 页面联动。枢纽文件是 exampleToVisxDependencyLookup.ts其工作流程如下批量导入静态import每个示例的package.json共 40 个含 Gallery 的TextTile包提取 visx 依赖调用../components/util/extractVisxDepsFromPackageJson从每个示例的依赖中筛选出visx/*子包名建表生成{ 示例包名: SetVisxPackage }映射exampleToVisxDependencyLookup记录哪个示例用到了哪些 visx 子包汇总visxPackages导出全部示例涉及到的 visx 子包去重排序列表供 Gallery 做按包筛选。由此Gallery 页面可以做到按 visx 子包过滤示例选中visx/annotation就会列出所有依赖它的示例点击即可跳转到对应 CodeSandbox 在线运行。从源码结构可以推断新增示例后只要把示例的package.json加入该文件的examples数组映射关系即自动建立无需维护重复的元数据。五、两种消费方式在线导入与本地运行5.1 通过 CodeSandbox import from GitHub 在线运行这是 README 指定的主要消费路径。CodeSandbox 支持输入一个 GitHub 仓库路径或目录路径来导入项目打开 CodeSandbox 的导入页面选择 import from GitHub输入 visx 仓库地址并在路径中定位到具体示例目录例如packages/visx-demo/src/sandboxes/visx-xychartCodeSandbox 会读取该目录下的package.json、index.tsx并自动安装依赖、编译运行由于每个示例都是自包含项目main指向index.tsx样式、数据、组件都在目录内导入后即可直接看到图表并在线修改代码。适用前提与限制该功能依赖 CodeSandbox 对 GitHub 仓库目录的解析能力且示例依赖安装以各示例package.json中声明的版本多数为latest为准在线环境的 React/TypeScript 版本以声明为准本仓库示例为 React 18 TypeScript 3 react-scripts-ts。5.2 本地运行单个示例由于示例是独立项目可以将其目录复制到本地任意位置后像普通 CRA 项目一样运行# 以 visx-xychart 为例 cd packages/visx-demo/src/sandboxes/visx-xychart npm install # 或 yarn npm start # 由 react-scripts-ts 启动开发服务器说明示例依赖中的visx/*多为latest会从 npm 拉取已发布版本而非本仓库的本地构建产物因此本地运行主要用于体验与调试示例本身。若需运行仓库内最新源码的完整演示应用应使用根目录 package.json 的脚本如yarn start启动 visx-demo来浏览所有示例的聚合页面。六、从模板到新示例最小操作路径综合 template 与现有示例的结构新增一个示例的推荐路径为复制 template/ 为visx-能力名/编辑package.json修改name为visx/demo-能力名、更新 description 与 keywords并补充该示例实际用到的visx/*依赖参考visx-annotation、visx-xychart等现有声明在Example.tsx中实现接收{ width, height }的图表组件在 exampleToVisxDependencyLookup.ts 的examples数组中注册该示例的package.json使 Gallery 联动自动生效在visx-demo的 Gallery 数据见 visx-demo/src/components 与 visx-demo/src/pages中登记入口即可出现在演示站点的示例列表中。七、小结sandboxes目录是 visx 仓库中示例即独立项目工程思想的直接体现每个示例自包含package.json index.tsx Example.tsx css可被 CodeSandbox import from GitHub 直接加载统一的组件签名({ width, height })配合visx/responsive的ParentSize保证示例在任何容器尺寸下自适应通过exampleToVisxDependencyLookup.ts与 Gallery 联动实现按 visx 子包检索示例template/ 提供零成本起步模板让社区贡献者可以快速添加新示例。对开发者而言阅读 sandboxes/README.md 后最直接的收益是想快速验证某个 visx 子包 API 时无需搭建完整工程直接定位对应visx-*目录即可获得一份可运行的最小示例想深入源码则可从各示例的Example.tsx出发对照 packages 下对应子包的src/实现逐一印证。【免费下载链接】visx visx | visualization components项目地址: https://gitcode.com/gh_mirrors/vi/visx创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Qwen Code 桌面客户端白标品牌化完整实战指南:一张 logo 到品牌安装包

Qwen Code 桌面客户端白标品牌化完整实战指南:一张 logo 到品牌安装包

Qwen Code 桌面客户端白标品牌化完整实战指南:一张 logo 到品牌安装包 【免费下载链接】qwen-code An open-source AI coding agent that lives in your terminal. 项目地址: https://gitcode.com/GitHub_Trending/qw/qwen-code Qwen Code 是一个开源 AI 编程…

2026/9/20 19:12:13 阅读更多 →
影视源码系统流畅度升级实战:焦点、图片加载与播放器优化

影视源码系统流畅度升级实战:焦点、图片加载与播放器优化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/20 19:12:12 阅读更多 →
抖音视频资源管理实战:5个功能让素材、成片、数据井井有条

抖音视频资源管理实战:5个功能让素材、成片、数据井井有条

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/20 19:12:12 阅读更多 →

最新新闻

ADB自适应远光电子系统架构:感知、决策与执行全链路设计

ADB自适应远光电子系统架构:感知、决策与执行全链路设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/20 19:56:43 阅读更多 →
服务器硬件EVT/DVT/PVT三阶段实战指南

服务器硬件EVT/DVT/PVT三阶段实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/20 19:56:43 阅读更多 →
免费本地语音合成指南:Windows 三步出音频

免费本地语音合成指南:Windows 三步出音频

免费本地语音合成指南:Windows 三步出音频 【免费下载链接】ChatTTS-ui 一个简单的本地网页界面,使用ChatTTS将文字合成为语音,同时支持对外提供API接口。A simple native web interface that uses ChatTTS to synthesize text into speech, …

2026/9/20 19:56:43 阅读更多 →
React Native Elements Text 组件实战:从标题排版(h1–h4)到主题化配色

React Native Elements Text 组件实战:从标题排版(h1–h4)到主题化配色

React Native Elements Text 组件实战:从标题排版(h1–h4)到主题化配色 【免费下载链接】react-native-elements Cross-Platform React Native UI Toolkit 项目地址: https://gitcode.com/gh_mirrors/re/react-native-elements 导读 …

2026/9/20 19:56:43 阅读更多 →
RapidOCR 古籍 OCR 实战:竖排文字识别与快速部署完整指南

RapidOCR 古籍 OCR 实战:竖排文字识别与快速部署完整指南

RapidOCR 古籍 OCR 实战:竖排文字识别与快速部署完整指南 【免费下载链接】RapidOCR 📄 Awesome OCR multiple programing languages toolkits based on ONNX Runtime, OpenVINO, MNN, PaddlePaddle, TensorRT and PyTorch. 项目地址: https://gitcode…

2026/9/20 19:56:43 阅读更多 →
ESP32 GNSS 多系统定位实战:从接线到稳定上报

ESP32 GNSS 多系统定位实战:从接线到稳定上报

ESP32 GNSS 多系统定位实战:从接线到稳定上报 【免费下载链接】arduino-esp32 Arduino core for the ESP32 family of SoCs 项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32 基于 arduino-esp32 核心,把一颗 GNSS 模块接到 ESP3…

2026/9/20 19:55:43 阅读更多 →

日新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/20 0:00:46 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/20 0:00:46 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/20 0:00:46 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/20 0:00:46 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/19 23:01:36 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/19 17:50:38 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →