让我们使用Airtable和Appgyver制作一个基本的Web应用程序。 无需编码技能。

我们将使用以下内容建立具有类别的产品目录:

· Airtable:用于构建数据的混合数据库服务(第1部分)

· Appgyver:构建应用程序的无代码平台(第2部分)

两种云服务都是用户友好的,并且有一个慷慨的免费计划。

注意:我与两家公司均无业务关系。 但是,欢迎您在此处注册Airtable进行推荐。

1.整理数据

1.1。 以电子表格格式准备数据

在Airtable中,我们将进行以下组织:

· 每个应用1个基础

· 每个对象(项目类型)有1个表格(表格)

· 每个表中的列数取决于对象属性

· 与每个对象拥有的项目数一样多的记录(行)

· 对象之间的关系也将由列定义

免费计划中,每个基准在Airtable中最多可以有1200条记录。

您可以在下面查看并复制示例数据:

与经典电子表格相比,Airtable的第一个优点是您可以引用其他表中的对象。

为您的产品和类别填充一些随机数据后,您需要:

· 为产品创建产品代码产品名称productImageUrl列

· 创建类别的ID名称说明

· 填写两个表的一些随机数据

· 确保产品代码和类别ID在第一列中

· 在"产品"表中,添加字段类型为"链接到类别的另一条记录"的新列

· 作为产品,只能有一个类别。 取消选中允许链接到多个记录

· 在"类别表"中执行相同的操作,这一次必须检查"允许链接到多个记录"

· 添加一个"查阅"列以链接到"产品"表中的"类别名称"

1.2。 将数据公开为API

Airtable的第二个优点是,它允许以JSON格式公开表,而JSON格式可以被第3个应用程序(例如Appgyver)轻松读取。

可以通过https://airtable.com/api访问API文档。

您可以在URL中检查show API密钥和您的基本ID。 这些信息将在以后有用。

不同的资源(表)使用不同的路由。 它们共享相同的基本URL https://api.airtable.com/v0/BASE_ID/RESOURCE_NAME。 对于每种资源,我们可以调用不同的方法:

· GET(全部):列出所有记录

· POST:创建记录

· GET(一个):检索一条记录

· PUT:修改记录

· 删除:删除记录

发出请求时,所有路由都提供JSON响应主体。

GET(一个),PUT和DELETE需要在URL后面附加一个/ id才能知道要处理的记录。

POST和PUT期望JSON请求正文,因为需要提供更多信息。

让我们看一下Airtable JSON主体格式:

它由以下组成:

· 由项目组成的[]之间的记录数组

· 项目是记录数组中用分隔的对象{}

· 每个项目都有一个Airtable id,createdTime和fields属性

· 每个字段都是一个对象{},由由,

· 每个项目属性都是""中的键值对,并由分隔:

2.构建您的无代码应用程序

现在您可以在Appgyver中构建应用程序了。 我们将建立:

· 具有搜索功能的产品列表

· 具有类别选择的创建/编辑产品部分

以下是实际的示例应用程序。 您也可以在这里检查。

2.1。 总览

Appgyver的免费计划没有任何限制。

让我们看一下Appgyver界面。

它的组织如下:

· 带有组件的左侧边栏

· 带有页面,主题,导航,数据的顶部菜单

· 页面视图和变量的切换器

· 具有组件属性和页面布局的右侧栏

· 具有逻辑工作流和组件的页脚部分

您可以通过在搜索栏中输入m3PAwm0d11bRKzbi6X0MQQ从侧边栏组件市场中导入示例项目。

对于我们的项目,该应用程序的"设备宽度"将设置为1024px。 但是您可以更改"缩放级别"以获得更好的查看。

2.2。 配置数据源

我们将在数据菜单中配置API路由,并添加一个名为Airtable_Products的新数据源REST API直接集成。

为了更快地进行设置,您可以使用代码pV5z-2GzSYHme-Y4f794gA从Market Search添加数据资源。

对于BASE,请输入您的Airtable API中的信息:

· 资源网址:https://api.airtable.com/v0/BASE_ID/Products

· 带有标签和密钥的HTTP标头授权和值承载TOKEN_KEY

忘记所有):

· 带记录的FillResponse键路径

· 您可以测试以验证您的API路由是否有效。

