AI + 低代码技术揭秘(六):包结构和 Monorepo

简介: VTJ低代码平台采用monorepo结构,基于PNPM和Lerna进行包管理,实现跨包版本同步与依赖管理。核心包如@vtj/base、@vtj/utils和@vtj/core提供基础类型、工具函数及数据模型。运行时包负责DSL解析、渲染和代码生成,设计器支持可视化开发,本地服务实现文件管理和项目构建。平台通过统一构建系统支持Web、UniApp等多端部署。

本文档概述了 VTJ 低代码平台的 monorepo 结构、软件包依赖关系和构建系统组织。它概述了包的组织方式、它们之间的关系以及编排开发和部署的构建系统。有关核心架构组件的信息,请参阅核心架构

Monorepo 结构概述

VTJ 平台使用 PNPM 工作区和 Lerna 进行包管理,以 monorepo 的形式进行组织。存储库包含组织为逻辑层的包,其工作区依赖项通过 workspace:~ 引用进行管理。monorepo 结构支持跨所有软件包的同步版本控制、共享工具和协调发布。

软件包描述和用途

VTJ 平台由以下主要软件包组成:

版本 描述 依赖
@vtj/base 0.12.40 基础类型和实用程序 reflect-metadata, 加密-js, dayjs, lodash-es
@vtj/utils 0.12.40 常用实用程序函数和帮助程序 @vtj/base、axios、js-cookie
@vtj/core 0.12.40 核心数据模型和引擎抽象 @vtj/base
@vtj/icons 0.12.40 平台的图标组件 @element-plus/icons-vue
@vtj/ui 0.12.40 UI 组件库 @vtj/icons、@vtj/utils、element-plus、sortablejs、vxe 表
@vtj/materials 0.12.40 设计师的组件材料 @vtj/core、@vtj/ui、@vtj/utils、element-plus、ant-design-vue、vant
@vtj/charts 0.12.40 用于数据可视化的图表组件 @vtj/icons、@vtj/utils、echarts
@vtj/renderer 0.12.40 低代码 DSL 的运行时渲染器 @vtj/core、@vtj/utils
@vtj/parser 0.12.40 将 Vue 代码解析为 DSL 模型 @vtj/base、@vtj/core、@babel/parser、@vue/compiler-sfc
@vtj/coder 0.12.40 从 DSL 模型生成 Vue 代码 @vtj/base, @vtj/core, 更漂亮
@vtj/designer 0.12.40 可视化设计环境 @vtj/核心、@vtj/渲染器、@vtj/UI、monaco-editor
@vtj/local 0.12.40 本地开发服务 @vtj/编码器、@vtj/核心、@vtj/节点、@vtj/解析器
@vtj/pro 0.12.40 带 IDE 的专业平台 @vtj/核心、@vtj/designer、@vtj/本地、@vtj/materials、@vtj/renderer
@vtj/web 0.12.40 Web 平台实施 @vtj/图表、@vtj/核心、@vtj/渲染器、@vtj/UI
@vtj/uni 0.12.40 UniApp 支持包 @vtj/core、@vtj/renderer、@vtj/utils
@vtj/uni-app 0.12.40 UniApp 平台实现 @vtj/核心、@vtj/渲染器、@vtj/uni
@vtj/cli 0.12.4 构建和开发工具 vite、vue-tsc、@vitejs/plugin-vue、rollup 插件
@vtj/node 0.12.40 Node.js 实用程序 @vtj/基础、FS-extra、AXIOS

包依赖项和关系

基础层:Core、Base 和 Utils

基础层为整个平台提供了必要的构建块。

@vtj/base

基础包提供基本实用程序、类型和帮助程序函数。它包含:

  • 类型定义
  • 常用接口
  • 加密实用程序
  • 使用 dayjs 进行日期格式化
  • Lodash 实用程序扩展

@vtj/utils

utils 包基于 base 构建,并提供更专业的 Utility 函数:

  • 基于 axios 的 HTTP 请求实用程序
  • Cookie 管理
  • 浏览器存储抽象
  • 常见的帮助程序函数
  • 路径匹配实用程序

