MemFire Cloud让静态托管动起来!

静态托管

我们最常接触到的静态托管是github pages,它的常见工作模式是在github上创建一个仓库,使用hexo类的工具初始化仓库,编写markdown文件,生成静态页面,推送到github上完成页面更新,比如https://blog.nimblex.cn/就是这样一个静态的网站。
在这里插入图片描述

局限性

原生静态托管的局限性在于它的更新通常需要重新将markdown文件编译程静态html,然后再发布到托管站。这是一个重新构建的过程,对于非程序员群体来说是有门槛的。

常见动态web网站

一般用户通常会使用类似csdn、新浪博客之类的站点来构建自己的博客,用户只需要通过一个富文本编辑器编辑文章内容,提交即可发布。架设这样一个网站,通常需要后台支持,例如需要后台提供新增、删除、查询博客的接口,通常还需要提供登录注册鉴权等功能。这已经超出传统静态托管的范围了。

分析下动态web网站相对于静态网站有哪几点特殊能力

  • 包含一个后台服务例如以SpringBoot编写的服务、以Flask编写的服务,这些服务提供一系列接口供前端调用
  • 包含一个数据库,这个数据库存储网站内容、配置信息
  • 可能会包含一些静态文件或者对象存储服务用来存储图片

一般需要维护这样一个动态网站需要前端开发、后台开发或者一个全栈开发工程师的配合,即需要前后端的能力。另外,要架设Spring或者Flaks服务,需要提供相应的运行时能力,换言之需要租服务器,像github pages这种静态托管站是不提供这个能力的。

MemfireCloud的增强

MemfireCloud是一个助力快速开发的云平台可以轻松构建小程序、Web网站、移动应用。

MemfireCloud可以提供什么

MemFire Cloud提供哪些能力呢?目前我关注如下这些:

  1. 云数据库
  2. 静态托管服务
  3. 对象存储(兼容S3)
  4. 提供一个supabase JS sdk ,可以访问上述云数据库、对象存储等能力。注意这是一个JS sdk
  5. 内置登录注册、用户管理等功能

王炸组合

我们看下上文中常见动态网站需要的能力

  1. 接口能力
  2. 数据库
  3. 静态文件存储服务

在MemfireCloud平台上,这些通通都可以实现,而且是仅仅通过html + js就可以实现。放开脑洞,再加上静态托管,我们就可以直接构建动态网站了,不要SpringBoot、不要Flask、不要NodeJS,之要MemfireCloud就够了!!!

让静态托管动起来

