Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >低代码调研与思考

低代码调研与思考

原创
作者头像
用户8080466
修改于 2022-12-05 02:29:29
修改于 2022-12-05 02:29:29
1.3K01
代码可运行
举报
文章被收录于专栏:jonnyjonny
运行总次数:1
代码可运行

简介

低代码平台是通过少量代码或无需编码就可以快速生成应用程序的开发平台。通过可视化进行应用程序开发的方法,使开发人员可以通过图形化的用户界面,使用拖拽组件和模型驱动的逻辑来创建网页和移动应用程序。

  • 1980年后:快速应用开发工具
  • 2000年后:可视化编程语言
  • 2014年后:Forrester低码概念的引入
  • 2021年后:数字化建设&疫情大环境的推动

竞品分析

开源平台:

设计思想

低代码开发平台在设计思想上主要可以分为表单驱动模型驱动两种。

  • 表单驱动将页面的表单和数据的存储结构合二为一,而模型驱动则与纯代码开发思想接近,实现了数据与表现的完全分离。
  • 表单驱动的典型代表:Airtable、阿里宜搭、字节飞书多维表格、轻流、明道云等。
  • 模型驱动的典型代表:Mendix、OutSystems、腾讯微搭、阿里Mobi、百度爱速搭、华为AppCube、网易轻舟、金蝶苍穹云、蓝卓SupOS、数睿数据等。

思考:基于元数据驱动的低代码方案?(数据驱动与模型驱动结合下的数模驱动方案?)

模块构成

我理解的低码平台构成模块分为:

低码平台可以简单分为:超管、管理端、用户端(小程序、H5、PC Web 、iOSAndroid应用)

  • 数据建模 元数据、字段级、对象级
  • 业务建模 前端组件,拖拽,基于元数据模型驱动开发的思想,提供灵活、稳定的元数据模型建模与管理,通过数据实体、属性、关系等元数据配置响应业务需求变化,提供了在线的数据库实体建模和E-R建模功能,支持单表、一对一、一对多关系。
  • 规则引擎 交互行为、事件规则、公式
  • 流程引擎 工作流、审批流,数据触发、流程编排 审批流:可视化拖拉拽流程设计;会签、加签、跳转、退回、撤销等多种流程操作,配置即用;用户、部门、角色、岗位、 关系等多种选人方式,符合中国特色组织选人需求。
  • 报表建模 数据工厂,BI报表、固定报表、自定义报表 报表设计器是一款在线可视化报表建模工具,提供了汇总表、明细表、柱形图、条形图、饼图、折线图、面积图、雷达图、指标图等多种种常用图表,可以组合及联动使用。设计器采用拖拽操作的风格,简单易用,能够实时展示配置效果,一目了然。
  • 权限管理 数据权限、页面权限、业务权限、人员权限、管理权限
  • 页面管理 模版、页面路由
  • 代码管理 JavaScript、代码生成、代码调试
  • 应用管理 小程序管理部署发布、版本管理
  • 平台管理 API集成、云开发、微服务、容器化、私有化、公有化

实现方案

前端方案

声明式编程 vs 命令式编程

如果想绘制一个红色区块,用「声明式」来实现,可以使用 HTML+CSS,类似下面的方法:

  • 声明式编程 声明式UIAndroidJetpack ComposeIOSSwiftUi、跨端的Flutter、Web的Vue/React、Web图表类的Echart、嵌入式的Qt QML
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div style="background:red; height:50px">div>
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const ctx = canvas.getContext('2d');
ctx.fillStyle = 'red';
const rectangle = new Path2D();
rectangle.rect(0, 0, 100, 100);
ctx.fill(rectangle);

虽然最终展现效果是一样的,但这两种代码在实现思路上有本质区别:

  • 「声明式」直接描述最终效果,不关心如何实现。
  • 「命令式」关注如何实现,明确怎么一步步达到这个效果。

从可视化编辑器的角度看,它们的最大区别是:

  • 「声明式」可以直接从展现结果反向推导回源码
  • 「命令式」无法做到反向推导

