一个简易的低代码

前言

最近接手了一个低代码平台可视化大屏做二次开发,在这里做一些记录。
低代码平台简介:
	低代码平台是一种开发工具,它可以让开发人员使用简单的拖拽和配置来创建应用程序,
	而不需要编写大量的代码。低代码平台通常包括一个可视化的界面编辑器,可以让开发人员通过拖拽和配置来创建应用程序的用户界面和业务逻辑。

相关低代码平台
大屏可视化低代码,在线体验 8.3k
amis 可视化编辑器,在线体验 1.9k

拖拽-vuedraggable

理解:低代码通过拖拽组件来快速创建应用程序的用户界面
原生拖拽基本步骤:
	拖拽开始 dragstart
	拖拽移动 dragover
	拖拽结束 dragend
本次demo使用一个支持vue的组件库vuedraggable,快捷的实现拖拽功能
npm i vuedraggable@next

组件物料使用element-plus

npm i element-plus

代码:

// main.ts
import { createApp } from 'vue'
import App from './App.vue'
// 导入组件库
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
// 或者 import 'element-plus/lib/theme-chalk/index.css'

const app = createApp(App)
app.use(ElementPlus)   // 使用组件库
app.mount('#app')
<script setup lang="ts">
import { ref } from 'vue'
import draggable from 'vuedraggable'

// 需要使用ref
const list1 = ref([
  {
    id: 1,
    tag: 'el-button',
    props: {
      type: 'primary'
    },
    text: '按钮'
  },
  {
    id: 2,
    tag: 'el-input',
    props: {
      placeholder: '请输入内容'
    }
  },
  {
    id: 3,
    tag: 'el-switch'
  }
])

// 组件数据列表
const list2 = ref([])
</script>

<template>
  <el-container class="container">
    <el-aside class="aside" width="200px">
      <draggable
        class="list"
        v-model="list1"
        item-key="id"
        :group="{ name: 'component', pull: 'clone', put: false }"
        :sort="false"
      >
        <template #item="{ element }">
          <div class="item">
            {{ element.tag }}
          </div>
        </template>
      </draggable>
    </el-aside>
    <el-main class="main">
      <draggable v-model="list2" item-key="id" class="content" :group="{ name: 'component' }">
        <template #item="{ element }">
          <div class="component">
            <!-- 
              is: 组件名
              v-bind: 动态 props
            -->
            <component :is="element.tag" v-bind="element.props">
              {{ element.text }}
            </component>
          </div>
        </template>
      </draggable>
    </el-main>
  </el-container>
</template>

<style scoped lang="scss">
.container {
  display: flex;
}
.aside {
  background-color: pink;
}
.main {
  flex: 1;
  height: 100vh;
  background-color: skyblue;
  .content{
    background-color: #fff;
    height: 100%;
  }
}
.list {
  .item {
    border: #0083ee 1px solid;
    margin: 10px;
    padding: 10px;
  }
}
</style>

如果对值进行修改可以参考这个git-demo
https://gitee.com/SongTaoo/lowcode

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值