· 您可以从响应中设置架构,以便以后的数据Airtable_Products公开其属性。

您可以使用GET(ALL)路由对Airtable_Categories资源执行相同的操作。

对于GET(ONE),PUT和DELETE:

· 相对路径:/ {id}

· URL占位符:标签和密钥withid

是静态的,是可选的,应该为false。

您可以通过复制从GET(ALL)获取的ID进行测试。

对于POST,不需要其他配置。

2.2。 检查数据变量

数据和页面变量已经自动导入。 您可以通过切换到变量来检查它们。

请注意,GET(ALL)和GET(One)公开了两个不同的变量Airtable_products和Airtable_productSingle。

2.3。 检查页面布局和组件

组件组织在容器,行和单元格中。 拖放组件可在"页面视图"和"页面布局"中使用。 当然,您可以根据需要移动,删除和复制组件。

在右上方的边栏中,您有:

· 属性:用于编辑和预览数据的选项

· 样式:用于编辑间距和版式的选项

2.4。 检查页面,组件和数据逻辑

逻辑定义了运行期间发生的事件和动作。

事件(灰色)包括:

· 页面启动

· 可变的变化

· 点击组件

动作(蓝色)包括:

· 提出数据请求

· 从数据或组件设置变量

· 进行UI交互,例如导航到另一个页面或显示一个弹出窗口

动作必须直接或间接连接到事件才能发生。 它们是从Logic的左侧边栏中拖放的。

当您单击框架外部的任何位置时,都可以检查"页面逻辑"。

在页面加载时,我们发送数据请求以从Airtable中获取产品和类别,然后将它们加载到数据变量中。

让我们检查一下"创建"按钮点击组件的逻辑。

我们看到,在以下情况下,"创建产品"操作被阻止:

· 产品名称为空[1]

· 产品代码不是数字[2]

我们将IF逻辑组件与以下公式结合使用:

IS_EMPTY(pageVars.productName)[1]

MATCHES_REGEX(pageVars.productCode," [0–9]")[2]

IF组件在右侧有两个出口节点:

· 最高节点:如果公式返回true

· 底部节点:如果公式返回false

让我们检查数据变量逻辑的另一个示例。

无论请求是否成功,Airtable_Products数据资源每5秒都会刷新一次数据。 如果请求成功,则数据变量获取其输出。

2.5。 建立记录

要创建产品,我们需要使用以下方法设置表单容器:

· 连接到页面变量的输入字段,例如productName productCode productImageUrl

· 下拉列表会从Airtable_Categories数据变量中加载标签和值选项。 这使用公式:

MAP(Data.Airtable_Categories,{Lable:item.fields.Name,Value:item.id})

MAP函数将一个数组转换为另一个数组。 在这里,我们提取Name和id值,然后将键重命名为label和value以适应下拉语法

数据。 是页面中数据变量的前缀。

item表示数组中的当前项目。

.fields是我们的项目属性在Airtable JSON响应中的位置。

我们已经设置了输入组件,让我们检查发生魔术的位置的创建按钮:

· 使用以下记录属性为数据资源Airtable_Products创建记录操作:

{"Field":{"ProductCode":pageVars.productCode,"ProductName":pageVars.productName," _ category":[pageVars.productCategory]," productImageUrl":pageVars.productImageUrl}}

pageVars。 是您定义的页面变量的前缀。

pageVars.productCategory在[]之间,因为当期望的输入是数组时,它返回一个字符串。

您可以在下面检查Airtable API文档中单个对象的JSON POST请求格式是否正确。

2.7。 更改组件可见性

"创建"表单由"产品"列表中的"新建"按钮控制。 点击时:

· 将createDialog设置为true。 在容器高级属性可见性中设置此布尔值:

IF(pageVars.createDialog === true,true,false)

眼睛允许在预览期间设置值,从而显示或隐藏容器。

同样,"关闭"按钮将createDialog设置为false。

editDialog容器具有相同的功能。

2.8。 列出记录

为了列出所有元素,我们将:

· 将重复方式设置为Airtable_Products数据变量

· 选择主标签和次标签的子字段产品名称和类别名称

作为公式,语法为current.fields ["产品名称"]和current.fields._categoryName。

[""]用于带有单词间距的对象属性

