组件元数据自动生成解决方案
2025/8/20大约 4 分钟
组件元数据自动生成解决方案
🎯 问题解决
本解决方案完美解决了fizz-authorization-admin项目中编辑器的三个核心问题:
- ✅ 精确的组件识别 - 通过自动生成的组件元数据准确识别pb-website项目中的组件
- ✅ 完整的参数信息 - 自动提取组件的参数配置、类型和验证规则
- ✅ 所见即所得配置 - 基于元数据的可视化组件参数配置界面
🏗️ 技术架构
构建时自动生成
pb-website 构建 → 扫描组件 → 提取元数据 → 生成JSON → fizz-admin 加载 → 组件配置器 核心组件
Vite插件 (
src/.vuepress/webcomponents/plugins/generate-metadata.js)- 在构建过程中自动扫描组件
- 解析Vue组件的props定义
- 提取组件注释中的元数据
- 生成标准化的JSON文件
组件元数据文件 (
src/.vuepress/public/webcomponents/component-metadata.json)- 构建时自动生成
- 包含所有组件的详细信息
- 通过HTTP可直接访问
组件注释规范
<!-- @displayName 产品头部 @description 产品展示头部组件,用于显示产品的基本信息和状态 @category display -->
🚀 使用方法
1. 在pb-website项目中构建
# 构建Web Components并生成元数据
pnpm build:webcomponents 构建完成后会自动生成:
src/.vuepress/public/webcomponents/pb-webcomponents.js- Web Components脚本src/.vuepress/public/webcomponents/component-metadata.json- 组件元数据
2. 启动静态服务器
# 启动VuePress开发服务器
pnpm dev
# 或者单独启动静态服务器
http-server src/.vuepress/public -p 8080 --cors 3. 在fizz-authorization-admin中使用
组件元数据会自动从以下URL加载:
http://localhost:8080/webcomponents/component-metadata.json
📋 当前支持的组件
构建后自动生成以下组件的元数据:
展示组件 (display)
- ProductHeader (产品头部) -
pb-product-header- 参数:icon, title, subtitle, status, description
- ClinicalValue (临床价值) -
pb-clinical-value- 参数:title, values (JSON数组)
- TechnicalSpecsSimple (技术规格) -
pb-technical-specs-simple- 参数:title, specs (JSON对象)
- ClinicalApplications (临床应用) -
pb-clinical-applications- 参数:title, applications (JSON数组)
- ResearchData (研究数据) -
pb-research-data- 参数:title, data (JSON数组)
- CompetitiveAdvantages (竞争优势) -
pb-competitive-advantages- 参数:title, advantages (JSON数组)
🔧 开发指南
添加新组件
创建Vue组件 (支持TypeScript)
<!-- @displayName 组件显示名称 @description 组件描述 @category display|form|media|layout|navigation --> <template> <!-- 组件模板 --> </template> <script setup lang="ts"> interface Props { title?: string data?: any[] } const { title, data } = defineProps<Props>() </script>在vue-wrapper.js中注册
import NewComponent from '../components/NewComponent.vue' // 在registerProductComponents函数中添加 wrapVueComponent(NewComponent, 'pb-new-component', ['data'])重新构建
pnpm build:webcomponents
支持的参数类型
string- 字符串输入number- 数字输入boolean- 布尔值开关array- JSON数组 (自动解析)object- JSON对象 (自动解析)select- 下拉选择器color- 颜色选择器icon- 图标选择器
元数据结构
{
"version": "1.0.0",
"generatedAt": "2025-08-20T12:31:36.253Z",
"components": {
"ComponentName": {
"name": "ComponentName",
"displayName": "组件显示名称",
"description": "组件描述",
"category": "display",
"webComponentTag": "pb-component-name",
"props": {
"propName": {
"type": "string",
"default": "",
"description": "参数描述",
"required": false
}
}
}
}
} 🧪 测试验证
运行测试脚本验证元数据生成:
node test-metadata.js 测试内容:
- ✅ 元数据文件存在且格式正确
- ✅ HTTP访问正常
- ✅ 组件数据完整
🔄 自动化流程
开发流程
- 开发者在pb-website中创建/修改组件
- 添加组件元数据注释
- 在vue-wrapper.js中注册组件
- 运行
pnpm build:webcomponents - 元数据自动生成并可供fizz-admin使用
部署流程
- pb-website构建生成Web Components和元数据
- 静态文件部署到CDN或服务器
- fizz-admin通过HTTP加载元数据
- 组件配置器自动更新可用组件列表
🎉 优势特性
🚀 自动化
- 构建时自动生成,无需手动维护
- 支持TypeScript和JavaScript组件
- 自动解析props类型和默认值
🔧 灵活性
- 支持多种参数类型
- 可扩展的组件分类系统
- 兼容现有的Vue组件
📊 准确性
- 直接从源码提取信息
- 类型安全的参数验证
- 实时同步组件变更
🎯 易用性
- 标准化的元数据格式
- HTTP直接访问
- 完整的错误处理
🔮 未来扩展
- 多语言支持 - 支持国际化的组件描述
- 版本管理 - 支持组件版本控制和兼容性检查
- 可视化编辑器 - 更丰富的参数配置界面
- 组件预览 - 实时预览组件效果
- 模板系统 - 预定义的组件配置模板
🎉 现在您可以享受完全自动化的组件元数据管理系统了!