@vtj/core

核心包定义了低代码平台的主要数据模型和抽象:

  • 项目模型
  • 块模型
  • 节点模型
  • 状态管理
  • 事件处理
  • 数据绑定

此包是系统的概念核心,它定义了为低代码体验提供支持的域特定语言 (DSL)。

运行时层:Renderer、Parser 和 Coder

@vtj/renderer

renderer 包负责:

  • 在运行时将 DSL 模型转换为 Vue 组件
  • 管理组件 state 和 props
  • 处理事件和数据流
  • 支持动态插槽渲染
  • 为组件通信提供上下文

@vtj/parser

parser 包提供:

  • 将 Vue SFC 文件转换为 DSL 模型
  • 使用 Babel 进行 AST 遍历和分析
  • CSS 解析和提取
  • 使用 Vue 编译器解析模板

@vtj/coder

coder 包处理:

  • 从 DSL 模型生成 Vue 源代码
  • 使用 Prettier 进行格式化
  • 模板生成
  • 脚本和样式生成

设计层:Designer 和本地服务

设计层提供可视化设计环境和本地开发能力。

@vtj/designer

Designer 包包含:

  • 画布和属性面板组件
  • 组件拖放功能
  • 使用 Monaco Editor 的代码编辑器
  • 组件树导航
  • 预览模拟
  • AI 辅助集成

@vtj/local

本地服务包提供:

  • 本地文件系统集成
  • 项目加载和保存
  • 将代码生成到文件
  • 本地开发服务器集成
  • 文件上传处理

平台实施

VTJ 通过专用软件包支持多个平台目标:

@vtj/web

Web 包提供标准的 Web 实现,包括:

  • 特定于 Web 的组件
  • 与 Element Plus 集成
  • 图表集成
  • Web 运行时支持

@vtj/pro

pro 包是完整的 IDE 体验,结合了:

  • 设计师
  • 本地服务
  • 材料
  • 运行时渲染器
  • 平台集成

@vtj/uni 和 @vtj/uni-app

这些 packages 为 UniApp 开发提供支持:

  • UniApp 组件映射
  • H5 和小程序支持
  • UniApp 专用渲染
  • 与 UniApp 框架集成

开发工具

@vtj/cli

CLI 软件包提供开发和构建工具:

  • 项目脚手架
  • 构建配置
  • 开发服务器
  • 测试实用程序
  • 插件支持

@vtj/node

点包提供:

  • 文件系统实用程序
  • 用于服务器端作的 HTTP 实用程序
  • 配置管理
  • 项目模板处理

Monorepo 管理和构建系统

工作区配置

VTJ monorepo 使用带有 Lerna 的 PNPM 工作区进行包管理。工作区配置在 pnpm-lock.yaml 中定义,并使用 workspace:~ 说明符通过工作区依赖项进行管理。

PNPM 工作区结构:

包版本控制策略

所有 VTJ 软件包都遵循同步版本控制策略。大多数软件包的当前版本为 0.12.40,CLI 版本为 0.12.4。此同步通过根 package.json 中定义的 Lerna 命令进行管理。

版本管理命令:

  • lerna version patch --yes - 修补程序版本更新
  • lerna version minor --yes - 次要版本更新
  • lerna version prerelease --yes - 预发行版本
  • pnpm -r publish --access public - 同步发布

构建系统架构

构建系统使用通过 npm 脚本编排的工具组合:

构建工具:

  • Vite - 软件包的主要构建工具
  • Vue-tsc - Vue 组件的 TypeScript 编译
  • Unbuild - Node.js 包的统一构建系统
  • Rollup - 使用插件捆绑模块
  • Terser - JavaScript 缩小
  • Sass - CSS 预处理

构建编排:

该平台使用:

  • 具有同步版本的语义版本控制
  • 使用 PNPM 工作区和 Lerna 进行 Monorepo 管理
  • 跨所有包的协调构建管道
  • 自动化测试和覆盖率报告

在应用程序中使用包