current是一个前缀,用于指定Repeat with对象

要启用搜索,我们将:

· 将搜索输入值设置为页面变量searchText

· 设置页面变量结果,该结果将Airtable_Products过滤为搜索输入更改时searchText中包含的文本。

SELECT(data.Airtable_Products,CONTAINS(LOWERCASE(item.fields ["ProductName"]),LOWERCASE(pageVars.searchText))))

· 完成键入500ms后,必须添加一个Debounce逻辑组件才能开始操作,以防止出现滞后。

· 在项目列表中设置结果重复

· 将结果设置为数据。加载页面上的Airtable_Products可以查看每个产品

2.9。 编辑记录

要获得我们的产品列表,请在元素单击上打开详细信息视图,我们将:

· 点击记录时,将页面变量productId设置为current.id

· 将带有pageVars.productId的GET(一个)请求发送到Airtable_Products数据资源

· 将结果获取到数据变量Airtable_productSingle

· 通过将editDialog设置为true来打开编辑详细信息视图

然后,我们将详细信息视图连接到数据:

· 将productName productCode productImageUrl设置为其各自的Airtable_productSingle.fields.xxx数据变量。 这种数据绑定意味着它既可以检索数据也可以更新数据。

· 在侧面单元格中将productImageUrl显示为图像

· 点击时将页面变量productCategory保存到组件属性valueDropdown字段(选定值)。

· 在按钮单击上更新记录,以获取ID为pageVars.productId的Airtable_Products资源,并在下面记录属性:

{"Field":{"":data.Airtable_ProductSingle.fields ["ProductCode"],"ProductName":data.Airtable_ProductSingle.fields ["ProductName"]," _ category":[pageVars.productCategory], " productImageUrl":data.Airtable_ProductSingle.fields.productImageUrl}}

您可以在下面查看Airtable API文档中单个对象的JSON PUT请求格式是否正确:

注意:Appgyver目前不支持PATCH方法。

3.从这里去哪里

Appgyver提供了我们未涵盖的更多可能性,例如:

· 导出代码以托管在您自己的服务器上

· 与他人共享组件

· 构建Android和iOS应用

· 添加自定义JavaScript

要进一步使用此示例应用程序,您可以:

· 尝试其他组件,例如复选框

· 创建多个页面并在它们之间导航

· 通过样式和主题使您的应用更加美观

· 添加用户登录和权限

· 玩图表和公式

· 从可用的API连接到数据

· 在Airtable模板目录中探索用例

调试无代码的一些其他技巧:

· 在将公式添加到组件之前,先在数据源测试中测试您的请求

· 在操作后添加警报逻辑以检查您的操作是否成功

· 如果您的值选项似乎不可用,请使用公式

· 如果公式不起作用,请尝试重新配置组件或路线

· 检查Chrome控制台中的Javascript错误CTRL + Shift + I

· 在Appgyver中激活调试器以检查数据和页面变量的当前状态

· 对某些API的请求可能导致无法获取CORS策略。 您需要单独的Chrome实例进行开发:

" [Chrome路径] chrome.exe" —禁用Web安全性—禁用gpu —用户数据目录=〜/ chromeTemp

除了出色的文档,还请查看Appgyver论坛以获取答案。

请随时提出您的问题,社区和支持团队非常友好且反应活跃!