反向推导是编辑器必备功能,比如编辑器里的常见操作是点选这个红色区块,然后修改它的颜色,在这两种代码中如何实现?

如果是「声明式」的 HTML+CSS,可以直接改 stylebackground 值,而基于 Canvas 的命令式代码则无法实现这个功能,因为无法从展现找到实现它的代码,命令式代码实现同样效果的可能路径是无数的,除了前面的示例,下面这段代码也可以实现一样的效果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.moveTo(0, 0);
ctx.lineTo(50, 0);
ctx.strokeStyle = '#ff0000';
ctx.lineWidth = 100;
ctx.stroke(); 

甚至有可能这个颜色是多个字符串加随机数拼接而成,即便通过静态分析也找不到来源,从而无法实现可视化修改。

「命令式」代码无法实现可视化编辑,而可视化编辑是低代码唯一不可少的功能,所以我们可以得到结论:所有低代码平台必然只能采用「声明式」代码,这也是为什么所有低代码平台都会有内置的「DSL」

DSL 即「Domain Specific Language」,中文一般译为「领域特定语言」,在《领域特定语言》这本书中它有了一个定义:

一种为特定领域设计的,具有受限表达性编程语言

界面渲染

核心原理是将 JSON 转成自研的 React/Vue 组件库,然后使用 React/Vue 进行渲染。

比如下面的JSON

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "type": "page",
  "title": "页面标题",
  "subTitle": "副标题",
  "body": {
    "type": "form",
    "title": "用户登录",
    "body": [
      {
        "type": "input-text",
        "name": "username",
        "label": "用户名"
      }
    ]
  }
}

低代码原理就是转成了下面这样的 React/Vue 组件树,最终由各个 React/Vue 组件库渲染 HTML:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<Page title="页面标题" subTitle="副标题">
  <Form title="用户登录">
    <InputText name="username" label="用户名" />
  Form>
Page>
交互逻辑的实现

交互及逻辑处理很难,目前常见有三种方案

  1. 图形化编程
  2. 固化交互行为
  3. 使用 JavaScript
  • 图形化编程 图形化编程局限性很大,本质的原因是「代码无法可视化」。代码的抽象思维难以像积木一样进行拼接,积木拼接这种方式只适合用来实现简单的逻辑,比如 scratch。
  • 固化交互行为 常用的交互行为固化并做成了配置,比如弹框的配置:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "label": "弹框",
  "type": "button",
  "actionType": "dialog",
  "dialog": {
    "title": "弹框",
    "body": "这是个简单的弹框。"
  }
}

请求成功后,显示反馈弹框

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "type": "page",
  "body": {
    "type": "button",
    "label": "ajax 反馈弹框",
    "actionType": "ajax",
    "api": "/api/mock2/form/saveForm",
    "feedback": {
      "title": "操作成功",
      "body": "${id} 已操作成功"
    }
  }
  • 但这个方案最大的缺点是灵活性受限,只能使用 自身开发的低码平台 内置的行为。
  • 使用 JavaScript
  • 要实现更灵活的控制,还是得支持JavaScript 其他语言工具中,比较常见的代表C++ Builder / Xcode,本质其实是一样的
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19162" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
    <dependencies>
        <deployment identifier="macosx"/>
        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19162"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    dependencies>
    <objects>
        <customObject id="-2" userLabel="File's Owner"/>
        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
        <customView id="c22-O7-iKe">
            <rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
            <subviews>
                <button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="EWk-sd-qTp">
                    <rect key="frame" x="156" y="177" width="75" height="32"/>
                    <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
                    <buttonCell key="cell" type="push" title="Button" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="QXz-cE-Nde">
                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
                        <font key="font" metaFont="system"/>
                    buttonCell>
                button>
            subviews>
            <point key="canvasLocation" x="139" y="154"/>
        customView>
    objects>
document>

后端方案

