Vue3 超强“积木”组件!5 分钟搞定可交互 3D 机房蓝图!

过去,我们用 ExcelVisioCAD 画机房平面图:

  • 改一台机位重新截图重新标注 → 再发邮件。
    如今,一个 不到 200 KB 的 Vue3 组件------Grid Plan v2.0 ------把"画蓝图"卷进了浏览器,还把图纸 直接立了起来

Grid Plan 是什么?

一句话:
Grid Plan 是一个轻量级 Vue3 组件,用来实时绘制并交互式管理"网格蓝图"------从房间、机柜到数据中心,都能秒级可视化。

"如果 2D 是工程师的语言,那么 3D 就是决策者的母语。"

------Graphieros 团队在 v2.0 发布公告里这样说。

亮点 一句话说明
2D/3D 一键切换 同一套数据,实时生成可旋转、缩放的 3D 视图
完全可插拔 8 个插槽 + BEM 类名,样式和 UI 想怎么改就怎么改
事件驱动 增删改选全部通过事件抛回,业务逻辑零侵入
TypeScript 零配置 所有类型开箱即用,IDE 自动补全

30 秒跑通 Demo

  • 克隆 & 启动
bash 复制代码
git clone https://github.com/graphieros/grid-plan.git
cd grid-plan
pnpm i          # 或 npm / yarn
pnpm dev        # 本地 5173,带完整 3D 示例
  • 浏览器打开

  • 左侧:可拖拽的组件菜单(服务器 / 电源 / 路由器...)

  • 右侧:实时 3D 机房,鼠标旋转、缩放

  • 任意改动 → 2D3D 同步更新

核心 API 速查表

维度 关键字段 说明
组件类型 availableTypes 可放置的组件类型清单(含图标、颜色等)
已放置 placedItems 已摆放在蓝图上的组件实例(坐标 + 尺寸)
3D 开关 config.showGrid3d 是否启用 3D 视图
布局 config.grid3dPosition 3D 视图位于 2D 网格的上方或下方
事件 @change / @delete / @select / @created 组件增删改选时触发

把 3D 机房嵌进你的后台

全局注册(main.js)

js 复制代码
import { GridPlan } from 'grid-plan'
app.component('GridPlan', GridPlan)

业务页面

html 复制代码
<template>
  <GridPlan
    :availableTypes="types"
    :placedItems="layout"
    :config="{ showGrid3d: true, grid3dPosition: 'top' }"
    @change="saveLayout"
    @delete="removeDevice"
  >
    <!-- 自定义清单 -->
    <template #inventory="{ item, deleteItem }">
      <DeviceCard :device="item" @remove="deleteItem" />
    </template>
  </GridPlan>
</template>

<script setup lang="ts">
import type { GridPlanItem, GridPlanItemType } from 'grid-plan'

const types = ref<GridPlanItemType[]>([
  { typeId: 1, description: 'Dell R750', color: '#007DB8', icon: 'server' },
  { typeId: 2, description: 'APC UPS',   color: '#FF6F00', icon: 'power' }
])

const layout = ref<GridPlanItem[]>([])   // 从接口拉取
const saveLayout = (item: GridPlanItem) => api.save(item)
const removeDevice = (item: GridPlanItem) => api.delete(item.id)
</script>

3D 视图能做什么?

功能 体验亮点
实时同步 2D 改尺寸 → 3D 立即拉伸;3D 拖拽 → 2D 坐标实时变
零额外建模 不需要 glTF/obj,任何矩形组件自动生成立方体
性能怪兽 1000+ 方块 60 FPS,WebGL 局部更新
旋转缩放 鼠标拖拽旋转 / 滚轮缩放 / 触控板双指

样式随便换(Tailwind 示例)

Grid Plan 不带任何 CSS,只暴露类名:

css 复制代码
.grid-plan-grid-3d {
  @apply bg-slate-900;
  perspective: 1200px;
}
.grid-plan-inventory__body {
  @apply p-4 bg-slate-800 text-white;
}

写在最后

Excel3D ,只需一个 <GridPlan> 标签。

下一次领导再催"机房搬迁方案",别再熬夜截图 PPT------直接把浏览器投上大屏,让服务器在 3D 里"长"出来!

  • Github 地址https://github.com/graphieros/grid-plan
  • 官网地址https://grid-plan.graphieros.com/
相关推荐
林太白5 分钟前
Zustand状态库(简洁、强大、易用的React状态管理工具)
前端·javascript·react.js
Juchecar9 分钟前
Vue3 模板引用 useTemplateRef 详解
前端·vue.js
鼓浪屿11 分钟前
vue3的组件通信方式
前端
念旧Zestia29 分钟前
Oxc 家族 vs Biome——定位、能力与底层差异综述
前端
YuJie30 分钟前
vue3 无缝滚动
前端·javascript·vue.js
Juchecar30 分钟前
Vue3 表单输入 v-model 指令详解
前端·vue.js
晴空雨38 分钟前
Emmet 完全指南:让 HTML/CSS 开发效率提升 10 倍
前端·html
小野鲜40 分钟前
前端打开新的独立标签页面,并且指定标签页的大小,管理新标签页面的打开和关闭(包含源码和使用文档)
前端·javascript
一枚前端小能手40 分钟前
🌐 Web应用也想有原生App的体验,PWA来实现
前端·pwa
十五_在努力1 小时前
参透 JavaScript —— 解析浅拷贝、深拷贝及手写实现
前端·javascript