写代码像点外卖?低代码平台准备阶段的快乐指南

464 阅读3分钟

引言

在数字化浪潮席卷全球的今天,低代码平台成为开发者和企业提升效率的利器。本文将带你深入了解一个低代码平台项目的准备阶段,揭秘其技术选型、依赖配置、目录结构与核心思想。无论你是初学者还是有经验的开发者,都能在这里找到实用干货和趣味解读。


一、项目初始化与依赖分析

1. 技术栈一览

本项目采用了现代前端主流技术:

  • React 19:构建组件化界面,支持最新特性。
  • TypeScript:类型安全,提升开发体验。
  • Vite:极速开发与构建工具。
  • Ant Design 5:高颜值 UI 组件库。
  • TailwindCSS:原子化 CSS,极致灵活。
  • zustand:轻量级状态管理。
  • Allotment:实现可拖拽分栏布局。
  • react-dnd:实现组件拖拽交互。
  • @monaco-editor/react:源码编辑器体验。

思考点:为什么不用 Redux?zustand 有哪些优势?

2. 依赖安装与配置

根据 package.json,核心依赖如下:

"dependencies": {
  "react": "^19.1.0",
  "react-dom": "^19.1.0",
  "allotment": "^1.20.4",
  "antd": "^5.26.5",
  "zustand": "^5.0.6",
  "react-dnd": "^16.0.1",
  "react-dnd-html5-backend": "^16.0.1",
  "@monaco-editor/react": "^4.7.0",
  "tailwindcss": "^3.4.17",
  ...
}

初始化命令示例:

npm install

TailwindCSS 初始化:

npm install tailwindcss postcss autoprefixer
npx tailwindcss init -p

Allotment 拖拽布局:

npm install allotment --save

zustand 状态管理:

npm install zustand --save

3. 目录结构梳理

项目结构清晰,分工明确:

├── src/
│   ├── editor/
│   │   ├── components/   # 编辑器核心组件
│   │   ├── hooks/        # 自定义 Hook
│   │   ├── materials/    # 物料组件(Button、Container、Page)
│   │   ├── stores/       # 状态管理(components、component-config)
│   │   ├── index.tsx     # 编辑器主入口
│   ├── main.tsx          # 应用入口
│   └── index.css         # 全局样式
├── public/               # 静态资源
├── package.json          # 依赖与脚本
├── tailwind.config.js    # TailwindCSS 配置
├── vite.config.ts        # Vite 配置

二、核心准备与技术原理

1. 组件与物料体系

  • materials/ 目录下定义了可拖拽的基础组件(如 Button、Container、Page),支持开发与生产两种模式(dev/prod)。
  • 组件注册与配置通过 component-config.tsx 实现,支持属性、样式、事件的灵活扩展。

2. 状态管理

  • components.tsx 负责维护画布上的组件树(JSON 对象),支持增删改查、属性与样式更新。
  • component-config.tsx 负责组件元数据与渲染逻辑的映射。

3. 拖拽与布局

  • Allotment 实现编辑器三栏自适应布局。
  • react-dnd 实现物料区到画布区的拖拽交互。

4. 样式与主题

  • TailwindCSS 让样式编写变得原子化、灵活且高效。
  • 支持组件级样式自定义,提升扩展性。

三、代码分析与案例讲解

1. 编辑器主入口

export default function LowcodeEditor() {
  const { mode } = useComponentsStore()
  return (
    <div className="h-[100vh] flex flex-col">
      <div className="h-[60px] flex items-center border-b-[1px] border-[#000]">
        <Header></Header>
      </div>
      {
        mode === 'edit' ? (
          <Allotment>
            <Allotment.Pane preferredSize={240} maxSize={500} minSize={200}>
              <MaterialWrapper />
            </Allotment.Pane>
            <Allotment.Pane>
              <EditArea></EditArea>
            </Allotment.Pane>
            <Allotment.Pane preferredSize={300} maxSize={500} minSize={300}>
              <Setting></Setting>
            </Allotment.Pane>
          </Allotment>
        ) : (
          <Preview></Preview>
        )
      }
    </div>
  )
}

解析:通过 Allotment 实现三栏布局,mode 控制编辑/预览切换。

2. 组件注册与配置

export const useComponentConfigStore = create<State & Action>(
  (set) => ({
    componentConfig: {
      Container: { ... },
      Button: { ... },
      Page: { ... }
    },
    registerComponent: (name, componentConfig) => { ... }
  })
)

解析:集中管理所有物料组件的元数据与渲染逻辑,支持动态注册。

3. 状态管理与组件树

export const useComponentsStore = create<State & Action>(
  (set, get) => ({
    components: [
      {
        id: 1,
        name: 'Page',
        props: {},
        desc: '页面'
      }
    ],
    ...
  })
)

解析:以 JSON 结构维护画布组件树,支持递归渲染与属性操作。


项目效果图:

低代码首页.png

四、总结与思考

低代码平台的准备阶段,既考验技术选型的前瞻性,也要求架构设计的灵活性。通过合理的依赖管理、清晰的目录结构和高内聚的状态管理,本项目为后续功能扩展和团队协作打下坚实基础。

项目所有代码均已整理至以下仓库,方便大家查看与使用:内附项目体验地址
→ 代码仓库地址