Back to MCP directory
publicPublicdnsLocal runtime

eoxelements

EOxElements是一个由EOX开发的Web组件集合,专注于地理空间用户界面元素,包含地图、图表、绘图工具、图层控制、时间控制、表单渲染、搜索过滤等多种组件,用于构建地理空间应用。

article

README

🚀 EOxElements

EOxElements 是由 EOX 精心打造的一套地理空间用户界面(UI)元素的 Web 组件集合,为地理空间相关的 Web 应用开发提供了丰富且实用的组件。

🚀 快速开始

若要使用 EOxElements 中的各个元素,请查看元素子文件夹中的 README 文件以获取详细描述和文档。

打包工具(Vite、Webpack 等)

npm install @eox/<element>
import "@eox/<element>"
<eox-element></eox-element>

脚本标签引入

<eox-element></eox-element>

<script type="module">
import "@eox/<element>" from "https://cdn.skypack.dev/@eox/<element>"
</script>

✨ 主要特性

  • 该集合包含多种不同状态的元素,可满足不同开发阶段的需求。
  • 提供详细的文档和交互式示例,方便开发者使用。
  • 支持多种引入方式,如通过打包工具或脚本标签引入。

📚 详细文档

请访问 这里 获取描述、API 文档和交互式示例。

📦 元素说明

元素状态

  • ⭕️ Alpha 元素:正在开发中,可能会有频繁的重大变更。
  • 🟡 Beta 元素:大部分已打磨完善,可投入使用,但仍可能存在重大变更。
  • 稳定 元素:已审核、有文档记录且 API 完整。

元素列表

| 元素 | 描述 | 文档与示例 | 版本 | 状态 | | ---- | ---- | ---- | ---- | ---- | | eox-chart | 具有内置数据获取功能的动态图表 | 文档与示例 | 版本日志 | ✅ | | eox-drawtools | 在地图上绘制和管理要素 | 文档与示例 | 版本日志 | ✅ | | eox-feedback | 快速便捷的反馈小部件 | 文档与示例 | 版本日志 | ✅ | | eox-geosearch | 用于地理位置的自动完成搜索输入框 | 文档与示例 | 版本日志 | ✅ | | eox-itemfilter | 在客户端或服务器端过滤/搜索大量项目 | 文档与示例 | 版本日志 | ✅ | | eox-jsonform | 根据 JSON 模式渲染表单 | 文档与示例 | 版本日志 | ✅ | | eox-layercontrol | 管理和修改地图图层 | 文档与示例 | 版本日志 | ✅ | | eox-layout | 轻松创建 UI 布局 | 文档与示例 | 版本日志 | ✅ | | eox-map | 具有强大工具和辅助功能的地图 | 文档与示例 | 版本日志 | ✅ | | eox-stacinfo | 显示 STAC 文件的属性 | 文档与示例 | 版本日志 | ✅ | | eox-storytelling | 基于 Markdown 的故事讲述工具 | 文档与示例 | 版本日志 | ✅ | | eox-timecontrol | 地图图层的时间控制和回放 | 文档与示例 | 版本日志 | ✅ |

🔧 开发说明

分支命名规范

这篇文章 的启发,请将你的分支命名为 <element>/<changetype>/<name>,例如:

main
map/feature/new-feature
map/fix/some-fix
chart/feature/new-feature
chart/fix/some-fix
[...]

初始设置

为了正确使用 npm 工作区和所有元素,请使用 Node.js >= 20.9.0 LTS。 安装所有根目录和元素的依赖项:

npm install

一般建议从根级别执行所有操作,而不是从单个元素文件夹执行。例如,如果你想构建一个元素,请使用:

npm run build -w @eox/<element-name>

更多信息请参考 npm 工作区文档

开发服务器

启动 Storybook 开发服务器:

npm start

这将在本地主机(端口 6006)上打开 Storybook 服务器,可用于开发多个元素状态。编辑相应元素的 *.stories.js 文件,以创建和处理元素的多个状态。

类型生成

生成所有类型输出:

npm run types:generate:all

测试服务器

你可以使用 Cypress 测试 GUI 运行单个测试。它通过组件测试和结合多个元素的端到端(E2E)测试,为每个元素提供一系列配置选项。

组件测试

npm run cypress
--> 选择组件测试
--> 选择浏览器
--> 选择测试用例

端到端测试

端到端(E2E)测试使用元素的打包版本。为了能够对特定元素运行 E2E 测试,你需要先使用 buildwatch(每次更改时重新构建)命令构建该元素:

npm run watch -w <element>

若要构建/监视所有元素,可使用:

npm run watch:all

选定的元素构建完成后,你可以在 Cypress GUI 中运行相应的测试:

npm run cypress
--> 选择端到端测试
--> 选择浏览器
--> 选择测试用例

运行自动化测试

自动化测试(组件测试和 E2E 测试)由每次向主分支提交 PR 时触发的 GitHub 操作执行。你可以通过以下命令在本地触发它们:

npm run test:all // 组件测试和 E2E 测试
npm run test:component // 仅组件测试
npm run test:e2e // 仅 E2E 测试

请记住,在运行 E2E 测试之前,按照上述说明构建/监视所有组件。

常用命令

格式化所有元素:

npm run format:all

检查/修复所有元素的代码:

npm run lint:all
npm run lint:fix:all

类型检查:

npm run types:generate:all
npm run typecheck

如果你使用的是 VS Code,并且智能感知功能显示的错误与 CLI 类型检查不同,你可以设置以下配置:

"typescript.tsdk": "./node_modules/typescript/lib",
"typescript.enablePromptUseWorkspaceTsdk": true,

如果某些功能无法正常工作,有时清理整个设置并删除所有 node 模块以重新开始会有所帮助:

npm run clean
--> 删除所有 node_module 文件夹
npm install

引导新元素

本质上,你只需要在 /elements 目录 中创建一个新的子文件夹。此外,建议在 preview.js(将所有元素导入 Storybook 的集中位置)和 release-please-config.json(用于自动化发布)中添加相应的条目。更多建议如下:

  • 新元素首选的语言是 JS + JSDoc(用于 TypeScript 类型检查)。
  • 首选的打包工具是 Vite
  • 组件测试(通过 Cypress 完成)应仅测试特定元素,其他内容最好进行模拟。
  • 如果需要,像 lit 这样的 Web 组件创建框架会很有用。

一些事情由根“系统”处理:

  • 测试(集中式 Cypress 设置,自动在 elements 子文件夹中查找 *.cy.js 文件)。
  • 代码检查和格式化(根 package.json 中的脚本 - 见上文部分)。
  • Storybook(集中式 Storybook 设置,自动在 elements 子文件夹中查找 *.stories.js 文件)。

📄 旧版本说明

本项目的主分支包含 EOxElements 的 v2 版本。如需(旧版)v1 EOxElements,请查看 v1 分支

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client