配置详解

📂 项目结构说明

├── public/                 # 静态资源 & 组件预览图
├── src/
│   ├── common/             # 公共工具函数
│   ├── components/         # 动态组件目录
│   │   ├── common/         # 公共组件
│   │   └── simpleColumn/   # 示例组件目录(可自定义)
│   │       └── dynamicRotatingBase.vue
│   ├── router/             # 路由配置
│   │   ├── componentList   # 服务说明 & 组件列表
│   │   └── previewEntry    # 单组件预览调试
│   └── dcsConfig.ts        # ⭐ 动态组件核心配置文件
├── ...

其余文件均为标准 Vue 3 + Vite 项目结构, 并已按 vite-plugin-federation 要求完成配置。

⚙️ dcsConfig.ts 配置详解(核心)

./src 目录下的 dcsConfig.ts整个动态组件服务的核心配置文件 原则上增加/修改完组件代码后,再更改dcsConfig.ts即可发布服务。 如下为参考实例:

const config = {
  name: 'baseSample',
  version: '1.1.0',
  description: '动态组件服务示例组件库',
  components: [
    {
      name: '测试组件',
      type: 'testBase',
      comFile: './src/components/testBase.vue',
      previewPath: './preview/testBase.png',
      default: {},
      defaultObject3D: {},
      config: {},
    },
	...
  ]
}

基础字段

name: string        // 动态组件服务名称(仅支持英文)
version: string     // 服务版本号
description: string // 服务描述

components(组件列表)

components: [
  {
    name: string
    type: string
    comFile: string
    previewPath: string
    defaultObject3D?: { ... }
    default?: { ... }
    config?: { ... }
  }
]

单个组件字段说明

🧩 基础信息

字段说明
name组件名称
type组件唯一英文标识
comFile组件入口文件
previewPath组件预览图路径

🎯 defaultObject3D(可选)

默认 Three.js 物体参数(仅支持 位置 / 缩放 / 旋转):

defaultObject3D: {
  position: { x: 0, y: 0.2, z: 0 },
  scale: { x: 0.5, y: 0.5, z: 0.5 },
  rotation: { x: -Math.PI / 2, y: 0, z: 0 },
}

可只写其中任意项,或完全不写。

🔧 default(组件默认参数)

default: {
  color: '#ffffff',
  opacity: 1,
  // ...其他自定义参数
}

🎛 config(参数 UI 配置)

将自动生成 在线编辑器配置面板

⚠️ 字段必须与 default 一一对应。

config: {
  color: { name: '颜色', com: 'ColorPicker' },

  type: {
    name: '类型',
    com: 'Select',
    options: ['imgA', 'imgB', 'imgC'].map(item => ({
      label: item,
      value: item,
    })),
  },

  videoLoop: { name: '视频重复', com: 'Switch' },

  opacity: {
    name: '透明度',
    com: 'Slider',
    min: 0,
    max: 1,
    step: 0.01,
  },

  jsonText: {
    name: '数据配置',
    com: 'jsonText',
  },
}

当前支持的 UI 组件类型

com说明
ColorPicker颜色选择器
Select下拉选择
Switch开关
Slider数值滑动条
jsonTextJSON 编辑器

🧩 总结

dynamic-component-service 是:

  • tvt.js 生态下的 动态组件基础设施

  • 实现:

    • 组件独立发布
    • 动态加载
    • 在线编辑
    • 源码导出
    • 二次开发
  • 面向:

    • 商业项目
    • 插件作者
    • 三维应用开发者