您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件开发专栏 > 开发技术 > 正文

无服务端编程服务推荐(前端必备)

发表于:2021-05-27 作者:小芋头君 来源:知乎

No Server Code Application(无服务端编程服务推荐)

写的文章太偏总是没人看,对大家其实帮助也不大,所以写点实用的吧,我相信此文介绍的服务是很多前端开发的痛点,应该也有不少人想象过这样的服务,但是可能因为方法或者其他原因,没有找到适合的服务,今天我就介绍两个比较成熟的,甚至可以在生产环境使用的无服务端编程服务。

问题

一句话总结,就是

有没有一个方案,可以简单的部署,然后不需要做任何的服务端开发,即可由前端开发从 JS 端直接向数据库做较为复杂的增删改查?

其实之前我在知乎上看到过这个问题,很多人其实会觉得这个是异想天开,这个问题背后有很多问题,例如:如何做复杂的查询(联合、分组等)?如何实现业务逻辑?如何分发事件给其他系统?如何保障安全(注入、权限等)?

不过,想过这个问题的前端不止你一个,其实不止是前端,服务端同学也非常痛恨增删改查,从很早,服务端框架中就内置各种 crud 脚手架,不过脚手架还是脚手架,还没有达到完全的”无代码“,对前端同学来说总是有成本的。

今天,我们就推荐两个服务,请各取所需。

传统的无服务代码

首先介绍一个思路比较传统的小服务,可能不能很好的使用于生产环境,支持的功能也有限,但是对于想快速开发一个demo,且没有元数据管理等诉求的同学,也不失是一个简单粗暴的解决方案,你只要给他喂一个数据库,他就可以暴露出各种 api 来。

不过这个小服务也有一些问题: 1. 安全方面,不是很能保障。 2. 查询条件的构建,有些麻烦,不如下一个方案方便。 3. 查询有一些隐含的限制,例如查询条数限制在1W以内,而且不可配置。 4. 分组汇总等能力有限,无法叠加其他字段计算。

讲一下优势:

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区
  2. 这个库大概有4300个star,相对来说还是比较热门的。
  3. 使用 nodejs 开发,安装非常简单,没有特别的依赖,这个算是一个优势。
  4. 支持单体、列表等查询,支持分组、关联表等。
  5. 支持直接输出某些图表需要的数据结构,并且可以自动生成x轴的分组等。

具体的功能大家可以去github直接查看,安装和配置也非常简单,基本不需要任何服务端和服务器运维经验。

Hasura,Instant GraphQL for all your data

这是第二个服务的标语,这是我在调研 GraphQL 相关生态后,我认为对 data to graphql 封装最彻底的服务,完全实现了三无:

  • 无代码元数据管理
  • 无代码增删改查
  • 无代码逻辑串联
  • 无代码事件分发

同时,他有些特别的优势:

  • 使用 graphql,社区流行的标准前端查询语法
  • 支持各种数据源、支持地理查询等各种查询姿势
  • 非常强大的可视化查询构建器,前端查询代码基本也不需要手写

简单介绍一下

查询构建器

这是我最看重的功能,虽然 graphql 官方就是有查询构建器的,但是其实没这么强大,hasura 是做了很多代码层面的封装,才实现了诸多类型的查询组合,直接上图:

 

 

 

这里是一张表,里面有地理信息,整个查询,通过左侧点一点,就可以构建出各种查询(以及删除、增加、更新等操作语法),我其实深深理解构建通用查询接口的参数有多么痛苦,所以这个 Query Builder 对我来说是莫大的福音。

Hasura 是个比较庞大的服务,他的部署是通过 docker 来部署的,所以需要你的服务器或者电脑,有 docker 和 docker-compose 的环境,然后部署就变的特别简单了,一个命令即可搞定。

安装后,启动服务,即可利用你配置的数据库信息自动生成所有表的 scheme 信息,及相应的增删改查方法,然后使用 query builder 构建你的请求即可,无需做任何代码的开发。

另外 hasura 支持一些围绕元数据的其他功能,例如多表组合(通过数据库的view实现),例如 Actions,用来编排和串联多个服务、内外服务、数据接口的,还有 Events,用来做数据的变更通知等。另外,hasura 也支持一些代码层面的使用方式,拥有一些脚手架命令可以自动生成 scheme 等,也可以自己写代码去使用 engine 和 scheme 等。

目前 hasura 的所有功能都支持 postgres 数据库,另外也有支持 mysql 的 beta 版,mysql版没有很多高级功能,但是基本的 query builder 和增删改查是完整的。

官方文档: Hasura GraphQL Engine Documentation | Hasura GraphQL Docs

Github 项目: https:// github.com/hasura/graph ql-engine/

mysql 版: MySQL preview | Hasura GraphQL Docs