06|踏出新手村便遭遇大Boss:如何架构低代码的引擎?
- 深入了解
- 翻译
- 解释
- 总结
本文讨论了低代码开发工具中编辑器和代码生成器的关系对低代码平台长期演进的重要影响。文章从不同层次的关系入手,分为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-261 - 孟谦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-1822
- 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