开发 | 只需一步!教你如何轻松部署小程序后端

作者:SouthernBox

知晓程序注:

在新版「微信 web 开发者工具」中,新增了「腾讯云」集成功能。

利用它,你可以在「微信 web 开发者工具」中,直接完成后端代码编写、腾讯云部署等一系列操作

那么,这个腾讯云集成工具应该如何使用呢?知晓程序(微信号 zxcx0101)今天分享的这篇文章,就来一步步教你用开发者工具开发后端代码。

关注「知晓程序」微信公众号,回复「开发」,获取小程序开发全套教程。

前端程序员开发一个自己的小程序,比起学习小程序开发,更大的难点在于搭建小程序的后台。

本文从一个初学者的角度,简单介绍一下腾讯云推出的小程序解决方案 wafer 2,让没有后台开发经验的程序员,也能搭建起自己的小程序后台。

简介

1. wafer 是什么?

后台的搭建,涉及从购买服务器和数据库,到服务器上安装运行环境等一系列的流程。

说实话,我连要在服务器上该装什么都不知道,所以希望有人可以帮我把这些都做好——要是能帮我完成一些小程序的常用接口,就更好了。

没错,这就是 wafer 所做的事情

在小程序后台,配置安全域名的的地方,就有跳转到腾讯云的链接。点击它,就可以直接到腾讯云购买服务器配置。

进入后按照指引购买,就可以拥有一个配置好的后端服务器,就可以进行后端开发。

2. wafer 的升级版:wafer 2

相对于完全自己搭建后端服务器,wafer 已经方便很多了,但我用起来还是感觉有难度。

我不熟悉 Linux,也搞不懂如何测试代码,直到发现腾讯云又推出了 wafer 2。

如果你用上了新版小程序开发工具,会在工具的右上角发现一个「腾讯云」的按钮,点击它,就会进入腾讯云配置菜单

关注「知晓程序」微信公众号,回复「工具」,获取新版开发者工具下载地址。

有了它,我们可以直接在小程序开发工具里,编写、上传后端代码了。需要注意的是,wafer 2 后端环境区分开发环境和生产环境的。

下面,我们看看怎么使用 wafer 2。

搭建 wafer 2 环境

1. 环境搭建与部署

搭建 wafer 2 的开发环境很简单,大家按照官方文档来,应该没什么问题的,这里就不赘述了。

关注「知晓程序」微信公众号,回复「wafer」,获取 wafer 2 官方文档地址。

然而,官方文档里说的都是开发环境。想要将后端代码部署到生产环境,有些配置需要改一下。

2. 域名

开发环境的域名是腾讯云分配的 xxx.qcloud.la,而生产环境需要使用自己在腾讯云里的域名。

通过腾讯云管理中心注册的域名,会自动部署 HTTPS 证书。但是要备案的话,需要登记服务器 IP,而 wafer 2 的服务器 IP 是没有提供给我们的

也就是说,目前想要使用经过备案的服务器,只能再租一个服务器来备案……

绑定域名后,可以在开发工具「详情」-「腾讯云状态」确认生产环境域名。

切换到生产环境后,别忘了小程序代码里的域名和接口,它们也需要改一下。

3. 数据库

接下来,我们要在腾讯云管理中心里,修改生产环境 MySQL 的登录密码

然后,利用 phpMyAdmin,在首页可以看到 MySQL 的服务器 IP 地址,记下来。

回到开发工具,找到 server/config.js,修改里面 MySQL 配置的 IP 地址及登录密码:

在开发工具上传正式代码,再到管理中心的生产环境,点击「代码部署」。这样就完成生产环境的配置及部署了。

需要注意的是,开发环境的 MySQL 版本号是 5.7,而生产环境是 5.6。所以不要在开发时使用 JSON 等等这类 MySQL 5.7 才有的功能。

亲自试试看,wafer 2 好用吗?

说了这么多部署的问题,看上去确实要比以往要简单很多。但它实际用起来是什么感受?

现在,我就来说说我在利用 wafer 2 过程中,我的体会与所遇到的问题。

1. 用 wafer 2 封装的接口:小程序登录

先说来谈谈所有并小程序都会用到的接口:微信登录接口。

wafer 2 的客户端及服务端 SDK,已经集成了登录逻辑,在客户端引用 SDK 后,只要调用它的 login 方法,就可以在小程序里,实现微信登录功能。

登录成功后,会将用户数据保存在数据库 cAuthcSessionInfo 表里,并将用户数据返回

看起来很美好,但是这里面是存在一些问题的。

例如,用户登录过之后会将用户信息缓存在本地,有缓存时会将用户信息直接返回。在 SDK 中,缓存的读写都是有问题的,有缓存时会返回 undifined

这是个很低级的错误,问题已经给官方反馈了。截止到写这篇文章,取数据的地方改了,但存的地方还没改……

所以,如果现在想要继续正常使用 wafer 2,需要到 wafer2-client-sdk/lib/login.js,找到保存用户数据配置的这一行:

找到之后,将它修改成这样:

另外还想吐槽一下,SDK 里 wx.loginwx.getUserInfo 是需要搭配使用的——也就是说,必须要先获取到用户信息,才能实现登录。

而我们知道,小程序在获取用户信息时会弹窗,并且用户是可以拒绝的。用户拒绝登录后,调用 wx.getUserInfo 都不会再弹窗。

可以说,wafer 2 完全没有考虑用户拒绝授权的情况。而这恰好是微信不提倡的做法,有时,甚至可能导致小程序无法通过审核。

