说透低代码
陈旭
中兴通讯软件研发资深专家
18786 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已更新 26 讲/共 39 讲
说透低代码
15
15
1.0x
00:00/00:00
登录|注册

06|踏出新手村便遭遇大Boss:如何架构低代码的引擎?

你好,我是陈旭。
可视化开发是所有低代码工具 / 平台(下文简称低代码或 Low Code)的标配,是成为低代码工具 / 平台的一个必要条件。而承载可视化开发的核心基础设施,就是所见即所得的编辑器。
这个编辑器非常重要,它的使用体验、能力和易用性在极大程度上决定了低代码整体的成败。由于编辑器的实现是一个非常大的话题,我们需要分成 8 讲才能说清楚。所以,今天这节课我们先从编辑器的引擎切入,从架构的角度聊一聊应用代码生成器与编辑器之间的关系。
讨论低代码到底是银弹还是行业毒瘤那一讲中,我们了解到低代码的开发过程就是不停地在描述和细化一个业务最终的样子。这就要求低代码编辑器能实时反馈出开发人员的操作结果,这也就是所见即所得的含义。
而通过模拟,是难以保持“所见”与“所得”的一致性的。为了达到“所见”与“所得”的高度一致,我们就需要实时地把应用创建出来,创建应用的过程就是生成并运行应用代码的过程。显然,生成应用代码是这一切的基础。编辑器在收集到开发人员的操作后,应该立即生成应用的代码。
那么,生成代码的功能在架构上和编辑器可以有什么样的关系呢?不同的关系对低代码长期演进会有什么样的影响呢?不同的组织应该如何选择合适的架构呢?这正是你我今天要探讨的主要内容。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文讨论了低代码开发工具中编辑器和代码生成器的关系对低代码平台长期演进的重要影响。文章从不同层次的关系入手,分为Level 1至Level 3进行讨论。在Level 1中,缺乏代码生成器或粗糙的代码生成器会导致编辑器无法区分编辑态和运行态,从而导致代码维护困难。在Level 2中,意识到需要对编辑器做抽象,将代码生成器模块与编辑器相对独立,使用OOP思想和TypeScript进行开发。在Level 3中,代码生成器与编辑器彻底分离,让它们可以脱离对方独立运行,需要对代码做更深一层次的抽象。文章最后分享了负责的低代码平台目前的架构演进的状况,以及对架构分层的灵活调整。总体而言,文章强调了低代码平台长期演进的基础和扩展性,以及对编辑器和代码生成器关系的重要性。文章还讨论了实现代码生成器的不同方法,主要侧重讨论了如何根据现有技术选型、长期演进方面挑选合适的实现线路。直接法和间接法各有优劣,直接法架构简单、性能好、实现工作量低,但选用的先决条件苛刻;而间接法则复杂,性能差,但允许Low Code与Pro Code混合使用,解决低代码模式与传统模式存量代码之间的关系。整体而言,本文为读者提供了对低代码平台架构演进和代码生成器实现方法的深入了解。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《说透低代码》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(14)

  • 最新
  • 精选
  • huangshan
    老师,有几个问题需要请教一下 1、编辑器中组件和组件之间的事件流如何控制,比如A组件的事件会影响B组件的刷新,是在编辑器页面配置,还是通过写代码的方式 2、低代码的解析引擎,在需要手动开发时,如何做到二次扩展开发。 3、低代码在某些场景下可以做到零代码吗?如果可以转到零代码开发,是不是受众不一定非得是程序员,比如运维人员就可以做到页面开发。

    作者回复: 问题1:我们是难过一个全局的事件中心来收发事件的,一个典型的订阅者模式场景。通过事件广播可以解决你在问题1里举例的场景,此外我们还可以通过数据绑定来自动完成这种简单的情形,当A的属性发生变化,绑定了A的其它所有组件可以直接收到通知并执行预设动作。 问题2:这个问题比较复杂,我在后续几讲里会涉及到,并在常规更新阶段的最后一讲会专门总结和扩展,欢迎继续关注和学习。 问题3:某些场景做到零代码是当然可以的,比如我们现在正在把大屏做到零代码给乙方用户直接使用,这些人是只有业务能力没有编程能力。另外,表单场景我们已经基本做到零代码了

    2022-03-26
    1
  • 孟谦
    Level4 怕不是重新搞个类似React的框架了。学习和开发难度又上去了。

    作者回复: 也不是,Level4是要对代码编译器的编译流程(或者叫编译生命周期)做接口抽象和开放

    2022-04-02
  • hungry learner
    老师你好,我说下我的理解:页面拖拽产出的是协议定义的数据格式,比如jason,这是在编辑器里的逻辑,最后要上线就“编译”成可直接运行的代码,比如把协议里的输入框变成input组件。 我之前看一些资料上的思路是,把编辑器的组件渲染逻辑,跟在线运行时的逻辑统一起来了,也就是做了一个运行时引擎统一了两端。

    作者回复: 你前半部分留言的理解是正确的,后半部分所说的资料那个地方我不能下结论,按照你说的,应该是那种开发和运行都集成在一起无法分开的那种低代码解决方案,这门课要实现的低代码平台不是这样的。 这门课所说的低代码平台,app的开发和运行是分开相互独立的,app在上线运行之前,必须由低代码平台编译,编译后的app就与低代码平台脱离关系,可以独立运行了。此时app可以在低代码平台可以提供内置运行时上跑,也可以自建运行时,自由度更高

    2022-03-28
  • pasico
    根据抽象程度的不同,应用代码生成器与编辑器之间可以分为几个层级? 4个层次 各个层级的关键特征是什么? 1 简单拖拽,像玩具 2 工具和业务耦合严重 3 成熟分离 编译器,协议,解释器 4 插件,生态圈 不同层级对低代码平台长期演进具有什么样的意义? 1 拖拽只是低代码平台起步的一种方式 2 耦合严重的编辑器,负担太重,难以走得更远(很难找到更多人的合作加入),而且积重难返 3 市场上的成功案例都是协议优先,核心稳定,欢迎合作共赢
    2022-08-17归属地:广东
    2
  • 李凯
    老师, 我们现在用的 json schema来作为编译器和生成器的协议, 但是我们的生成器只是单纯导出了json schema, 最后通过解析器动态执行schema数据完成页面渲染的. 您觉得这个和利用AST直接生成代码的区别或劣势是什么?
    2022-04-18
    2
    2
  • ifelse
    学习打卡
    2023-02-18归属地:浙江
  • kkaaddff
    老师,你在 Qcon 中的分享在哪里可以回看呢
    2023-02-03归属地:江苏
  • 快手阿修
    老师好,有个问题想要请教一下,DSL一般都是一个json对象,本身就是一个结构化数据了,文章里提到的变成结构化的SVD主要是什么操作。DSL和SVD的差异在哪里?
    2023-01-20归属地:中国香港
  • sheeeeep
    请问老师,这种使用协议的架构,具体实现方案有相关资料可以推荐阅读的吗?
    2022-08-12归属地:浙江
  • Faith信
    看了老师的PPT, 解决问题的思路很重要
    2022-06-29
收起评论
显示
设置
留言
14
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部