引言
VTJ.PRO 是一款基于 Vue3 + TypeScript 的低代码开发平台,强调"零学习成本、零侵入、源码级自定义、AI智能提效、双向代码转换"。其核心价值在于通过可视化设计、拖拽式开发与自动化代码生成,显著提升前端开发效率;并通过"引擎-提供者-服务层"的架构实现设计时与运行时的解耦,支持快速原型开发与企业级应用落地。
项目结构
VTJ 采用多包(monorepo)结构,围绕"核心引擎、设计器、渲染器、UI库、代码生成器"等模块划分,配合 CLI、物料库、平台扩展等周边能力,形成完整的低代码开发闭环。
graph TB
subgraph "核心层"
CORE["packages/core
核心模型与协议"] CODER["packages/coder
代码生成器"] end subgraph "平台层" DESIGNER["packages/designer
可视化设计器"] RENDERER["packages/renderer
渲染器"] UI["packages/ui
组件库"] end subgraph "平台与文档" DOCS["docs
Wiki/指南/文档"] README["README.md
平台概览与特性"] end CORE --> DESIGNER CORE --> RENDERER CORE --> UI CORE --> CODER DESIGNER --> RENDERER RENDERER --> UI DOCS --> DESIGNER DOCS --> RENDERER README --> DESIGNER README --> RENDERER
核心模型与协议"] CODER["packages/coder
代码生成器"] end subgraph "平台层" DESIGNER["packages/designer
可视化设计器"] RENDERER["packages/renderer
渲染器"] UI["packages/ui
组件库"] end subgraph "平台与文档" DOCS["docs
Wiki/指南/文档"] README["README.md
平台概览与特性"] end CORE --> DESIGNER CORE --> RENDERER CORE --> UI CORE --> CODER DESIGNER --> RENDERER RENDERER --> UI DOCS --> DESIGNER DOCS --> RENDERER README --> DESIGNER README --> RENDERER
核心组件
- 核心模型与协议(packages/core):提供项目、区块、节点、属性、事件、指令等基础模型,支撑设计器与渲染器的数据一致性。
- 可视化设计器(packages/designer):提供画布、素材库、属性设置器、历史管理、工具注册等能力,覆盖从拖拽到属性配置的全流程。
- 渲染器(packages/renderer):负责将 DSL 转换为可运行的 Vue 组件,支持上下文创建、组件加载、渲染上下文与服务集成。
- UI 组件库(packages/ui):提供设计器与运行时通用的 UI 能力,包括组件、指令、钩子、工具与适配器。
- 代码生成器(packages/coder):提供 TypeScript、CSS、Vue 文件格式化与生成能力,支撑从 DSL 到 Vue 源码的自动化产出。
架构总览
VTJ 采用"引擎-提供者-服务层"架构,实现设计时与运行时的解耦与协作:
- 引擎(Engine):管理工程模型、区块模型、历史、权限与仿真器,作为设计时核心控制器。
- 提供者(Provider):在设计时与运行时之间建立桥梁,负责依赖加载、物料管理与渲染上下文提供。
- 服务层(Service):抽象后端操作接口,支持工程管理、文件操作、历史管理、代码生成与静态资源管理。
graph TB
ENGINE["Engine
设计时核心控制器"] --> PROVIDER["Provider
上下文与渲染"] ENGINE --> SERVICE["Service
后端操作接口"] PROVIDER --> RENDER["Renderer
渲染上下文/组件"] SERVICE --> STORE["存储库层
Json/Vue/Static/Uni/Plugin"] ENGINE --> ACCESS["Access
认证与权限"] ENGINE --> SIM["Simulator
画布仿真"] ENGINE --> HISTORY["History
撤销/重做"]
设计时核心控制器"] --> PROVIDER["Provider
上下文与渲染"] ENGINE --> SERVICE["Service
后端操作接口"] PROVIDER --> RENDER["Renderer
渲染上下文/组件"] SERVICE --> STORE["存储库层
Json/Vue/Static/Uni/Plugin"] ENGINE --> ACCESS["Access
认证与权限"] ENGINE --> SIM["Simulator
画布仿真"] ENGINE --> HISTORY["History
撤销/重做"]
详细组件分析
项目模型与区块模型(数据层)
- ProjectModel:管理项目状态、页面与区块文件、依赖、API、元数据等,提供 CRUD 与事件通知机制,支撑设计器的文件管理与 UI 集成。
- BlockModel:作为可复用区块的抽象,支持多种创建来源(Schema/UrlSchema/Plugin),并与页面模型协同工作。
- 事件驱动:通过事件常量与事件流模式,实现项目变更、页面/区块变更、发布与代码生成等关键流程的通知与联动。
classDiagram
class ProjectModel {
+id : string
+name : string
+platform : PlatformType
+pages : PageFile[]
+blocks : BlockFile[]
+currentFile
+dependencies
+apis
+meta
+createPage()
+updatePage()
+removePage()
+clonePage()
+saveToBlock()
+toDsl()
}
class BlockModel {
+id : string
+name : string
+title : string
+fromType : "Schema"|"UrlSchema"|"Plugin"
+dsl
+category
+library
+urls
}
ProjectModel --> BlockModel : "管理/引用"
引擎-提供者-服务层(架构层)
- 引擎(Engine):持有 service、provider、simulator、project、current、access、history 等关键属性,绑定生命周期事件,驱动设计时工作流。
- 提供者(Provider):支持 Design/Runtime/Raw 三种上下文模式,负责依赖加载、组件注册与渲染上下文创建。
- 服务层(Service):抽象工程管理、文件操作、历史管理、代码生成与静态资源管理,采用分层架构与多存储库实现。
sequenceDiagram
participant U as "用户"
participant E as "Engine"
participant P as "Provider"
participant S as "Service"
participant R as "存储库"
U->>E : 修改区块属性/发布
E->>S : 触发保存/生成代码
S->>R : 保存工程/生成Vue组件
S-->>E : 返回结果
E->>P : 重建渲染上下文
P-->>E : 渲染上下文就绪
E-->>U : 画布更新/可运行组件
渲染管线与上下文
- 渲染入口:通过 provider.createDslRenderer 或 provider.getRenderComponent 获取渲染器与组件。
- 渲染上下文:支持从 DSL 架构创建渲染上下文,结合组件注册与依赖注入,实现可运行的 Vue 组件。
- 渲染模块:render/index.ts 暴露 context/node/block/loader 等模块,支撑渲染流程的分层组织。
flowchart TD
Start(["开始"]) --> LoadDSL["加载DSL架构"]
LoadDSL --> CreateCtx["创建渲染上下文"]
CreateCtx --> Register["注册组件与依赖"]
Register --> RenderComp["生成可运行组件"]
RenderComp --> Mount["挂载到容器"]
Mount --> End(["结束"])
设计器框架与管理器
- 框架导出:framework/index.ts 暴露 engine、assets、simulator、renderer、designer、openapi、state、updater、ToolRegistry 等模块,支撑设计器的完整能力。
- 管理器:managers/index.ts 暴露 built-in、widget、deps、setter 等管理器,覆盖内置工具、属性设置器、依赖与小部件管理。
- 提供者:provider/index.ts 暴露 provider/apis/defaults/enhance 等,支持运行时能力增强与默认配置。
graph LR
FW["framework/index.ts
引擎/仿真/渲染/状态"] --> MGR["managers/index.ts
内置/小部件/依赖/设置器"] FW --> PRV["provider/index.ts
Provider/API/默认/增强"]
引擎/仿真/渲染/状态"] --> MGR["managers/index.ts
内置/小部件/依赖/设置器"] FW --> PRV["provider/index.ts
Provider/API/默认/增强"]
代码生成与格式化
- 代码生成器:coder/index.ts 暴露 generator 与 ts/css/vue 格式化器,支撑从 DSL 到 Vue 源码的自动化生成与格式化。
- 与服务层协作:服务层在发布流程中调用生成器,将 DSL 转换为 Vue 单文件组件并写入存储库。
概念与工作流(可视化到代码)
- 协议与 DSL:协议定义组件与页面的描述规范,DSL 是基于协议的 JSON 结构,用于描述页面布局与配置。
- 工作流:从物料库拖拽组件到画布,配置属性生成 DSL,再通过渲染引擎转换为可运行代码。
依赖分析
- 包导出聚合:各包通过 index.ts 聚合导出,便于上层统一引入与使用。
- 模块内聚:核心(core)为数据与协议基础,设计器与渲染器分别承担设计与运行职责,UI 与代码生成器提供通用能力与产物生成。
- 外部依赖:平台基于 Vue3 + TypeScript + Vite,整合 ElementPlus/Axios/ECharts 等生态工具,保证开箱即用与零侵入。
graph TB
CORE["core/index.ts"] --> DESIGNER["designer/index.ts"]
CORE --> RENDERER["renderer/index.ts"]
CORE --> UI["ui/index.ts"]
CORE --> CODER["coder/index.ts"]
DESIGNER --> RENDERER
RENDERER --> UI
性能考量
- 仿真器与上下文分离:通过 Simulator 与 Provider 的职责划分,降低设计时与运行时的耦合,减少不必要的渲染与依赖加载。
- 按需加载与懒初始化:Provider 的 load 流程与依赖注入策略,支持按需加载与延迟初始化,优化启动与切换性能。
- 事件驱动与状态管理:通过 ProjectModel 的事件系统与 History 的撤销/重做,避免频繁全量刷新,提升交互流畅度。
- 代码生成与格式化:coder 提供的格式化器可保证生成代码的一致性与可读性,减少二次处理成本。
故障排查指南
- 发布/生成失败:检查服务层 publish/genVueContent 调用链与存储库写入状态,确认 DSL 与依赖是否完整。
- 渲染异常:核对 Provider 的上下文模式与组件注册情况,确认 getRenderComponent/createDslRenderer 的调用顺序与参数。
- 设计器无法打开文件:确认 Engine 的 openFile 生命周期与 Access 权限控制链路,检查 EVENT_PROJECT_CHANGE 等事件是否正确触发。
- 依赖缺失:核对 createViteConfig 与 createDevTools 的配置,确保静态资源路径与别名正确,避免运行时找不到模块。
结论
VTJ 低代码平台通过"引擎-提供者-服务层"的架构设计,实现了可视化设计与可运行代码之间的双向转换;借助项目/区块模型与事件驱动机制,平台在保持易用性的同时,兼顾了灵活性与企业级扩展能力。结合 AI 智能提效与零侵入的工程集成方式,VTJ 能够覆盖从快速原型到复杂企业应用的多样化场景。
附录
- 平台特性与价值主张:详见 README 中的核心特性与双向代码转换、AI智能提效、源码级自定义等说明。
- 设计器入门与工程配置:参考指南文档,了解脚手架使用、Vite 配置与开发工具启用。
参考资料
VTJ.PRO 是一个开源的、AI 驱动的 Vue 3 企业级应用开发平台。它通过 AI 智能体与可视化编排实现高效开发,并支持导出标准 Vue 代码以避免平台锁定。更多信息请访问:
- 📘 官方文档:vtj.pro/
- 🌐 在线平台:app.vtj.pro/
- 📦 开源仓库:gitee.com/newgateway/...