单个插件
单个插件目录和文件的说明。
目录结构分两部分
- 静态资源:
./public/plugins/pluginA/*
- 代码资源:
./src/plugins/pluginA/*
`icegl-three-vue-tres`
├── **** // 项目其他文件,这里不做描述,详细说明见:[基础/项目目录]
├── public
├── plugins // 插件内所依赖的静态资源
├── pluginA // 插件名为:pluginA的静态资源
├── image // 图片
├── model // 模型
├── preview // 菜单预览图
└── ***** // 其他类型的资源
└── pluginB // 插件名为:pluginsB的静态资源
└── src
├── **** // 项目其他文件,这里不做描述,详细说明见:[基础/项目目录]
├── plugins // 插件目录 -- 只在预览模式下自动包含的文件和路由,项目模式下则只包含所依赖的
├── pluginA // 插件名为:pluginA的代码文件
├── common // 插件通用js / ts类
├── components // 插件通用vue组件
├── lib // 插件使用的其他库函数
├── shaders // 插件使用的着色器文件
├── stores // 插件使用的状态管理类
└── pages // 插件通用页面 -- 在预览模式自动把此目录下所有vue文件加入到默认路由中
└── index.vue // 插件调试下的index.vue文件
├── index.js // 插件的暴露的组件
└── config.js // 插件的配置文件 描述见下个小节
└── pluginB // 插件名为:pluginsB的代码文件
└── preview.vue // 预览模式下的首页vue文件
插件暴露组件 index.js
每个插件除了,有自己的应用场景,在各个pages目录下的路由展示外。还会暴露出来一些通用组件,供其他插件或者场景使用。具体如下:
// floor 案例目录中的index.js
import reflectorDiffuse from './components/reflectorDiffuse.vue'
import reflectorDUDV from './components/reflectorDUDV.vue'
import reflectorShaderMesh from './components/reflectorShaderMesh.vue'
import reflectorMipMap from './components/reflectorMipMap.vue'
import whiteFloorMesh from './components/whiteFloorMesh.vue'
import gridPlus from './components/gridPlusCom.vue'
import videoFloor from './components/videoFloor.vue'
export { reflectorDiffuse, reflectorDUDV, reflectorShaderMesh, reflectorMipMap, whiteFloorMesh, gridPlus, videoFloor }
//暴露出这么多种 地板组件。那么在别的插件或者场景中,如何使用呢?
// .src/plugins/simpleGIS/pages/streamLines.vue 文件中这样引用
<template>
<TresCanvas clearColor="#201919" window-size>
<Suspense>
<reflectorDUDV :position="[0, -0.5, 0]"/>
</Suspense>
</TresCanvas>
</template>
<script setup lang="ts">
import { reflectorDUDV } from 'PLS/floor'
// `PLS` 我们这里做了简写 实际上就是`./src/plugins/`
</script>
插件配置 config.js
每个插件都包含了自己的描述文件config.js
,具体如下:
export default {
"name": "AAA", // 插件的唯一标识 英文
"title": "插件名", // 插件的中文名称
"intro": "插件描述", // 插件的描述
"version": "0.0.1", // 插件的版本
"author": "作者", // 插件的作者
"website": "www.xxx.com", // 插件的网站
"state": "active", // 状态
"creatTime": '2024-08-09', // 创建时间
"updateTime": '2024-08-10', // 更新时间
"require": ['resourceManager'],// 这里描述插件所以依赖得其他插件,启动时会进行依赖检查
"tvtstore": 'FREE', // 类型:FREE:免费、LISENCE:收费、LOCAL:本地自建(若无此项则为案例中心的)
"preview": [ // 预览的菜单
{ "src": "plugins/AAA/preview/a.png", "type": "img", "name": "a", "title": "名"
"disableFPSGraph": false, // 是否禁用fps图示
"disableSrcBtn": false, // 是否禁用源码跳转按钮
},
]
}