AppSmith 它到底好用吗?

团队尝试使用低代码平台AppSmith更新老旧管理端,发现其优点如OAuth2集成和丰富的数据源,但也存在控件布局问题、代码格式化不足和局限的JS功能。结论是,在前后端分离场景下,AppSmith不如熟悉的模板项目灵活。
摘要由CSDN通过智能技术生成

简介

前段时间公司里一个给经销商用了挺长时间的管理端需要更新一下, 补充一些功能, 于是我们把项目代码翻了出来, 发现是一个基于 Vue 2 的简易管理端和 Spring Boot 2 后端组成的项目.
简单规划了一下需要改动的范围, 确定好方案之后很快就完成了业务上需要的功能.

本着项目难得更新一次, 不如这一次一并更新一下技术栈, 避免项目腐化的想法, 我们团队内部讨论了几个方案, 包括更新到 Vue 3, 使用 Nuxt 3 进行重构, 使用低代码平台进行重构等.
讨论了一番后, 我们决定尝试一下低代码平台, 于是我们找到了 AppSmith, 当时的搜索结果页大概是这个样子:

  • AppSmith 官网
  • 最强开源低代码平台 - Appsmith 功能介绍与使用体验 - 知乎
  • Github 最火开源低代码 Appsmith: 我们是如何达到 28K Star 的?

团队成员都表示, 哇, 这个项目看起来很厉害啊, 我们试试看吧!

本着调研的心态, 我们把此次改动的管理端列表页作为参考, 打算使用 AppSmith 对这个页面进行一个 1:1 的复制.

接下来就让我们一起来看看 AppSmith v1.16 在真实项目中的表现如何吧. 🧐

Note:
由于 AppSmith 是一个仍在活跃开发的项目, 因此本文提到的内容具有时效性, 阅读时请注意当前时间与文章发布时间的间隔, 内容仅供参考.

所以 AppSmith 它到底好用吗?

让我们先来看看它的优点

  • 管理端项目免不了需要使用登录功能, 正当我们准备随便糊弄一下登录页的时候, 我们发现在新建页面时有模板页可供选择, 真是减少许多调研的工作量 👍:
    image.png
  • 支持标准的 OAuth 2 认证方式, 可以快速的将业务系统的登录功能接入进来, 配置好以后还可以将访问令牌注入到 HTTP 请求中, 并自动刷新令牌. (只可惜这个项目的 Spring Boot 后端没有用标准的 OAuth 2 认证协议 😂)
  • 数据源类型丰富, 支持直接连接到多种数据库, 使用 HTTP 请求或者使用 Open AI 服务等.
  • 可以拖拽式的进行页面布局, 方便开发者像搭积木一样将界面原型搭建出来.
  • 支持编写 JavaScript 函数作为数据源或事件监听器, 自由实现业务功能.
  • 支持导入第三方 JavaScript 库, 扩展平台能力.
    image.png
  • 支持基于 React 或原生 JavaScript 创建自定义控件.
  • 支持将项目持久化到 Git 仓库里.
  • 支持多分支, 允许开发人员在分支上进行开发而不影响已发布的版本.
  • 支持环境变量/多环境数据源, 方便开发者在测试环境的数据源上进行调试.

    商业授权起步 40 USD 每月, 附带 100 小时使用时长, 超出部分按 0.4 USD 每用户每小时按量付费, 每用户每月最多收取 20 USD, 对单个应用而言门槛相对较高.

    建议在同一个账户下创建多个应用来分摊授权成本.
    image.png

那它有哪些文档上没提到的缺点呢?

  • 我们在开发列表页时, 发现拖拽控件到页面上时有可能会打乱已有的布局: 比如拖拽中的控件穿过已有的布局时会导致其下方的控件被挤到其他地方去.

    建议拖拽过程中绕过已有的控件, 尽量从布局的边缘进入画布中间.
  • 容器控件的高度无法选择为适应窗口高度, 只能选择自动或者固定高度 (" 留白是一门艺术 ").

  • 网页编辑器上的 JavaScript 代码格式化功能约等于没有, 而且快捷键 Shift + Alt + F 很难触发:
    image.png

  • 键盘党的恶梦: 编辑 HTTP 请求时, 无法在脱离鼠标的情况下快速地填写内容, 而且你很难准确的判断按下 Enter 键以后究竟是换行还是确认当前输入的内容:
    image.png

  • 所有的数据源操作都是由 AppSmith 的代理服务器执行的, 意味着你不能像调试其他 Web 项目一样从 Chrome 控制台里直接找到你想要的 url.

    你需要打开 Chrome 的控制台, 选中 execute 请求并将 form data 设置为 view source 模式, 否则默认的 view parsed 模式下看到的都是二进制字段:
    image.png

  • JS 和 UI 的编辑器是两个互斥的页面, 导致没法像本地开发一样将 IDE 和浏览器放置在同一个窗口中进行分屏调试.

