这是我参与「第四届青训营 」笔记创作活动的第8天
今天的主题是 Low-Code 低代码,也是我们的项目选题,从 Low-Code 的底层原理来了解低代码。
定义
查阅 WiKi,对词条 low-code development 的定义如下:
翻译过来就是说:低代码开发使用程序生成器或将预先写好的功能捆绑在一起的语言创建应用程序。低代码应用程序不是传统的高级编程语言(如Java和C++)编写的;但是,它可以用这些语言编写的程序集成。
从这段定义提取一下关键词,我们可以得到以下信息:
- 低代码开发是一种程序生成器,或者是一个将预先写好的功能代码打包捆绑生成项目的应用程序。
- 低代码应用程序不是传统的高级语言编写的
- 低代码应用程序可以使用传统的高级语言集成
如何理解
可能只看定义还是不太清楚到底什么才是低代码,那让我们来看一看现有的低代码平台是什么样子的。
大名鼎鼎的 Oracle 公司开发的低代码平台——Oracle APEX,早在 2004 年就面世了,如今历经十多年的发展已经相当成熟了。
从 Oracle APEX 的界面可以大致看出,这是一个通过在页面中可视化地添加各种组件并对其进行配置,从而完成一个完整项目开发的模式。
再看其他几家国内的低代码平台,例如阿里云宜搭、腾讯云微搭、金蝶苍穹云等等,其实他们的核心就是——可视化编程。
低代码的核心
- 可视化编程:可视化是低代码最重要的核心功能,一方面是通过拖拽、点选直接向页面中添加组件元素,另一方面,就是编辑完成后立即就能预览最终实现的效果。
- 代码扩展:代码扩展是低代码和零代码的本质区别,因为平台预设的组件往往不能完美满足用户的定制化需求,所以有时需要少量的代码来辅助进行功能的扩展,例如自定义组件、自定义样式、自定义事件等。
低代码的思想其实和声明式编程是一脉相承的,声明式编程就是一种强调表现结果,而不关注实现过程的代码编写方式。
例如我们最常见的前端三大件,其中 HTML 和 CSS 就是典型的声明式编程,只需要声明我需要一个什么样的元素、具备什么样的样式,就能达成我的目标。
例如我们使用 HTML+CSS 绘制一个简单的圆形图案,只需要声明其组件和样式即可:
<div style="border: 1px solid black; border-radius: 50%; width: 50px; height:50px"></div>
而如果我们使用 JavaScript 来完成同样的一个功能,我们就需要描述清楚如何在页面上进行绘制的整个过程,这就是命令式编程的特征。
var ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.arc(75, 75, 50, 0, (Math.PI/180)*30, true);
ctx.stroke();
回到我们的低代码,低代码其实就是声明式编程的一种,它更加的简洁、更加的直观,能够实现所见即所得。
优劣分析
低代码在今天如此火热,阿里、腾讯等大厂纷纷入场开发自家的低代码平台,低代码自然有它的过人之处:
- 低代码非常简单易懂易上手,这让很多没有编程经验、或编程能力较弱的非专业人士也能轻松的搭建一个非常不错的项目。
- 为非前端技术人员带来了便利,在很多后端人员的开发中,都需要一个后台管理页面来方便管理与操作数据。低代码平台可以通过 API、数据库表结构快速的搭建一个界面精美、代码整洁的后台页面,极大的降低 API 对接调试和前端开发的成本。
- 可移植性好,能够很好的完成向下兼容,随着低代码平台的发展,低代码项目也会随之更新迭代优化。
但是,不可避免的,如今的低代码开发也存在着很多问题:
- 自由度低,由于声明式编程的特点就是只关注结果,所以很多时候我们都不能对实现过程进行干预,这样在实现一些定制化的需求的时候可能会出现一些问题。虽然很多低代码平台是通过代码扩展修改的,但始终也只能通过预定好的接口进行操作,没有那么灵活。
- 领域限制,目前的低代码开发主要还是集中在前端、数据库查询这样一些领域,并非所有的开发都能使用低代码取得很好的效果。
- 依赖于平台,低代码开发出来的项目质量、稳定性、安全性非常依赖低代码平台,而且未来的迭代优化也需要平台的跟进。
End
低代码如今也是一个热度比较高的领域,我们要理解和学习低代码开发,其实就是要抓住他可视化编程的核心以及声明式编程的本质。