项目概览
引言
VTJ 是一款 AI 驱动的 Vue3 低代码开发平台,定位为"面向前端开发者,开箱即用"。其核心价值主张包括:
- 双向代码转换:将可视化设计的界面一键导出为标准 Vue 组件代码,或将手写代码导入设计器进行可视化调整,实现 DSL 与 Vue 源码的自由切换。
- 零侵入架构:设计器与渲染器分离,产物为纯净 Vue 代码,支持直接二次开发,不污染源码与环境。
- 引擎化扩展:内置可拆解的低代码引擎,支持独立调用,快速构建自有低代码平台,扩展能力无上限。
- 高复用物料库:内置多套企业级组件库与页面模板,提供可定制区块组件,大幅提升标准化开发效率。
- AI 智能提效:支持通过自然语言、设计稿、网页截图智能生成 Vue 组件,快速实现需求可视化。
平台通过 Monorepo 架构统一管理多端应用与核心包,无缝融入现有工程,降低学习成本,提升开发效率,并提供丰富的物料生态与多端适配能力。
项目结构
VTJ 采用 Monorepo 架构,使用 pnpm workspace + Lerna 管理多包与多应用,核心目录与职责如下:
- packages:核心引擎与工具包,如 core、designer、renderer、coder、parser、ui、charts、icons、utils 等。
- apps:示例应用与脚手架模板,如 app(Web)、h5(移动端)、uniapp(跨端)、material(物料开发)、plugin(插件开发)等。
- platforms:平台化产品与集成层,如 pro(IDE 平台)、web、uni-app、mobile 等。
- create-vtj:脚手架,用于生成不同类型的项目模板。
- docs:文档站点,基于 VitePress 构建。
- scripts:同步、下载、清理等辅助脚本。
graph TB
subgraph "工作区"
P["pnpm-workspace.yaml
声明包范围"] L["lerna.json
版本与发布策略"] end subgraph "核心包 packages/*" CORE["core
模型与协议"] DESIGNER["designer
设计器框架"] RENDERER["renderer
渲染器与服务"] CODER["coder
代码生成器"] PARSER["parser
解析器"] UI["ui
UI 组件库"] end subgraph "应用 apps/*" APP["app
Web 示例应用"] H5["h5
H5 示例应用"] UNI["uniapp
跨端示例应用"] MAT["material
物料开发项目"] end subgraph "平台 platforms/*" PRO["pro
IDE 平台"] WEB["web
Web 集成层"] UWEB["uni-app
UniApp 集成层"] end P --> CORE P --> DESIGNER P --> RENDERER P --> CODER P --> PARSER P --> UI P --> APP P --> H5 P --> UNI P --> MAT P --> PRO P --> WEB P --> UWEB L --> CORE L --> DESIGNER L --> RENDERER L --> CODER P --> PARSER P --> UI
声明包范围"] L["lerna.json
版本与发布策略"] end subgraph "核心包 packages/*" CORE["core
模型与协议"] DESIGNER["designer
设计器框架"] RENDERER["renderer
渲染器与服务"] CODER["coder
代码生成器"] PARSER["parser
解析器"] UI["ui
UI 组件库"] end subgraph "应用 apps/*" APP["app
Web 示例应用"] H5["h5
H5 示例应用"] UNI["uniapp
跨端示例应用"] MAT["material
物料开发项目"] end subgraph "平台 platforms/*" PRO["pro
IDE 平台"] WEB["web
Web 集成层"] UWEB["uni-app
UniApp 集成层"] end P --> CORE P --> DESIGNER P --> RENDERER P --> CODER P --> PARSER P --> UI P --> APP P --> H5 P --> UNI P --> MAT P --> PRO P --> WEB P --> UWEB L --> CORE L --> DESIGNER L --> RENDERER L --> CODER P --> PARSER P --> UI
核心组件
- 低代码引擎(core):提供项目、区块、节点等核心模型与协议,支撑设计器与渲染器的数据流转与事件机制。
- 设计器(designer):提供组件面板、画布、属性设置器、布局与拖拽等能力,支持源码级定制。
- 渲染器(renderer):负责将 DSL 渲染为 Vue 组件,提供上下文、服务、插件与钩子机制。
- 代码生成器(coder):将 DSL 转换为标准 Vue 源码,支持格式化与出码。
- 解析器(parser):支持 Vue 与 uni-app 的 DSL 解析,保障多端一致性。
- UI 组件库(ui):提供设计器与渲染器所需的通用 UI 组件与指令。
- 物料系统(material):提供可复用的区块与页面模板,支持自定义扩展。
架构总览
VTJ 的整体架构围绕"设计器-引擎-渲染器-出码器"的闭环展开,核心流程如下:
- 设计器负责可视化编辑与 DSL 生成;
- 引擎(core)承载项目与区块模型,提供事件与数据流;
- 渲染器将 DSL 渲染为 Vue 组件并挂载运行;
- 代码生成器将 DSL 导出为标准 Vue 源码;
- 解析器负责多端 DSL 的解析与兼容;
- 物料系统提供可复用的区块与页面模板。
graph TB
D["设计器
designer"] --> E["引擎
core"] E --> R["渲染器
renderer"] E --> C["代码生成器
coder"] E --> P["解析器
parser"] R --> VUE["Vue 应用"] C --> SRC["Vue 源码产物"] M["物料系统
material"] --> D UI["UI 组件库
ui"] --> D UI --> R
designer"] --> E["引擎
core"] E --> R["渲染器
renderer"] E --> C["代码生成器
coder"] E --> P["解析器
parser"] R --> VUE["Vue 应用"] C --> SRC["Vue 源码产物"] M["物料系统
material"] --> D UI["UI 组件库
ui"] --> D UI --> R
详细组件分析
双向代码转换(DSL↔Vue 源码)
- 项目模型(ProjectModel)提供 toDsl 与文件操作接口,确保 DSL 与源码的双向映射与一致性。
- 区块模型(BlockModel)提供 toDsl 与节点树管理,支撑复杂组件的可视化与出码。
- 代码生成器(coder)负责将 DSL 转为 Vue 源码,支持格式化与输出。
sequenceDiagram
participant Dev as "开发者"
participant Designer as "设计器"
participant Engine as "引擎(core)"
participant Coder as "代码生成器(coder)"
participant Renderer as "渲染器(renderer)"
Dev->>Designer : "可视化编辑/拖拽"
Designer->>Engine : "更新项目/区块 DSL"
Engine-->>Renderer : "提供 DSL 数据"
Renderer-->>Dev : "实时渲染预览"
Dev->>Coder : "导出 Vue 源码"
Coder-->>Dev : "生成标准 Vue 文件"
零侵入架构与上下文注入
- 应用入口通过 createProvider 创建上下文提供者,注入路由、服务、依赖与增强逻辑。
- 增强函数(enhance)可注入 Pinia、全局状态、请求拦截器等,保持与现有工程一致的开发体验。
sequenceDiagram
participant App as "应用入口(main.ts)"
participant Provider as "createProvider"
participant Enhance as "增强函数(enhance)"
participant Router as "路由"
participant Store as "状态管理(Pinia)"
App->>Provider : "创建上下文(依赖、服务、模式)"
Provider-->>App : "返回 provider/onReady"
App->>Enhance : "执行增强逻辑"
Enhance->>Store : "注册全局状态/插件"
Enhance->>Provider : "注入请求拦截器"
App->>Router : "挂载路由与 provider"
App-->>App : "完成启动"
引擎化扩展与模块化
- 核心包(core)导出模型、协议与工具,便于独立调用与扩展。
- 设计器、渲染器、UI 组件库按功能拆分,支持按需引入与二次封装。
classDiagram
class ProjectModel {
+id
+name
+pages
+blocks
+toDsl()
+active()
+deactivate()
}
class BlockModel {
+id
+name
+nodes
+toDsl()
+addNode()
+removeNode()
}
ProjectModel --> BlockModel : "包含"
物料生态与多端适配
- 物料开发项目通过 vtj.config.ts 定义库名、物料名、输出产物等,支持统一导出与调试。
- 物料索引(material/index.ts)定义分类、顺序与组件描述,便于设计器组件面板展示与检索。
- 平台层(platforms/*)提供 Web、UniApp、移动端等集成方案,实现多端适配。
flowchart TD
Start(["开始"]) --> Config["读取 vtj.config.ts
定义库/物料/输出"] Config --> Index["编写 material/index.ts
分类/顺序/描述"] Index --> Build["构建与打包产物"] Build --> Preview["物料开发调试"] Preview --> Integrate["在设计器中使用"] Integrate --> Multi["多端适配(uni-app/web/mobile)"] Multi --> End(["结束"])
定义库/物料/输出"] Config --> Index["编写 material/index.ts
分类/顺序/描述"] Index --> Build["构建与打包产物"] Build --> Preview["物料开发调试"] Preview --> Integrate["在设计器中使用"] Integrate --> Multi["多端适配(uni-app/web/mobile)"] Multi --> End(["结束"])
依赖关系分析
- 工作区与包管理:pnpm-workspace.yaml 声明所有包路径;lerna.json 配置版本策略与发布流程。
- 应用与核心包:apps/app 通过 @vtj/web 与 @vtj/renderer 等包集成,形成"应用层-引擎层-工具层"的依赖链。
- 多端与平台:platforms/* 与 apps/* 协同,分别承担平台化产品与示例应用的角色。
graph LR
W["pnpm-workspace.yaml"] --> PKG["packages/*"]
W --> APPS["apps/*"]
W --> PLAT["platforms/*"]
L["lerna.json"] --> PKG
L --> APPS
L --> PLAT
APP["apps/app"] --> CORE["@vtj/core"]
APP --> RND["@vtj/renderer"]
APP --> WEB["@vtj/web"]
性能考量
- Monorepo 与增量构建:通过 pnpm + Lerna 实现包级别的增量构建与发布,减少重复依赖与构建时间。
- 模块化与按需加载:核心包按功能拆分,应用层仅引入所需模块,降低首屏体积与运行时开销。
- 渲染与出码优化:渲染器与代码生成器均提供格式化与产物优化能力,保证生成代码质量与可维护性。
- 多端适配:平台层针对不同端(Web、UniApp、移动端)提供集成方案,避免重复实现与性能损耗。
故障排查指南
- 启动失败:检查 Node 版本是否满足要求(>=20),并执行初始化与构建脚本。
- 依赖冲突:使用 pnpm workspace 管理,避免全局安装导致的版本不一致。
- 发布异常:确认 lerna 发布配置与提交规范,遵循 conventional commits。
- 物料构建问题:核对 vtj.config.ts 中的库名、物料名与输出产物路径,确保与 material/index.ts 对齐。
结论
VTJ 以"双向代码转换 + 零侵入架构 + 引擎化扩展"为核心,结合 Monorepo 架构与多端适配能力,为前端开发者提供了从可视化设计到标准 Vue 源码的完整低代码解决方案。平台不仅降低了学习成本与迁移成本,还通过丰富的物料生态与 AI 智能提效,显著提升了开发效率与交付质量。对于初学者,平台提供开箱即用的示例与文档;对于有经验的开发者,平台具备强大的扩展性与可定制能力,适合构建企业级低代码平台。
附录
- 在线体验与文档:平台提供在线应用开发平台与官方文档站点,便于快速上手与深入学习。
- 成功案例:平台已服务于多家企业与组织,覆盖多个行业与业务场景,助力数字化转型与升级。
参考资料
- 官网文档:vtj.pro
- 在线平台:app.vtj.pro
- 开源仓库:gitee.com/newgateway/...