image.png

变通方案是在字段的 Computed Value 里将 JS 代码调试好, 再复制到 JS 对象里, 去引用这段代码:

  • 自带的 moment.js 没有安装中文本地化的配置, 虽然查询出来已安装了 en, zh, zh-cn 三种本地化配置, 但实际都是英语. 这也进一步引发了下一个问题.
    image.png

  • 无法从第三方库中导入任意内容. 例如: 无法从 dayjs/plugin/duration 中导入 duration 插件:
    image.png

  • 因为 JS 对象是跟页面绑定的, 所以无法很方便地创建多页面共享的工具类 JS 对象.

    可选的变通方案包括:

    • 把工具类复制到其他页面, 可能会导致潜在的工具类实现不一致/不同步的问题.
    • 花钱上企业版, 用 AppSmith 的 Packages 功能
    • 或者发布一个自定义的包到 NPM 上, 再通过安装第三方库的形式使用这个工具类.

结论

我们最终花了大概 1 周左右的时间, 一边翻文档学习 AppSmith 的基础知识, 一边弄脏双手进行实践, 最终发现 AppSmith 并没有想象中的那般美好: 目前来看 AppSmith 在前后端分离的场景下似乎并没有显著的优势, 相比接触过的几个 admin 模板项目只是多了一个拖拽式的布局生成功能, 反而是它的 JS 部分功能有限.

如果团队有比较熟悉的 admin 模板项目的话, 建议直接基于熟悉的项目进行二次开发, 自由度与灵活度要比 AppSmith 高出不少, 而且现有的前端 UI 框架也不比 AppSmith 自带的 UI 库要差.

相关内容

推广

欢迎大家尝试电脑微信多开小工具, 12 Mb 的小工具, 可以帮你在电脑上多开微信.

image.png

大家遇到什么使用问题或者有任何建议都可以私信我.

  • 27
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Appsmith 中实现登录,通常需要以下步骤: 1. 创建一个登录表单,包括用户名和密码输入框,以及登录按钮。 2. 在 Appsmith 中创建一个 API 请求,用于验证用户的登录凭证。 3. 将登录表单与 API 请求绑定,使用户可以通过表单提交登录凭证。 4. 在 API 请求中添加逻辑,验证用户凭证是否正确,并返回相应的结果。 5. 在应用程序中使用条件逻辑,根据 API 请求的结果显示成功或失败的消息。 下面是一个简单的示例: 1. 创建登录表单 在 Appsmith 中创建一个表单,包括用户名和密码输入框,以及一个登录按钮。你可以使用 Appsmith 的内置组件来创建这些元素。确保为每个输入框和按钮提供一个唯一的 ID。 2. 创建 API 请求 在 Appsmith 中创建一个 API 请求,用于验证用户的登录凭证。你可以使用 Appsmith 的内置请求组件来创建这个 API 请求。在请求中指定登录凭证的验证方式。例如,你可以使用用户名和密码的组合来验证用户。 3. 绑定表单和 API 请求 使用 Appsmith 的绑定功能,将登录表单中的输入框和按钮与 API 请求绑定。确保将输入框的值绑定到请求的适当字段。 4. 验证凭证并返回结果 在 API 请求中添加逻辑,验证用户凭证是否正确,并返回相应的结果。例如,如果用户提供的凭证无效,请求返回一个错误消息。 5. 显示结果 在应用程序中使用条件逻辑,根据 API 请求的结果显示成功或失败的消息。例如,如果用户登录成功,显示一个欢迎消息,否则显示一个错误消息。 这是一个简单的示例,你可以根据你的应用程序需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值