开发 | 无需后端编码,10 分钟教你实现一个朋友圈小程序

作者:梁烨鹃

这是一篇简易版朋友圈小程序的快速开发教程。要实现的功能有:

  • 所有人都可以发布内容。
  • 只有发布者可以删除自己发布的内容。
  • 所有人都可以看到其他人发布的内容。
  • 所有人都可以对内容进行评论。
  • 只有发布者可以可以删除评论。
  • 所有人都可以看到其他人发表的评论。

虽然目标功能的业务逻辑并不复杂,但其背后需要一套靠谱的权限控制系统,也意味着需要一个完整的后端服务系统来支持运行。

为了免去搭建、维护后端服务器的麻烦,我们选择使用知晓云(cloud.minapp.com)进行开发。

除了因为可以省去后端服务器的开发外,另一个选择它的原因,是它的数据表 ACL(Access control list,访问权限控制)可以实现目标功能的权限控制操作

我们只需要将获取到的数据正确渲染到页面,即可完成目标小程序的开发,十分方便。

了解 ACL 控制系统

工欲善其事,必先利其器。在开始小程序开发之前,我们先来了解一下知晓云的 ACL 控制系统。

进入知晓云控制后,点击「应用」,在「数据库」模块里,点击「创建数据库」,就能看到 ACL 控制面板。

在创建数据表时,可以设置该数据表的表录入权限,以及该表中数据行的默认权限。若权限勾选了用户组则必须选择拥有权限的用户组。

需要注意的是,用户组需要在用户模块中提前设置好才能进行选择。

设置好了默认数据行的权限后,该表的所有数据行都继承该默认权限。若你需要对某些记录进行权限修改,可以选择要修改的数据行,点击编辑,即可进行权限修改

若你需要对默认数据行权限进行修改,对数据表点击编辑即可打开权限修改面板。修改的默认数据行权限,仅对修改后新增的数据生效,对已存在的旧数据无效。

设置好 ACL 权限后,只需要调用 BaaS SDK 的接口即可以方便进行数据库的操作

关于数据库的操作,我们之前已发布了详细的教程,这里就不再赘述。

了解的工具的使用方法之后,我们开始小程序的开发。

数据表创建

首先我们为内容发表、评论发表分别创建数据库表。权限设置如下:

  • 所有人都可以发表内容或者对某一条内容发表评论,所以数据表的录入权限我们设置为所有人。
  • 所有人都可以看到别人发表的内容,数据行的默认权限读权限设置为所有人。
  • 但是只有发布者可以删除发表的内容,数据行的默认写权限设为创建者。
  • 记录评论的数据表我们也做一样的设置。

为了实现目标小程序的功能,内容表 message 的自定义字段有:text(内容)、author(内容发布者)、avatar_url(内容发布者的头像地址);评论 comment 表的自定义字段有:message_id(内容 ID)、author(发布者)、text(评论内容)。

需要注意:知晓云创建的数据表会默认帮你创建几个字段,其中有一个 created_by 创建者,会自动帮你记录微信接口返回的用户 ID(userInfo.id)。

我一开始并没有留意到这个细节,在表中自己维护了一个 wx_id 字段,但是没有考虑好数据获取稳定性的问题,在某种情况会传入失败,还耗费了一些时间处理这个问题。最后发现这部分数据知晓云已经帮你处理好了。

小程序开发

在微信开发者工具创建一个新的项目,它会默认自动帮你新建一个小程序 demo。

app.js 里已经有完整的获取用户信息的代码,可以直接用,在 onLaunch 中引入 BaaS SDK 即可。

index.wxml 里进行页面布局开发,小程序的框架语法与主流的框架的语法还是基本一致的,除了提供一些基本的组件,没有太多的标签,很容易上手。

如评论的页面结构:用 block 标签进行条件渲染控制,应用列表渲染进行评论内容的渲染。以 data- 为前缀的自定义数据可以在监听事件中以 e.target.dataset 获取。

