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

参考资料

相关推荐
counterxing1 小时前
我整理了一个免费开发资源目录,还做成了 CLI 和 MCP
前端·agent·ai编程
子兮曰8 小时前
Bun v1.3.14 深度解析:Image API、HTTP/3、全局虚拟存储与五十项变革
前端·后端·bun
kyriewen9 小时前
今天,百年巨头一次砍了9200人,而一个离职科学家的实话让全网睡不着觉
前端·openai·ai编程
问心无愧05139 小时前
ctf show web 入门42
android·前端·android studio
kyriewen10 小时前
老板逼我上AI,我偷偷在浏览器里跑LLaMA,省下20万API费
前端·react.js·llm
Beginner x_u10 小时前
前端八股整理(手写 02)|数组转树、数组扁平化、随机打乱一个数组
前端·数组·数组转树·数组扁平化
KaMeidebaby10 小时前
卡梅德生物技术快报|禽类成纤维细胞 FISH 实验:鸟类性别染色体基因定位技术实现与数据验证
前端·数据库·其他·百度·新浪微博
天若有情67310 小时前
前端高阶性能优化:跳出传统懒加载与预加载,基于用户行为做轻量预判加载
前端·性能优化
小小小小宇10 小时前
前端转后端:SQL 是什么
前端
张元清11 小时前
React Observer Hooks:7 种监听 DOM 而不写样板代码的方式
前端·javascript·面试