低代码实现原理与⾏业标准

179 阅读3分钟

低代码 实现原理

  • 低代码如何运行?

    • 生成可执行代码:类似脚⼿架,通过模板及树遍历的方式生成项目工程
    • 运行引擎:运行时动态解析 JSON 配置进行渲染
  • 生成代码的优缺点

  • 运行引擎的优缺点

  • 用户交互逻辑如何实现?

  • amis:底层用树,展现像图

    • 直接写js

    • 内置常见逻辑:难以实现嵌套逻辑

    • 逻辑编排

      • 有向图:非研发上手容易,可以随意跳转、回溯,复杂逻辑难以看懂,连线乱,容易死循环
      • 树形结构:简洁,可转为等价代码,适合研发

  • 数据模型如何实现?

    • ORM 引擎:前端发起JSONQL查询,自动join,生成SQL,执行代码

    • 数据库类型

      • 文档型:非主流DBA,基于⽂档型数据库,⼤部分表单驱动的零代码平台
      • 关系型:方便对接已有数据库,基于关系型数据库,常⻅于模型驱动的低代码平台 •
      • 宽表:无需DDL,数据孤岛,隔离性差,基于宽表的模式,⻅于部分 ΣααΣ 低代码平台

低代码 平台需要具备哪些能力?

  • 应用开发/管理/配置能力

  • 资源调用能力:与企业原有系统对接,旧项目渐进迁移能力,包括UI迁移、数据库迁移等。

  • 可视化支撑能力

  • 生态扩容能力:A、B公司技术互通。

  • 一体化开发 / 代码二次开发能力

⾏业标准的意义

  • 低代码平台的⾏业标准,并⾮⾯⾯俱到的细则规定,⽽更像⼀个全⾯的 “指导建议”

  • 知识迁移的难度,在⼀项技术的普及过程中⾮常关键;标准的意义在于 规定了低代码平台的基础形态,以避免换平台⼜要从 0 开始学习的⼈⼒ 消耗

FAQ

  1. 为什么生成的代码难以转回 低代码

    1. 难点:低代码要⽀持可视化编辑,⼤多是静态渲染,⽽代码⽀持动态渲染
    2. 举例:下⾯的代码要转成低代码意味着 DSL 得⽀持动态渲染
    3. const listItems = numbers.map((n) => <li>{n}</li>);
      return (
          listItems.length ? <ul>{listItems}</ul> : <div>empty</div>
      ); 
      
    4. Amis:lowcode是静态渲染,procode支持动态渲染。
    5. 阿里:ROI不高,投入:因为多次修改后很难分析出哪些是低代码可以解析的源码,产出:业务只有在低代码实在不满足需求的时候才会出码,实际过程中基本没有转回的诉求。
    6. 网易云:因为我们可视化运行的就是源码,所以可以互转。
  2. 如何 低代码 调试问题的?

    1. Amis:确实很难,我们只能提供辅助工具暴露上下文、日志,对接日志平台,尽可能暴露上下文。
  3. 如何解决协同、 code review 问题?

    1. 答:DSL 尽量简单,可以diff,组件尽量原子化,有唯一ID。
  4. 内置组件怎么替换?

    1. 答:Amis 不是很好替换,因为组件中有很多的js逻辑、组件间有耦合关系,替换后会损失这部分逻辑,比如,内置了自动完成。