基于mpvue的小程序开发与在线实践
小程序开发
浏览:759 次

小程序名称:一起打车
项目地址:客户:
服务器:
小程序二维码:
经过两个晚上的努力,我终于完成了我的第一个小程序的开发,并在网上发布了它。整个过程很顺利。因为mpvue方案用于开发,所以您可以享受与vue相同的流畅开发体验;后台系统使用python3 3+烧瓶框架,以最少的代码完成小程序的后台逻辑。除了开发,我还真正体验了微信小程序的开发过程,包括开发者工具的使用、体验版的发布以及上线app。这些发展经验非常值得记录,所以我趁热打铁写了这篇文章。
1、 需求和功能
因为公司的很多同事都住在同一个小区,上下班时经常在公司群里组织拼车。然而,由于完全依赖聊天记录以及上下班的同事人数众多,依靠群聊很容易擦除信息并造成信息混乱。在这种情况下,您可以开发一个小工具来解决这些问题。
发起共享汽车的人以卡片的形式共享出发地、目的地和出租车信息。参与汽车共享的人可以点击卡片选择参与汽车共享,并可以看到汽车共享伙伴是谁、有关汽车共享的信息等。
交互过程如下:
正如你所看到的,逻辑非常简单。我们只需要确保生成、共享、进入和退出咒语的四个功能。
要求和功能已确定。首先,根据中的介绍,注册小程序并获取appId,然后开始后台逻辑的开发。
2、 背景逻辑开发
由于时间短,功能简单,我们不考虑任何复杂的场景,如高并发,而只考虑功能的实现。从需求的逻辑可以看出,事实上,后台只需要维护两个列表,就可以存储所有当前的拼车列表和所有当前参与拼车的用户。数据结构如下:
所有当前拼写列表billsList
BillUsers中参与拼车的所有当前用户列表
用户确认并共享一个咒语后,他/她将直接创建一个新的咒语,并将该用户添加到参与当前汽车共享的所有用户列表以及咒语成员列表中:
只要保持这两个列表,以下就是具体的业务逻辑。
为了快速开发,我使用python 3+烧瓶框架。不了解Python的读者看到它时不必紧张。代码非常简单明了,因此可以查看一下。
首先,创建BillController类:
类BillController:
billsList=[]
inBillUsers=[]
接下来,我们将添加创建、获取、参与、退出、判断用户是否处于某个咒语中以及将图像上传到该类的功能。
1.获得咒语getBill()
该方法从客户端接收拼写ID,然后使用该ID检索是否存在相应的拼写。如果存在,将返回相应的咒语;否则,将向客户端报告错误。

def getBill(自身,ctx):
ctxBody=ctx.form
billId=ctxBody[“billId”]
尝试:
返回响应([item for item in self.billsList if item['billId']==billId][0])
IndexError除外:
返回响应({
“errMsg”:“排序规则不存在!”,
'billsList':self.billsList,
}, 1)
2.创建一个咒语createBill()
此方法将从客户端接收用户信息和拼写信息,并将它们分别添加到billsList和inBillUsers中。
def createBill(自身,ctx):
ctxBody=ctx.form
用户={
'userId':ctxBody['userId'],
'billId':ctxBody['billId'],
“名称”:ctxBody[“名称”],
'头像':ctxBody['头像']
}
账单={
'billId':ctxBody['billId'],
'来自':ctxBody['from'],
“to”:ctxBody[“to”],
“时间”:ctxBody[“时间”],

“成员”:[用户]
}
如果[item['userId']中的ctxBody['userId']用于self.inBillUsers]中的项:
返回响应({
“errMsg”:“用户已在拼写中!”
}, 1)
self.billsList.append(账单)
self.inBillUsers.append(用户)
返回响应({
'billsList':self.billsList,
'inBillUsers':self.inBillUsers
})
创建后,当前的billsList和inBillUsers将返回给客户端。
3.JoinBill()
从客户端接收用户信息和拼写ID,并将用户添加到拼写列表和inBillUsers列表中。
def joinBill(自身,ctx):
ctxBody=ctx.form
billId=ctxBody[“billId”]
用户={
'userId':ctxBody['userId'],
“名称”:ctxBody[“名称”],
'化身':ctxBody['化身],
“billId”:ctxBody[“billId'”]
}
如果项目的[item['userId']中的ctxBody['userId']