这个问题我也向官方反馈了。

2. 尝试自己写一个接口

学习要有目的性才能保持兴趣,所以,我就尝试利用 wafer 2,写了一个自己的接口。

需要注意的是:wafer 2 基于 Node.js 平台,使用了 Koa 2 框架,所以我们的教程也会基于这个环境完成。

我们在 server/controllers 下新建文件 hello.js,然后在文件中,输入如下代码:

代码很简单,就是暴露一个返回结果是「Hello World !」的方法,「Hello World !」会被放在请求结果的 data 里。

然后我们打开 server/routes/index.js,添加一句代码:

没错,代码就只有这么多。

保存之后点击「腾讯云」-「上传测试代码」,如果是第一次上传,记得勾上「部署后自动安装依赖」

等待上传成功,就可以测试我们的接口了。用浏览器访问 xxx.qcloud.la/weapp/hello,看是否返回以下结果:

恭喜!你自己开发的第一个接口已经调通了!接下来,我们再看看,前后端如何协同处理网络请求和参数。

3. 深入使用 wafer 2 开发

为了满足小程序前后端协同信息处理的需求,SDK 里也封装了网络请求的方法,就是使用 qcloud.request 进行网络请求。

利用它,我们可以确认用户的登录状态,并将用户的会话信息带给服务器。如果没有这些需求,用回 wx.request 也没事。

至于后端,用平常的方法写 API 接口,就可以在小程序里使用了。

需要额外说一下的,是数据库的使用。wafer 2 使用了 Knex 作为数据库的查询构造器,而且已经帮你配置好了。

对于有 SQL 经验的程序员,利用它可以很快上手数据库开发。

进入 phpMyAdmin,我们可以在在 cAppinfo 这个数据库里,创建需要的表。

我们假设已经有一个名为 Book 的表,那么我们应该如何在 wafer 2 里,对数据库进行增查改删呢?

话不多说,上代码:

需要注意的是,数据库操作默认都是异步执行的,如果业务需要数据库读写使用同步方法执行,你需要在操作语句前加上 await

更高级的 SQL 用法,可以查看 Knex.js 官网。

最后的话

我已经将自己的小程序「碰词er」后台迁移到 wafer 2 了。开发的时候各种坑,给腾讯云提了一些很明显的 bug。没准,「碰词 er」是第一个使用 wafer 2 的小程序。

wafer 2 用起来确实方便。我们不用懂太多后台配置的东西,前后端代码都在小程序开发工具编写,直接在开发工具上传后端代码。

利用它,你可以区分开发、生产环境,而且目前还是免费的,虽说不知道会不会一直有免费版。

但目前缺点同样明显:比如备案不方便、登录接口不合理、SDK 有 bug 等等。期间,我还碰到过服务器宕机、需要手动重启的情况。希望腾讯云接下来能解决这些问题。

总的来说,wafer 2 使用门槛低,但现在还不够稳定。个人项目玩玩还是可以的,商业项目要用的话,建议再观察一段时间吧。

「碰词 er」小程序使用链接

https://minapp.com/miniapp/3952/

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

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java架构

阿里双十一秒杀系统架构设计,有哪些技术关键点?

秒杀活动只是网站营销的一个附加活动,特点是:时间短、并发访问量大,如果和网站原有应用部署在一起,必然会对现有业务造成冲击。

1953
来自专栏开源优测

移动测试Appium工作原理

移动测试Appium工作原理 介绍 Appium是一个开源工具,用于自动化iOS、Android设备和Windows桌面平台上的原生、移动Web和混合应用。 "...

5177
来自专栏tiane12

Linux/CentOS定期清空指定目录脚本

2394
来自专栏python3

清理Linux内存

因为LINUX的内核机制,一般情况下不需要特意去释放已经使用的cache。这些cache起来的内容可以增加文件以及的读写速度。

2671
来自专栏翻译社

6个虚拟机备份和恢复的最佳实践

虚拟机的体系结构与传统的本地环境大不相同,需要不同的数据备份技术。本文将介绍一些备份虚拟机的最佳实践。

3296
来自专栏游戏杂谈

nginx的反向代理缓存

假设有两台物理机,他们分属于不同的域名,以webgame的游戏运营商和开发商为例,运营商需要获取游戏中的排行数据,开发商为了过多对游戏服务器的请求,会在发起请求...

3852
来自专栏服务端技术杂谈

进程内缓存使用技术方案

进程内缓存可以采用带锁的Map或者第三方库,或者自己实现进程内缓存管理,如ConcurrentHashMap,ThreadLocal,guava cache等。

2483
来自专栏FreeBuf

挖洞经验|雅虎小企业服务平台Luminate身份认证漏洞

对内容管理系统的开发来说,一个重要和关键的步骤就是账户的身份认证实现。身份认证功能可以管理用户登录行为和会话,作出有效的登录访问控制。通常,这种认证功能一般由用...

3154
来自专栏知晓程序

小程序服务器崩溃了怎么办?| 小程序问答 #38

不用担心,知晓程序(微信号 zxcx0101)今天就来教你,在小程序出现意外状况时,我们可以做些什么。

1002
来自专栏大数据和云计算技术

高速数据总线kafka介绍

1. Kafka的作用 在大数据系统中,常常会碰到一个问题,整个大数据是由各个子系统组成,数据需要在各个子系统中高性能,低延迟的不停流转。有没有一个系统可以同时...

4614

扫码关注云+社区

领取腾讯云代金券