应用程序可以通过多种方式使用 VTJ 软件包:

  1. 使用完整的 PRO 体验:


import { createApp } from 'vue';
import { VtjPro } from '@vtj/pro';
const app = createApp(App);
app.use(VtjPro);
  1. 仅使用 Web 渲染器:

ts

import { createApp } from 'vue';
import { VtjWeb } from '@vtj/web';
const app = createApp(App);
app.use(VtjWeb);
  1. 使用 UniApp 集成:

ts

import { createSSRApp } from 'vue';
import { VtjUniApp } from '@vtj/uni-app';
export function createApp() {
  const app = createSSRApp(App);
  app.use(VtjUniApp);
  return { app };
}

应用实例

该存储库包含几个示例应用程序:

应用程序 描述 使用的软件包
应用程序 标准 Web 应用程序 @vtj/web、@vtj/plugin-ckeditor
优尼 APP UniApp 实施 @vtj/uni-app、@vtj/renderer
H5 系列 移动 H5 应用程序 @vtj/h5、@vtj/渲染器
外延 浏览器扩展 @vtj/专业版、@vtj/Web
材料 材质编辑器 @vtj/专业版、@vtj/Web
插件 插件开发 @vtj/专业版、@vtj/Web
LCDP 系列 在线演示 @vtj/网页、@vtj/专业版

这些示例展示了 VTJ 支持的不同集成方法和平台目标。


源码仓库

https://gitee.com/newgateway/vtj



相关文章
|
29天前
|
人工智能 数据安全/隐私保护
如何识别AI生成内容?探秘“AI指纹”检测技术
如何识别AI生成内容?探秘“AI指纹”检测技术
325 119
|
29天前
|
机器学习/深度学习 人工智能 自然语言处理
AI检测技术:如何识别机器生成的“数字指纹”?
AI检测技术:如何识别机器生成的“数字指纹”?
234 115
|
29天前
|
人工智能 自然语言处理 算法
揭秘AI文本:当前主流检测技术与挑战
揭秘AI文本:当前主流检测技术与挑战
310 115
|
1月前
|
人工智能 vr&ar UED
获奖公布|第十九届"挑战杯"竞赛2025年度中国青年科技创新"揭榜挂帅"擂台赛阿里云“AI技术助力乡村振兴”专题赛拟授奖名单公示
获奖公布|第十九届"挑战杯"竞赛2025年度中国青年科技创新"揭榜挂帅"擂台赛阿里云“AI技术助力乡村振兴”专题赛拟授奖名单公示
|
1月前
|
人工智能 新制造
TsingtaoAI受邀参加宁波AI海曙科创训练营并分享技术落地实践
10月12日至15日,由宁波市海曙区组织部主办的AI海曙科创训练营在宁波成功举办。作为受邀企业代表,TsingtaoAI团队深入参与了多项活动,与政府领导、行业专家及科创企业代表围绕AI技术在制造业、成果转化等领域的实际应用展开交流,用真实案例诠释了“技术扎根产业”的价值逻辑。
81 2
|
1月前
|
机器学习/深度学习 人工智能 算法
AI可以做电商主图了:技术原理,AI电商图生成工具对比及技术解析
双十一临近,电商主图需求激增。AI技术凭借多图融合、扩散模型等,实现高效智能设计,30秒生成高质量主图,远超传统PS效率。支持风格迁移、背景替换、文案生成,助力商家快速打造吸睛商品图,提升转化率。
575 0
|
29天前
|
机器学习/深度学习 人工智能 自然语言处理
如何准确检测AI生成内容?这三大技术是关键
如何准确检测AI生成内容?这三大技术是关键
529 116
|
1月前
|
人工智能 机器人 人机交互
当AI学会“看、听、懂”:多模态技术的现在与未来
当AI学会“看、听、懂”:多模态技术的现在与未来
265 117
|
29天前
|
机器学习/深度学习 人工智能 算法
AI生成内容的“指纹”与检测技术初探
AI生成内容的“指纹”与检测技术初探
180 9

热门文章

最新文章