使用xxxbase应付CRUD后端任务
很多的后端CRUD开发任务都是毫无意义的, 如果使用firebase/supabase/pocketbase这些工具快速应付这些任务才是重要的.
如果是一位研究生, 在面对导师的垃圾横向的时候, 这种工具会起到很好的帮助.(我们的目的是让代码可以正常运行)
如果希望快速开发DEMO, 展示项目效果也可以使用.
面对全栈开发者, 我想学***xbase是很好的一个提升效率的过程.
supabase
由微软开源的firebase替代方案, 项目地址是 https://github.com/supabase/supabase/
采用typescript编写实现, 支持的SDK种类丰富, 稳定适合企业使用. 功能稳定, 文档丰富.
pocketbase
由非盈利开发, 使用GO编写的, 项目地址 https://github.com/pocketbase/pocketbase/ . 核心是单个文件实现需要的后端CRUD功能(也就是简单易用, 但是面对大项目可能存在问题)
这已经是一个拥有40+k stars的项目, 具有规模
数据集采用sqlite(并且没有计划适配别的数据库)
- 目前支持的SDK较少, 只有JS和Dart的支持.
- 模板版本还是0.xxx, 还没有到1.0正式版本, 也就是说, 功能不够稳定, 不适合企业使用.
使用pocketbase解决CRUD任务
pocketbase的核心是一个可执行文件使用全部功能, 小巧(但是目前还没有稳定版本, 所以谨慎使用, 目前不适合生产环境)
即使是docker image也只有50MB大小
构建镜像
使用docker build -t pocketbase .构建镜像
FROM alpine:latest
ARG PB_VERSION=0.26.6
RUN apk add --no-cache \
unzip \
ca-certificates
# download and unzip PocketBase
ADD https://github.com/pocketbase/pocketbase/releases/download/v${PB_VERSION}/pocketbase_${PB_VERSION}_linux_amd64.zip /tmp/pb.zip
RUN unzip /tmp/pb.zip -d /pb/
# uncomment to copy the local pb_migrations dir into the image
# COPY ./pb_migrations /pb/pb_migrations
# uncomment to copy the local pb_hooks dir into the image
# COPY ./pb_hooks /pb/pb_hooks
EXPOSE 8080
# start PocketBase
CMD ["/pb/pocketbase", "serve", "--http=0.0.0.0:8080"]
这是官方提供的dockerfile, 可以去官方的文档里面查看
运行
使用docker run -it --rm -p 8080:8080 pocketbase:latest运行项目

注册管理员
点击日志中出现的网址, 注册对应的管理员账号

注册成功之后会自动跳转管理界面

目前在管理用户界面, 不存在用户

创建用户
在管理面板就可以创建用户.
使用SDK
注册用户
这里使用JS的SDK为例子进行演示.
import PocketBase from 'pocketbase';
const pb = new PocketBase('http://0.0.0.0:8080');
// example create data
const data = {
"password": "12345678",
"passwordConfirm": "12345678",
"email": "test@example.com",
"name": "test"
};
const record = await pb.collection('users').create(data);
// (optional) send an email verification request
// await pb.collection('users').requestVerification('test@example.com');
注册用户的本质是增加一个新的记录

成功增加一个
登陆
为什么需要登陆? 因为有些操作需要在鉴权的基础上进行.(例如对于用户的查询操作)
import PocketBase from 'pocketbase';
const pb = new PocketBase('http://0.0.0.0:8080');
...
const authData = await pb.collection('users').authWithPassword(
'YOUR_EMAIL',
'YOUR_PASSWORD',
);
// after the above you can also access the auth data from the authStore
console.log(pb.authStore.isValid);
console.log(pb.authStore.token);
console.log(pb.authStore.record.id);
// "logout"
pb.authStore.clear();
查询
以下是一个针对用户的查询操作
- 注意这个操作需要先登陆用户.
// fetch a paginated records list
const resultList = await pb.collection('users').getList(1, 30, {
filter: 'name="test"',
});
console.log(resultList);

查询成功

