知晓程序注:
在新版「微信 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
方法,就可以在小程序里,实现微信登录功能。
登录成功后,会将用户数据保存在数据库 cAuth
的 cSessionInfo
表里,并将用户数据返回。
看起来很美好,但是这里面是存在一些问题的。
例如,用户登录过之后会将用户信息缓存在本地,有缓存时会将用户信息直接返回。在 SDK 中,缓存的读写都是有问题的,有缓存时会返回 undifined
。
这是个很低级的错误,问题已经给官方反馈了。截止到写这篇文章,取数据的地方改了,但存的地方还没改……
所以,如果现在想要继续正常使用 wafer 2,需要到 wafer2-client-sdk/lib/login.js
,找到保存用户数据配置的这一行:
找到之后,将它修改成这样:
另外还想吐槽一下,SDK 里 wx.login
和 wx.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/