VTJ.PRO 在线应用开发平台多平台运行时(Web, H5, UniApp)

多平台运行时(Web, H5, UniApp)

VTJ.PRO 平台提供了一个统一的运行时架构,旨在不同的环境中执行低代码应用,包括标准的桌面 Web、移动端 H5 以及 UniApp(跨平台小程序/移动端)。这是通过位于 frontend/src/platform 目录中的解耦提供者-服务模式实现的,该模式将特定于环境的逻辑从核心的 @vtj/renderer 中抽象出来。

运行时架构概览

运行时系统在低代码 DSL(领域特定语言)和物理执行环境之间架起桥梁。它依赖于三个主要层次:

  1. 核心渲染器@vtj/renderer 负责将 DSL 转换为 Vue 3 组件。
  2. 平台提供者 :通过 createProvider 创建,此层为渲染器提供必要的服务(API、路由、存储)。
  3. 平台服务 :特定于实现的类(例如 LocalService),负责根据 ContextMode 处理数据持久化和资源获取。

平台桥接图

下图说明了平台抽象层如何将通用的渲染器连接到特定于环境的实现。

sequenceDiagram participant R as @vtj/renderer participant P as Provider (provider.ts) participant S as LocalService (service.ts) participant API as Backend/Storage Note over P: 检查 ContextMode (Web/H5) R->>P: getPage(pageId) P->>S: getPage(pageId) S->>API: Fetch DSL JSON API-->>S: Return Page Schema S-->>P: Return Schema P-->>R: Resolve Component

关键抽象:ContextMode 和 NodeEnv

运行时行为由两个定义执行上下文的主要枚举控制。

ContextMode

ContextMode 决定了目标 UI 框架和环境约束:

  • Web :标准桌面浏览器环境,使用 @vtj/web
  • H5:移动端浏览器环境。
  • UniApp:用于小程序和原生移动端的跨平台运行时。

NodeEnv

NodeEnv 定义了应用的生存周期阶段:

  • Development:启用热重载、调试日志,并连接到开发 DSL 服务器。
  • Production:针对性能进行优化,使用静态/已发布的 DSL 文件。

平台提供者(createProvider

createProvider 函数是初始化运行时环境的入口点。它返回一个 Provider 对象,@vtj/renderer 使用该对象与外部世界进行交互。

实现细节

提供者封装了:

  • 服务 :一个 LocalService 实例,用于对应用、页面和块执行 CRUD 操作。
  • 适配器:处理特定平台的导航和资源加载的函数。
typescript 复制代码
// 创建提供者的示例
export const createProvider = (options: ProviderOptions) => {
  const { mode, env, config } = options;
  const service = new LocalService(config);
  // ... 将服务桥接到渲染器需求的逻辑
  return {
    service,
    mode,
    env,
  };
};

LocalService 和数据流

LocalService 类定义在 frontend/src/platform/service.ts 中,它扩展了来自 @vtj/localBaseService。它作为运行时的数据抽象层(DAL)。

职责

  1. DSL 检索:从本地存储(开发环境)或远程 URL(生产环境)获取应用 JSON 模式。
  2. 资源管理:解析组件库和远程脚本等依赖项。
  3. 持久化:在低代码设计过程中处理用户状态或临时覆盖的保存。

平台特定配置

平台 入口组件 服务实现 路由策略
Web @vtj/web LocalService Vue Router (History/Hash)
H5 @vtj/web (移动端模式) LocalService Vue Router (Hash)
UniApp @vtj/uni LocalService UniApp 原生路由

Web vs. H5 运行时

Web 和 H5 都使用 @vtj/web,但它们的 ContextMode 不同。此模式会标记渲染器,使其应用适合触摸界面或鼠标驱动桌面的不同 CSS 重置和视口配置。

UniApp 集成

UniApp 运行时需要一个专门的适配器,因为它不在标准的 DOM 环境中运行。UniApp 模式下的 LocalService 使用 uni.requestuni.getStorage,而不是标准的 fetchlocalStorage

参考资料

相关推荐
有脚就行2 分钟前
第07篇-ReAct模式详解-推理与行动的交替循环
前端·react.js·前端框架
未来之窗软件服务20 分钟前
Web 技能的自主测试系统开好处发架构思维-东方仙盟
大数据·前端·架构·仙盟创梦ide·东方仙盟
吠品22 分钟前
OkHttp 多文件上传的一个实现
java·服务器·前端
lilian23326 分钟前
Harmony os 技术实战|拼豆制图46:图片解码失败为何不能悄悄返回示例图
前端·javascript·华为·harmonyos
程序员-李俞29 分钟前
Coze 工作流调用异步 HTTP API 完整教程:任务 ID、循环轮询、状态判断与结果 URL 提取
网络·人工智能·网络协议·http·aigc·ai编程·ai写作
程序员吕洞宾1 小时前
开源多维表格SmartTable v1.6.5 —— 国际化、开放性与安全易用性增强
低代码·开源·自动化·软件构建·多维表格·飞书多维表
zzzzzz3102 小时前
react-bits:从 36K Stars 的组件库,看动画交互组件该如何被评估
前端·react.js·动效
Setsuna_F_Seiei8 小时前
前端的 AI 学习之路 02 之 Provider 与 Structured Output - 规范化模型输入输出
人工智能·agent·ai编程
Setsuna_F_Seiei9 小时前
前端的 AI 学习之路 01 之 Agent API 调用 - 和 Agent 的基础对话
前端·人工智能·ai编程
threerocks9 小时前
AI 原生软件开发生命周期手册 - 如何借助 AI,逐阶段改造软件开发生命周期
前端·javascript·后端