如何实现自定义数据存储? 如何实现业务逻辑? 如何实现流程流转?

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
推荐20个开源的前端低代码项目
来源:低代码一哥本文约2500字,建议阅读9分钟本文分享几个值得学习和使用的前端低代码开源项目,更深入地了解什么是低代码。 近几年,在技术领域低代码是比较热门的话题,比如阿里云推出了钉钉低代码,通过简单的拖拽、配置,即可完成业务应用的搭建,腾讯云则是推出了微搭,通过行业化模板、拖放式组件和可视化配置快速构建多端应用。 低代码是基于可视化和模型驱动理念,结合云原生与多端体验技术,它能够在多数业务场景下实现大幅度的提效降本,为专业开发者提供了一种全新的高生产力开发范式。下面就来分享几个值得学习和使用的前端低代码
数据派THU
2023/03/29
4.5K0
推荐20个开源的前端低代码项目
建议收藏!10个前端低代码开源项目
低代码是基于可视化和模型驱动理念,结合云原生与多端体验技术,可以通过简单的拖拽、配置,即可完成业务应用的搭建。
程序员老鱼
2023/08/10
2K0
建议收藏!10个前端低代码开源项目
这个牛逼的国产低代码生成器!现在开源了
腾讯tmagic-editor是一个所见即所得的页面可视化编辑器,实现零代码/低代码生成页面,可以快速搭建可视化页面生产平台,让非技术人员可以通过拖拽和配置,自助生成H5页面、PC页面、TV页面,大大降低页面生产成本。
民工哥
2022/10/27
1.5K0
这个牛逼的国产低代码生成器!现在开源了
从 NASL 说开:低代码编程语言能饭否
风口之上,国内的低代码、无代码方案数不胜数。如下图所示,对于网易数帆推出的轻舟低代码平台,NASL是其中的关键,也是最大的差异化。NASL全称是NetEase(Normal)Application Specific Language,是轻舟低代码平台提供给用户的应用建模语言。对于NASL,网易数帆内部有过争论,有人强调NASL是一种DSL,有人则强调是一门编程语言,深入探讨后团队发现这两种说法都有道理,认知差异主要来自于看待问题的不同视角。
石臻臻的杂货铺[同名公众号]
2022/11/28
1.5K0
从 NASL 说开:低代码编程语言能饭否
百度开源的低代码前端框架,支持网页和移动端页面开发
amis 是一个低代码前端框架,它使用 JSON 配置来生成页面,可以减少页面开发工作量,极大提升效率。
winty
2023/08/23
1.5K0
百度开源的低代码前端框架,支持网页和移动端页面开发
从实现原理谈谈低代码
点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction
芋道源码
2022/05/17
6980
从实现原理谈谈低代码
Low code 之从零搭建一个h5可视化平台
小白今年工作时间有一半都花在low code上面,且无论是b端or c端都有一些接触。接下来谈一下我对low code在业务和开发上带来的感受。
玖柒的小窝
2021/10/06
2.4K0
Low code 之从零搭建一个h5可视化平台
猿创征文|低代码开发15个高效开源项目推荐
低代码开发平台(LCDP)是无需编码(0代码)或通过少量代码就可以快速生成应用程序的开发平台。通过可视化进行应用程序开发的方法,使具有不同经验水平的开发人员可以通过图形化的用户界面,使用拖拽组件和模型驱动的逻辑来创建网页和移动应用程序。具体什么是低代码可以查看我这篇博客:什么是低代码 本文主要推荐15个优质的低代码开源项目。
共饮一杯无
2022/11/28
4K0
猿创征文|低代码开发15个高效开源项目推荐
低代码是什么?有什么优势
通过简单的拖拉拽操作,而不用编写复杂的代码,实现少写代码或者不写代码,就能快速高效完成业务目标。 01 低代码平台演进 1. 低代码概念 低代码是无需编码(0 代码)或通过少量代码就可以快速生成应用程序的开发平台。 通过可视化进行应用程序开发的方法,具有不同经验水平的开发人员可以通过图形化的用户界面,使用拖拽组件和模型驱动的逻辑来创建网页和移动应用程序。 2. 低代码衍生历程 20 世纪 80 年代,第四代编程语言出现。 2000 年 VPL 可视化编程语言的诞生,是低代码产品的前驱,都可以通过一些可视化的
腾讯技术工程官方号
2022/03/24
1.5K0
微搭低代码「分模块混合开发」能力介绍
用户可以在可视化编辑应用的基础上,通过代码开发并部署应用的方式享受更加完整的一站式开发体验。
腾讯云开发TCB
2021/07/07
8430
微搭低代码「分模块混合开发」能力介绍
阿里开源的低代码引擎 LowCodeEngine
LowCodeEngine是由阿里巴巴钉钉团队开源的低代码引擎, 该引擎全面遵循《阿里巴巴中后端前端基础构建协议规范》和《阿里巴巴中后端前端素材协议规范》。兼容主流浏览器:Chrome >= 80,Edge >= 80,safari 和 firefox 最近 2 个 版本。
二哥聊运营工具
2023/02/26
3.4K0
阿里开源的低代码引擎 LowCodeEngine
精读《对低代码搭建的理解》
在说低代码搭建之前,首先要理解什么是搭建(本文搭建指通过 Web 交互搭建一个自定义的新页面)。
黄子毅
2022/03/14
5210
LowCode:低代码平台,2024国内十大主流低代码平台年终盘点
尽管我这里解释了一大通,但是,之前听过低代码的企业可能只占 50%,更不用说去使用的,可能也只有很小比例的企业在用,更少的企业深度使用。
informat低代码
2024/11/14
8480
低代码平台简介(10家国产化低代码平台详细介绍)
基于这样的优势,也让“低代码”在国内各个行业刮起了一场低代码风暴。还因此吸引了国内大厂纷纷加入,像腾讯、阿里、华为、网易、百度等科技巨头目前都已研发出了自己的低代码产品。并且还对该领域的其他产品进行了大量投资。就比如阿里,先是在2018年投资了一家低代码平台,而后又自己研发了低代码平台钉钉宜搭。
informat低代码
2023/05/26
2.5K0
低代码平台:国内十大低代码开发平台排名
大家在谈到“低代码”的时候,可能想到更多的是低代码搭建应用/页面的平台,其实对于偏逻辑编排、服务 BaaS 能力的偏可视化方式其实也算低代码,旨在「通过少写代码,用更便捷的方式来实现原本需写代码的工作」。
informat低代码
2024/06/04
9010
低代码+AI:全民开发时代的开发者护城河
在腾讯云微搭平台中,使用优化后的Prompt使组件匹配准确率从63%提升至89%(测试数据集见附录)
Jimaks
2025/03/30
1470
低代码工具浅析
这些年,自从 SaaS(Software-as-a-Service) 厂商 Salesforce 市值水涨船高,还和其大手笔的商业并购案,逐渐引起了国内互联网行业人的关注,习惯进行国内外产品对标的互联网圈子兴起了一股 SaaS 风潮,在后移动互联网时代下,部分人也期待 SaaS 可以成为国内互联网的一个新增长点。
winty
2022/01/04
6490
低代码工具浅析
什么是低代码(Low-Code)?我们需要低代码吗?
什么是低代码(Low Code)?我们需要低代码吗?低代码是怎么火的?国内低代码平台哪家强?以及低代码的核心价值是什么?本文集合本人 6 年来的低代码实践经验和教训,将带领大家深入浅出的了解低代码的那些事儿,全文干货,2500+ 文字,建议收藏!
informat低代码
2024/10/15
1980
低代码(Low-Code)技术杂谈
“Low-Code”是什么?身为技术人员听到这种技术名词,咱们第一反应就是翻看维基百科 或者其他相关技术论文,咱们想看维基百科的英文介绍:
林淮川
2021/12/15
1.4K0
推荐几款各具特色的低代码开发平台与开发框架!
自2020年低代码在国内盛行以来,技术热度持续不退,但围绕低代码的争议也从未停止过。有观点认为,低代码是IT革命,将“重塑整个中国软件的格局”,也有观点认为低代码是旧瓶装“新酒”,是炒作噱头而已。
海岛船长加西亚
2023/09/11
3.2K0
推荐阅读
相关推荐
推荐20个开源的前端低代码项目
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验