目录

前端低代码平台

从前端 JSON 驱动到前后端一体的选型与实践

低代码(Low-Code)并不是要把前端工程师替代掉,而是把"重复且价值低的部分"用配置化的方式沉淀下来——表单、CRUD 页面、后台管理界面、数据看板,这些场景长期占用大量人力却创新度有限。本文按"纯前端低代码 / 微前端 / 前后端一体"三类,梳理几个值得纳入技术选型的开源项目。

更完整的项目清单可直接参考两份汇总:推荐 20 个开源的前端低代码项目awesome-lowcode

amis 由百度开源,定位是"前端低代码框架,通过 JSON 配置就能生成各种页面",Apache-2.0 协议,目前 GitHub Star 约 18.9k,主语言为 TypeScript(约 85%)。

amis 的工作方式可以用两个关键词概括:

  • Schema(页面描述):用一个 JSON 对象描述页面结构和行为,字段名(typenameapi 等)直接对应组件类型与交互。
  • Renderer(渲染器):框架内置上百个渲染器(form、crud、page、table、dialog、wizard 等),负责把 JSON 翻译成实际 UI。开发者也可以注册自定义 Renderer 扩展能力。

一段最简化的表单 Schema 如下:

{
  "type": "form",
  "api": "/api/save",
  "body": [
    { "name": "name", "type": "input-text", "label": "姓名", "required": true },
    { "name": "email", "type": "input-email", "label": "邮箱" }
  ]
}

框架读到 type: form 会调用表单渲染器,api 字段声明提交后端,required 自动生成校验——后端开发者即便不懂 React 也能搭出可用的页面。amis 内部基于 React 实现,但使用者无需写任何 JSX。

amis 的甜区是后台管理系统:CRUD 列表、详情页、复杂联动表单、数据看板。配合官方的 amis-editor 可视化编辑器,可以做到拖拽生成 Schema。官方推荐的完整低代码平台是商业产品爱速搭,amis 本身是其内核。

边界:面向 C 端、强交互、动画密集、设计高度定制化的页面,JSON 描述力会捉襟见肘,这种场景写代码反而更直接。

文档与示例:

wujie 严格说不是"低代码",而是腾讯开源的微前端(Micro-Frontend)框架,Apache 协议,目前 Star 约 5k,主语言 TypeScript。它常与低代码一起讨论,因为低代码平台往往需要"集成多个独立子应用"。

微前端最难处理的是隔离。wujie 的思路是把两种原生隔离能力组合起来:

维度方案
CSS 隔离基于 Web Components 的 Shadow DOM,实现样式原生隔离
JS 隔离子应用运行在 iframe 中,获得独立的 window / document / history / location

这种组合避开了自研 JS 沙箱(如 with + Proxy 改写全局对象)带来的边界 case,以接近零成本拿到浏览器原生隔离能力。

  • 成本低:主应用通过 <wujie> 自定义元素加载子应用,子应用几乎无需改造。
  • 速度快:首屏和运行时性能较好,支持子应用预加载与保活(keep-alive)。
  • 原生隔离:CSS 与 JS 双重原生隔离。
  • 功能完整:支持子应用嵌套、多实例并存、应用间通信(去中心化事件总线)、生命周期钩子、插件系统,并对 Vite 提供适配。

按宿主框架选择对应包:

npm i wujie-react -S   # React 宿主
npm i wujie-vue3 -S    # Vue3 宿主
npm i wujie-vue2 -S    # Vue2 宿主
npm i wujie -S         # 原生使用

如果你的"页面"是为了快速展示一个机器学习模型、一个数据分析结果或一个内部工具,前端低代码其实可以再退一步——直接用 Python 写完前后端。下面三个是这一路线的代表。

Gradio 由 Hugging Face 维护(论文发表于 ICML HILL 2019),Apache-2.0 协议,Star 约 43k,要求 Python 3.10+。它的核心是"把任意 Python 函数包成交互界面":

  • gr.Interface(fn, inputs, outputs):高级 API,几行代码即可生成 demo。
  • gr.Blocks:低级 API,支持复杂布局与多状态联动,Stable Diffusion Web UI(Automatic1111)即基于此。
  • gr.ChatInterface:聊天机器人界面专用。
  • share=True:一键生成 https://xxx.gradio.live 临时公网链接,计算仍在本地。

Streamlit 由 Snowflake 维护,Apache-2.0 协议,Star 约 45k。定位是"把 Python 脚本变成 Web 应用",强调 Pythonic 写法与实时热重载。运行 streamlit hello 即可启动官方示例。它非常适合数据看板、LLM 应用、报表类的内部工具,但仓库目前已暂停接受外部 PR,仅由内部团队维护。

Dash 由 Plotly 公司维护,MIT 协议,Star 约 24k。底层基于 Plotly.js、React 和 Flask,主打"数据科学 Web 应用",内置约 50 种图表类型,声明式回调把 UI 控件(下拉、滑块)与 Python 分析代码双向绑定。企业版 Dash Enterprise 提供 LDAP/SAML/SSO、Kubernetes 水平扩展、GPU/Dask 加速等能力。

更详细的横向评测可参考 Gradio、Streamlit 和 Dash 框架对比。一句话选型:

  • 做 ML demo / 聊天界面、要快速分享 → Gradio
  • 数据看板、内部工具、Python 优先 → Streamlit
  • 复杂图表、企业级部署、回调驱动 → Dash

把以上方案放在一张决策表里:

需求推荐方案
后台管理系统、CRUD、表单、看板,前端人力紧张amis
集成多个独立子应用,需要强隔离wujie(或同类的 qiankun、micro-app)
ML 模型 demo / 聊天界面Gradio
数据分析看板、纯 PythonStreamlit
复杂可交互图表、企业部署Dash

低代码不是银弹:JSON 配置在简单场景下效率惊人,但一旦需求跨过"框架预设的边界",定制成本往往超过直接写代码。一个务实的做法是把低代码用于长尾的内部页面,把工程师精力留给真正有差异化的产品前端。

相关内容