(本文翻译自Quang Tran的文章《Build a no-code application in 60 min》,参考:https://medium.com/productsandbox/build-a-no-code-application-in-60-min-a7733ab10d42)

wpf指定的元素已经是另一个元素的逻辑子元素。请先将其断开连接。_在60分钟内建立一个无代码应用程序...相关推荐

  1. 机器人坐标系建立_如何在30分钟内建立一个简单的搜索机器人

    机器人坐标系建立 by Quinn Langille 奎因·兰吉尔(Quinn Langille) 如何在30分钟内建立一个简单的搜索机器人 (How to Build A Simple Search ...

  2. 如何在 5 分钟内建立一个数据驱动的新型冠状病毒肺炎应用程序

    在开始教程前,我们先来了解一个由加拿大 IVADO(Institute for Data Valorization)资助的项目: COVID-19 Data Hub (新型冠状病毒肺炎数据中心),它是 ...

  3. vr设备应用程序_在15分钟内构建一个VR Web应用程序

    vr设备应用程序 在15分钟内,您可以开发一个虚拟现实应用程序,并在Web浏览器,VR头盔或Google Daydream上运行它. 关键是A-Frame ,这是Mozilla VR Team构建的开 ...

  4. 愉快的舞会c++_如何在5分钟内建立一个令人愉快的加载屏幕

    愉快的舞会c++ First, here is what we will build. Set your timer! 首先,这是我们将要建立的. 设置您的计时器! Does this look fa ...

  5. 语音库构建_在10分钟内构建一个多功能语音助手

    语音库构建 Nowadays people don't have time to manually search the internet for information or the answers ...

  6. 用python做预测模型的好处_如何用Python在10分钟内建立一个预测模型

    匿名用户 1级 2017-01-01 回答 预测模型的分解过程 我总是集中于投入有质量的时间在建模的初始阶段,比如,假设生成.头脑风暴.讨论或理解可能的结果范围.所有这些活动都有助于我解决问题,并最终 ...

  7. 父元素a标签的href默认行为以及子元素绑定的click事件的响应之间存在影响

    原文地址 背景 开发过程中遇到问题,简单写个demo 运行环境为Chrome 68 描述一下这个问题,当a标签内部存在嵌套时, 父元素a标签的href默认行为以及子元素绑定的click事件的响应之间存 ...

  8. bootstrap设计登录页面_前端小白如何在10分钟内打造一个爆款Web响应式登录界面?...

    对于前端小白(例如:专注后端代码N年的攻城狮),自己编写一个漂亮的Web登录页面似乎在设计上有些捉襟见肘,不懂UI设计,颜色搭配极度的混乱(主色,辅助色,配色,色彩渐变,动画效果等等,看起来一堆乱七八 ...

  9. 开发平台之美:10分钟内实现一个销售订单功能的增删改查

    IT技术发展了这么多年,早就应该抛弃那些copy&paste的工作了,毫无成就,毫无趣味,毫无好感.这直接催生了一大批快速开发平台的崛起,下面的视频讲述的就是通过一个开发平台如何在10分钟内实 ...

最新文章

  1. 浅析网站建设实战经验下的通用原则
  2. php glod,基于PHP的黄金价格示例代码-六派数据
  3. windows 64 oracle sga,oracle 10g for windows sga区最大多少
  4. 文件源码读取 php伪协议,include(文件包含漏洞,php伪协议)
  5. delphi 演示数据路径
  6. sqlserver 分组合并列_【双11秒杀】帕克96分阿根廷一级名庄鼎尖单一园马尔贝克...
  7. php文档头,头部文档(header.php)
  8. iOS 获取通讯录权限和权限提示弹框
  9. mac电脑如何配置mysql环境变量
  10. IDEA:Windows 下载安装 IDEA 详细教程
  11. 可道云kodexplorer隐藏免费版按钮及简单修改使用方法
  12. win10 安装 MYSQL5.7.21 解压版 教程
  13. python中一元二次方程的判别式_【Python算法作业】解一元二次方程
  14. python编写函数求和_Python定义函数实现累计求和操作
  15. access orcad 数据库_cis(orcad)本地元件access数据库创建跟加载方法详解.doc
  16. php幸运扭蛋机抽奖程序源码
  17. rolling()函数
  18. cad能整体比例缩小吗_如何用cad将图整体比例放大
  19. ATL之深入浅出书评(潘爱民)
  20. 五个了解自己天赋优势的分析工具(三)DISC性格测评

热门文章

  1. Seaborn可视化图像调整图像大小(figure size)方法实战(Adjust the Figure Size)
  2. R使用glm构建logistic回归模型
  3. 期望最大EM(Expectation Maximum)算法是什么?为什么有时候不用梯度下降而是用EM算法
  4. 3d 自动生成物体_Adobe发布3D建模、AR内容生成应用Scantastic
  5. 查看服务器CPU的个数、CPU的核数、多核超线程数
  6. 实验四 数据库SQL语言基础编程
  7. yolo如何降低loss_从未看过如此通俗易懂的YOLO系列
  8. Python-Numpy(3)矩阵基本操作
  9. 目标检测---Segmentation Is All You Need
  10. 我收集的网上公开的免费电子书