我就用MemfireCloud构建并托管了一个类似Flomo的web应用(http://cmsrcpa5g6h1f588b1j0.app.memfiredb.cn/),这个应用其实是一个思绪整理工具。这个应用目前的主要功能是:

  • 用户可以在后上角输入想法内容,打上标签(#tag1 xxx这种方式),保存想法
  • 同类标签会进行分归类
  • 支持回收站
  • 支持多用户注册登录访问

大家从域名可以看到,这是一个公网服务且利用了Memfire Cloud的静态托管服务,但是我们完全看不出来它是一个静态网站,它真的很动态!
在这里插入图片描述

它是怎么实现的

完全不像是github pages中常见的hexo等静态博客工具,这个网站是用React开发的单页面应用,在开发的过程中我完全就是把它当作一个动态应用来开发的,antd、Echarts之类的组件库直接用起来。下面我简要介绍其中的一些实现。

数据库定义

数据库定义直接使用MemfireCloud的数据库编辑页面进行
在这里插入图片描述

增删改查

使用Supbase JS sdk可以让js直接操作数据库,这块大家如果感兴趣可以通过文中链接查看他们的官网教程,使用起来也是非常简单的,非常类似于Python的SQLalchemy、Java的Mybatis等ORM框架,这里我以新增为例。

thoughts是定义的数据表,直接使用js api往库里面加数据。其他的操作也是类似的。

        const {data, error} = await supabase
                .from('thoughts')
                .insert(thoughts)
                .select('id')

静态托管

网站开发好了,需要将其发布到线上,也是很简单,直接将React打包并压缩成ZIP文件,上传到MemfireCloud即可访问在线网站了。
在这里插入图片描述

思考

MemfireCloud赋予开发者一种能力

可以一站式开发、部署应用,特别是给予前端同学一种摆脱后端同学依赖的能力,不需要学习后端开发语言,就可以成为一名全栈开发工程师,这是MemfireCloud平台对每个前端开发工程师的赋能!这个意义是非常深远的,感谢MemfireCloud团队

复杂的工作通过pg function来实现,倒逼我们思考数据库如何更高效的使用

例如要实现基本的统计功能:
在这里插入图片描述

数据分布在两个表里面,如果我用java实现,那么按惯性我就会写三条sql语句,然后用JDBCtemplate执行三次,合并结果数据作为接口返回。但是如果这个场景放在MemfireCloud上,就需要调用三次接口,这样很浪费资源网络资源。这反而暴露了另外一个问题:我们日常浪费了很多数据库请求。

反过来使用Pg Function,不管是Java调用还是MemfireCloud调用只需要一次数据库请求。实现如下:

create or replace function overview_data(userid uuid)  
returns table(ts_count integer, tag_count integer, days integer)
as $$
declare
    ts_count integer := 0;    
    tag_count integer := 0;
    min_date date;
    max_date date;
    days integer := 0;
    res record;
begin
    select count(*) into ts_count from thoughts where user_id = userid;
    select count(*) into tag_count from tag where user_id = userid; 
    select DATE_TRUNC('day', min(created_at)) into min_date from thoughts where user_id = userid;
    select DATE_TRUNC('day', max(created_at)) into max_date from thoughts where user_id = userid;
    IF max_date IS NOT NULL then
        days := max_date - min_date + 1 ;
    END IF;
    return query select ts_count, tag_count, days;
end;
$$ language plpgsql;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/528018.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ViSNet:用于分子性质预测和动力学模拟的通用分子结构建模网络

编者按:尽管几何深度学习已经彻底颠覆了分子建模领域,但最先进的算法在实际应用中仍然面临着几何信息利用不足和高昂计算成本的阻碍。为此,微软研究院科学智能中心(Microsoft Research AI4Science)的研究员们提出了通用…

OCR常用识别算法综述

参考:https://aistudio.baidu.com/education/lessonvideo/3279888 语种:常用字符36与常用汉字6623,区别。 标注:文本型位置/单字符位置,后者标注成本大 挑战:场景文字识别:字符大小、颜色、字体…

【经典算法】LCR187:破冰游戏(约瑟夫问题,Java/C/Python3/JavaScript实现含注释说明,Easy)

目录 题目思路及实现方式一:迭代模拟(用链表模拟这个游戏)思路代码实现Java版本C语言版本Python3版本 复杂度分析 方式二:数学迭代思路代码实现Java版本C语言版本Python3版本 复杂度分析 方式三:递归思路代码实现Java版…

C语言 函数——函数的定义、调用和参数传递

目录 模块化编程(Modular Programming) 函数的分类 函数的定义 使用函数编程的好处 函数调用的基本方式 函数调用时的数据传递 函数调用的过程 main函数的特殊性 大话三国 分而治之 如果将main()函数比作诸葛亮&#xff…

并行超算云计算使用步骤完整流程详情

本文目录 一、将项目传入并运云。二、创建项目的虚拟环境三、编辑run.sh脚本四、提交作业五、查看作业输出六、查看提交的作业号七、结束作业 一、将项目传入并运云。 二、创建项目的虚拟环境 打开终端 使用conda创建:conda create -n 环境名 python3.8查看conda下…

消息队列MQ的介绍和docker安装MQ

一、什么是mq? MQ全称 Message Queue(消息队列),是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信,解耦。 二、常见的mq产品 RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMq RabbitMQ: One broker …

LINUX 下IPTABLES配置详解

-t<表>&#xff1a;指定要操纵的表&#xff1b; -A&#xff1a;向规则链中添加条目&#xff1b; -D&#xff1a;从规则链中删除条目&#xff1b; -i&#xff1a;向规则链中插入条目&#xff1b; -R&#xff1a;替换规则链中的条目&#xff1b; -L&#xff1a;显示规则链中…

【算法详解】二分查找

1. 二分查找算法介绍 「二分查找算法&#xff08;Binary Search Algorithm&#xff09;」&#xff1a;也叫做 「折半查找算法」、「对数查找算法」。是一种在有序数组中查找某一特定元素的搜索算法。 基本算法思想&#xff1a;先确定待查找元素所在的区间范围&#xff0c;在逐步…

界面组件DevExpress WinForms v23.2 - 功能区、富文本编辑器功能升级

DevExpress WinForms拥有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序&#xff0c;无论是Office风格的界面&#xff0c;还是分析处理大批量的业务数据&#xff0c;它都能轻松胜…

软考 系统架构设计师系列知识点之云原生架构设计理论与实践(16)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之云原生架构设计理论与实践&#xff08;15&#xff09; 所属章节&#xff1a; 第14章. 云原生架构设计理论与实践 第3节 云原生架构相关技术 14.3.3 无服务器技术 1. 技术特点 2. 技术关注点 &#xff08;1&#xff…

四川一体化污水处理设备厂家如何挑选

如果您想寻找一家可靠的四川地区的污水处理设备厂家&#xff0c;以下是一些挑选的关键要素可以考虑&#xff1a; 1. 信誉和口碑&#xff1a;了解该厂家在业界的声誉和客户的评价&#xff0c;可以通过查阅相关的评论和建议&#xff0c;或者咨询其他业内人士来了解。 2. 技术实力…

数据生成 | Matlab实现基于SNN浅层神经网络的数据生成

数据生成 | Matlab实现基于SNN浅层神经网络的数据生成 目录 数据生成 | Matlab实现基于SNN浅层神经网络的数据生成生成效果基本描述模型描述程序设计参考资料 生成效果 基本描述 1.Matlab实现基于SNN浅层神经网络的数据生成&#xff0c;运行环境Matlab2021b及以上&#xff1b; …

【接口自动化】参数化替换

在做接口测试时&#xff0c;除了测单个接口&#xff0c;还需要进行业务链路间的接口测试 比如[注册-登陆]需要token鉴权的业务流 当我们用使用postman/jmeter等工具时&#xff0c;将注册接口的一些响应信息提取出来&#xff0c;放到登陆接口的请求中&#xff0c;来完成某个业务…

紫叶写作能用吗 #微信#知识分享

紫叶写作是一款非常好用、靠谱的论文写作工具&#xff0c;它旨在帮助用户快速高效地完成论文写作任务&#xff0c;并提供查重降重的功能。它不仅操作简单方便&#xff0c;而且功能强大&#xff0c;能够有效提高论文写作的效率和质量。 首先&#xff0c;紫叶写作提供了丰富的模板…

CKA 基础操作教程(五)

Kubernetes Ingress 理论学习 Ingress 提供从集群外部到集群内服务的 HTTP 和 HTTPS 路由。 流量路由由 Ingress 资源所定义的规则来控制。 Ingress 资源示例&#xff1a; apiVersion: networking.k8s.io/v1 # 指定 Kubernetes 中使用的 API 版本 kind: Ingress # 指定对象…

matlab使用教程(38)—傅里叶变换

1基本概念 傅里叶变换是一个数学公式&#xff0c;用于将按时间或空间采样的信号变换为按时序或空间频率采样的相同信号。 在信号处理中&#xff0c;傅里叶变换可以揭示信号的重要特征&#xff08;即其频率分量&#xff09;。 对于包含 n 个均匀采样点的向量 x &#xff0c;其…

为说阿拉伯语的国家进行游戏本地化

阿拉伯语是由超过4亿人使用的语言&#xff0c;并且是二十多个国家的官方语言。进入这些国家的市场并非易事——虽然他们共享一种通用语言&#xff0c;但每个国家都有自己独特的文化&#xff0c;有自己的禁忌和对审查的处理方式。这就是为什么视频游戏公司长期以来都远离阿拉伯语…

mac-m1pro芯片编译java项目慢且发热严重问题

目录 一、背景二、排查三、解决四、效果以及结果展示五、总结 一、背景 使用idea编译项目等操作&#xff0c;经常性发热严重&#xff0c;并且时间慢。直到昨天编译一个项目用时30分钟&#xff0c;电脑温度很高&#xff0c;并且有烧灼的味道&#xff0c;于是有了此篇文章。 二、…

Linux应用开发(3):Linux时间操作(time、mktime、localtime等)

1. 简述 在Linux系统中&#xff0c;时间操作函数是编程中经常使用的一部分&#xff0c;它们允许程序获取和设置系统时间&#xff0c;以及对时间进行各种处理。以下是一些常用的时间操作函数的详细介绍。 2. 时间操作 &#xff08;1&#xff09;time(): 获取1970年1月1日以来的…

TalkingData——Unity应用开发中集成统计分析工具

第一步:帐号注册 官方网站:TalkingData-移动.数据.价值 第二步:创建应用查看 appid 可以进入网站注册,注册好以后就可以创建应用 创建好应用后,点击 应用管理-》基本信息就可以查看自己的 AppID 第三步:申请对应平台的sdk 接下来就是申请sdk 这里是申请sdk的网站…