开源项目低代码表单设计器FcDesigner扩展自定义组件

开源项目低代码表单设计器FcDesigner中的通过将自定义组件集成到设计器中,您可以添加额外的界面元素和功能,从而增强设计器的适用性和灵活性。以下是详细步骤,以帮助您创建、导入、注册和配置自定义组件。

源码地址: Github | Gitee | 文档

导入并注册自定义组件

首先,您需要将自定义组件导入到您的项目中,并将其注册到 formCreate 设计器中或者 Vue 的全局应用中,以确保组件可以在设计器中被识别和渲染。

javascript 复制代码
// 导入自定义组件
import MyButton from './MyButton.vue';
import FcDesigner from '@form-create/designer';

// 注册自定义组件到设计器
FcDesigner.component('MyButton', MyButton);

// 或者全局注册组件
app.component('MyButton', MyButton);

定义组件的拖拽规则

接下来,您需要定义自定义组件的拖拽规则。这些规则决定了组件在设计器中的菜单位置、图标、名称,以及组件的默认行为和属性配置。

javascript 复制代码
const buttonRule = {
  menu: 'aide', // 菜单位置
  icon: 'icon-button', // 图标
  label: '自定义按钮', // 显示名称
  name: 'MyButton', // 唯一标识符
  mask: true, // 是否可操作
  event: ['click'], // 组件事件
  rule({ t }) {
    // 自定义组件生成规则
    return {
      type: 'MyButton',
      props: {},
      children: ['按钮'],
    };
  },
  props(_, { t }) {
    // 自定义组件属性配置
    return [
      {
        type: 'input',
        title: '内容',
        field: 'formCreateChild',
      },
      {
        type: 'select',
        title: '尺寸',
        field: 'size',
        options: [
          { label: 'large', value: 'large' },
          { label: 'default', value: 'default' },
          { label: 'small', value: 'small' },
        ],
      },
    ];
  },
};

挂载组件的拖拽规则

将定义好的拖拽规则挂载到设计器实例中,以便生效。

js 复制代码
<template>
  <fc-designer ref="designer" />
</template>

<script setup>
import FcDesigner from '@form-create/designer';
import { ref, onMounted } from 'vue';

const designer = ref(null);

onMounted(() => {
  // 将拖拽规则挂载到设计器
  designer.value.addComponent(buttonRule);
});
</script>

示例:创建自定义组件

假设您创建了一个简单的按钮组件,这是自定义组件 MyButton.vue 的实现:

js 复制代码
<template>
  <button :class="`btn ${size}`" @click="handleClick">
    {{ label }}
  </button>
</template>

<script setup>
import { defineProps, defineEmits } from 'vue';

const props = defineProps({
  label: {
    type: String,
    default: '按钮',
  },
  size: {
    type: String,
    default: 'default',
  },
});

const emit = defineEmits(['click']);

function handleClick() {
  emit('click');
}
</script>

<style>
.btn {
  padding: 10px;
  border: none;
  cursor: pointer;
}
.btn.large {
  font-size: 20px;
}
.btn.default {
  font-size: 16px;
}
.btn.small {
  font-size: 12px;
}
</style>

通过这些步骤,您可以将自定义组件成功集成到 formCreate 设计器中,允许用户通过拖拽的方式使用这些组件,进而提升设计器在项目中的实用性和适配性。

相关推荐
wflynn13 分钟前
GitHub 日榜趋势速报 | 2026-10-04
开源·github
wflynn22 分钟前
GitHub 今日推荐|SCSKiller:游戏着色器预编译消除卡顿
开源·c#·github·nvidia·amd·directx12
miofly36 分钟前
GitHub 今日推荐|lightcraft:纯 Rust 重写的 RAW 照片开发工具
rust·开源·github
wflynn38 分钟前
GitHub 日榜趋势速报 | 2026-10-06
开源·github
YZ12255242 分钟前
【Docker专题】使用Docker部署Vue-Flask项目前后端分离版【前端Docker部署】
前端·vue.js·docker
m4Rk_44 分钟前
【论文阅读】Agent 记忆机制(92):EMPO²——让 Memory 从经验复用走向主动探索
论文阅读·人工智能·学习·开源·github
redfred2 小时前
HyperFrames 部署教程:5.6 万 Star 开源「写 HTML 出视频」框架,Windows 从零上手(CLI 三条命令 + 7 个避坑)
ffmpeg·开源·自动化·html·音视频
JEECG低代码平台2 小时前
不买服务器也能异地组网:开源 P2WLAN 把两地电脑“插“进同一台路由器
运维·服务器·开源·开源软件
专业程序开发源2 小时前
springboot古城景区管理系统88564-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·php·课程设计
奈落242 小时前
DeepSeek Harness 开源贡献手记:从 Issue 认领到 PR 合入的完整实践
大数据·人工智能·安全·搜索引擎·开源