这就是数据表的规则
可以设置仅超级用户可用
更新和删除
都需要使用record id进行操作.
使用supabase解决CRUD任务
这里使用supabase作为样例来解决增删查改的任务, 因为supabase生态完善, 功能稳定, 更加适合.
- 开摆了, supabase是怎么做到光代码就有1G的, 我都不敢想下载了node_modules黑洞之后会变成什么样, 有那么一点点歧视TS后端了.
总结
针对简单的CRUD任务, 并且如果只需要能跑, 这是真的好用.
FQ&A
Q: 使用这些工具进行开发的时候, 开发的自由度是否存在问题?
A: 明显存在问题, 但是, 自由度换来了90%任务开发的便捷
Q: 是否存在性能问题? 例如supabse是使用TS编写的后端服务.
A: 首先, 一般项目不会面对高并发的场景, QPS撑死不超过10的情况下, 性能问题无关紧要, 开发便捷才重要, 先完成任务. 实际上也不存在性能问题, 这些工具由各位大佬实现, 面对绝大多数场景不存在性能问题.(性能问题不重要)
使用xxxbase应付CRUD后端任务的更多相关文章
- 【Netcore】使用 Magic生成器 ,零代码实现CRUD - HTTP REST 之接口
软件介绍: Magic是一个CRUD后端生成器,内置于ASP.NET内核中.它的目的是让你“神奇地”做一些无聊的事情,通过使用自动化技术,创建80%的CRUD端点,自动包装MySQL或MS SQL S ...
- Elemen ui&表单 、CRUD、安装
ElementUI表单 Form表单,每一个表单域是由一个form-item组件构成的,表单域中可以放置各种类型的表单控键,有input.switch.checkbox 表单的绑定form 内容分别是 ...
- AppFuse3.5对接oracle数据库
AppFuse是一个使用Java语言开发web应用系统的集成框架.java开发人员最头痛的事情就是面对大量的框架不知该如何选择.这些框架性能如何,兼容性如何等等都需要筛选比较.Appfuse作者Mat ...
- 一系列令人敬畏的.NET核心库,工具,框架和软件
内容 一般 框架,库和工具 API 应用框架 应用模板 身份验证和授权 Blockchain 博特 构建自动化 捆绑和缩小 高速缓存 CMS 代码分析和指标 压缩 编译器,管道工和语言 加密 数据库 ...
- Github上优秀的.NET Core项目
Github上优秀的.NET Core开源项目的集合.内容包括:库.工具.框架.模板引擎.身份认证.数据库.ORM框架.图片处理.文本处理.机器学习.日志.代码分析.教程等. Github地址:htt ...
- 【转载】Github上优秀的.NET Core项目
Github上优秀的.NET Core项目 Github上优秀的.NET Core开源项目的集合.内容包括:库.工具.框架.模板引擎.身份认证.数据库.ORM框架.图片处理.文本处理.机器学习.日志. ...
- Github上优秀的.NET Core开源项目的集合
内容包括:库.工具.框架.模板引擎.身份认证.数据库.ORM框架.图片处理.文本处理.机器学习.日志.代码分析.教程等. Github地址:https://github.com/jasonhua95/ ...
- 若依管理系统RuoYi-Vue(三):代码生成器原理和实战
历史文章 若依管理系统RuoYi-Vue(一):项目启动和菜单创建 若依管理系统RuoYi-Vue(二):权限系统设计详解 本篇文章将会讲解ruoyi-vue系统下代码生成器的使用.原理分析以及将这部 ...
- 前后端分离crud(跨域问题)讲解
1 前后端分离 1.1 后端 ssm+maven 多模块 swagger 文档描述(代码拷贝过来,就可以生成了,https://www.cnblogs.com/wings-xh/p/11991511. ...
- Web前后端分离开发(CRUD)及其演变概括
今天学习了前后端分离开发模式又从网上查了一些资料就写了一篇博客分享: 一.为什么分离前后端 1.1早期开发 1.2后段为主mvc模式 1.2.1Structs框架介绍 1.2.2Spring mcv开 ...
随机推荐
- 探索未来之路,激发AI创新活力!“天翼云息壤杯”高校AI大赛北京区域赛开赛!
近年来,人工智能发展速度之快.辐射范围之广令人瞩目.今年的<政府工作报告>提出,深化大数据.人工智能等研发应用,开展"人工智能+"行动.AI充满了无限可能和潜力,未来还 ...
- 一种面向混合云平台基于LSTM预测模型的资源池配额方法。
本文分享自天翼云开发者社区<一种面向混合云平台基于LSTM预测模型的资源池配额方法.>,作者:l****n 基于用户的历史配额申请情况和实际资源使用情况组成数据集搭建LSTM时序预测模型. ...
- kafka的基本使用(更新中)
kafka的安装路径:/usr/local/Cellar/kafka/3.2.0 kafka的配置路径:/usr/local/etc/kafka 开启zookeeper cd /usr/local/C ...
- 同步工具-Oceanus打通mysql到Iceberg
一.服务配置 已配置好gt_oneline_2,其它集群还需按照下面方式特殊配置 1.需要腾讯Oceanus同学在后端修改高途flink集群配置core-site.xml文件,增加如下配置.只能绑定一 ...
- 旅行商问题(TSP)概述
旅行商问题(TSP)概述 1. TSP问题的复杂性 定义:旅行商问题(Traveling Salesman Problem, TSP)是给定一系列城市及其之间的距离,要求找到一条最短路径,使得旅行商从 ...
- 一文详解 MySQL 中的间隙锁
博客:https://www.emanjusaka.com 博客园:https://www.cnblogs.com/emanjusaka 公众号:emanjusaka的编程栈 by emanjusak ...
- 【译】HTTP 文件更新了请求变量
许多用户都要求在 Visual Studio 的 HTTP 文件中添加对请求变量的支持.使用请求变量,您可以发送 HTTP 请求,然后在从 HTTP 文件发送的任何后续请求中使用响应或请求中的数据.我 ...
- C++ 创建进程的方法
1. C++中创建进程的代码示例: // ProcessDemo.cpp : 此文件包含 "main" 函数.程序执行将在此处开始并结束. // #include<windo ...
- 【Unity】热更新原理与Xlua配置
[Unity]热更新原理与 Xlua 配置 热更新 直接理解即是让代码可以像资源包一样被运行时更新.当然它其实还一个名称叫热修复,即实现不重新打包项目也能把 Bug 修好,这也正是它常用的地方. 原理 ...
- redis bind protected-mode
概要 redis bind.protected-mode 配置 安装并启动 yum install -y redis systemctl enable --now redis # 使用 redis-s ...