由于在创建数据表时已设置好了 ACL 权限,我们只需要应用 BaaS SDK 进行数据获取、查询、删除等操作即可,不需要对数据进行二次处理。

如在获取内容列表、评论列表数据的操作中,根据 SDK 的文档进行操作,不需要传入特定的查询条件。获取所有的内容数据、是否可以读出数据行的权限操作,都可以交给知晓云的 ACL 控制。

若数据行的 ACL 控制改为创建者可读,则除创建者外其他用户拉取到不到该条数据。

同时需要注意的是,我们是通过获取内容数据,根据内容 ID 再去查询对应的评论数据,该过程是异步的

我在这里的做法是,将获取到的内容数据传入到获取评论的方法中,待评论数据获取成功后再一并通过 setData 更新数据渲染。若不是同时更新内容、评论的数据,会造成评论数据渲染失败。

新增数据、删除数据的操作根据 SDK 的文档写即可,这里不详述。

至此我们的小程序已开发完毕。效果如下:

点击发布消息可进行消息发布,可对别人的发布的内容进行评论。本人创建的内容、评论可以进行删除操作。完成这一个小程序,我并不需要进行后端代码的编写,也不需要对获取到的数据进行复杂的判断处理。

当然这只是一个简单例子的应用,你也可以进行更复杂的功能设计。如果你也有类似的业务需求,就赶紧来知晓云(cloud.minapp.com)试一下吧。

原文发布于微信公众号 - 知晓程序(zxcx0101)

原文发表时间:2017-09-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯IVWEB团队的专栏

Node.js 编写 CLI 的实践

通常而言,Node.js 的应用场景有前后端分离、海量web页面渲染服务、命令行工具和桌面端应用等等。本篇文章选取 CLI(Command Line Tools...

32300
来自专栏Java技术分享

Mac OS X上IntelliJ IDEA 13与Tomcat 8的Java Web开发环境搭建

IntelliJ IDEA,发音大致如此:[in 'te li dʒei ai di: i: ei],我还是简称之为IntelliJ吧,“Intel”有“智能”...

898100
来自专栏酷玩时刻

IDE中显示 *.properties 为中文

之前做过几个开源项目(极速开发微信公众号weixin_guide以及IJPay 让支付触手可及),Demo中有涉及到一些配置文件。有些同学下载了之后反馈说有乱码...

11120
来自专栏娱乐心理测试

微信小程序发送模版消息(事例)

66370
来自专栏iOS 开发杂谈

CornerStone的使用

对于我们程序员来说,不管你是大神,还是小鱼小虾,进入公司之后,都用过源码管理工具,不然你就不是一个合格的程序员,现在各个公司用于源码管理工具通常有下面两种:

41310
来自专栏腾讯云实验室

搭建微信 AI 机器人

腾讯云提供了开发者实验室帮助用户搭建微信 AI 机器人,教程内容如下,用户可以点击开发者实验室快速上机完成实验。

8.5K150
来自专栏JackieZheng

Nodejs学习笔记(二)——Eclipse中运行调试Nodejs

前篇《Nodejs学习笔记(一)——初识Nodejs》主要介绍了在搭建node环境过程中遇到的小问题以及搭建Eclipse开发Node环境的前提步骤。本篇主要介...

27490
来自专栏Hadoop和Spark

用AWS部署一个无服务架构的个人网站

在这篇文章里我想介绍下怎样利用AWS(hjlouyoujuqi360com)部署一个无服务架构的个人网站。这个个人网站将具备以下特点:

44640
来自专栏云飞学编程

Python学习,多进程了解一下!学爬虫不会用多进程能行吗?

首先我们先做一个小脚本,就用turtle画4个同心圆吧!这样在演示多进程的时候比较直观。代码如下:

7830
来自专栏Java成神之路

Tomcat_异常_02_IOException while loading persisted sessions: java.io.EOFException

     EOFException表示输入过程中意外地到达文件尾或流尾的信号,导致从session中获取数据失败。

8810

扫码关注云+社区

领取腾讯云代金券