宝哥软件园

腾讯云wafer2入门 部署小程序后端轻松!

编辑:宝哥软件园 来源:互联网 时间:2021-12-12

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

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

简介

wafer

后台的搭建涉及到购买服务器,购买数据库,然后在服务器上安装运行环境。老实说,我甚至不知道在服务器上安装什么。所以希望有什么东西可以帮我做好这一切,最好提供一些常用的界面,比如登录。威发就是这么做的。

其实在小程序后台配置域名的地方,有一个跳转到腾讯云:的链接。

腾讯云 wafer2 上手,轻松部署小程序后端!(图1)

按照说明进入购买后,就可以有配置好的后台了。

wafer2

晶圆比我自己设置后台方便多了,但是我还是觉得用起来比较困难。我不熟悉Linux,也不知道怎么测试代码。直到发现腾讯云再次推出wafer2。

如果你使用新的小程序开发工具,你会发现工具右上角有一个“腾讯云”按钮:

腾讯云 wafer2 上手,轻松部署小程序后端!(图2)

该按钮用于连接wafer2。

我们可以直接在小程序开发工具中编写后台代码并上传代码。背景将开发环境与生产环境区分开来。

让我们来看看如何使用wafer2。

搭建

开发环境

构建wafer2非常简单。根据官方文件,应该没有问题,这里就不重复了。

生产环境

官方文件都是关于开发环境的。如果要部署到生产环境中,需要更改一些配置。

域名

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

通过腾讯云管理中心注册的域名将自动部署HTTPS证书。但是备案需要注册服务器ip,wafer2的服务器ip没有提供给我们。目前只能买一台服务器备案。

绑定域名后,可以在开发工具Details-腾讯云状态中确认生产环境的域名:

腾讯云 wafer2 上手,轻松部署小程序后端!(图3)

切换到生产环境后,不要忘记更改客户端的接口域名。

数据库

在腾讯云管理中心,修改生产环境中MySql的登录密码。然后登录phpMyAdmin,可以在首页看到MySql的服务器ip地址,并写下来。

回到开发工具,找到server/config.js,在里面修改MySql配置的ip地址和登录密码:

Mysql: {host: '改为生产环境IP ',端口: 3306,用户3360' root ',DB 3360' cauth ',PASS : '改为生产环境密码',char: 'utf8mb4'},官方代码在开发工具中上传,然后在管理中心制作。这就完成了生产环境的配置和部署。

需要注意的是,开发环境中的MySql是5.7,而生产环境中的MySQL是5.6。开发时注意不要使用JSON和其他只有MySql 5.7才有的功能。

登录

先说说小程序基本使用的登录。

使用

Wafer2的客户端和服务器sdk集成了登录逻辑。客户端引用sdk后,您可以通过调用其登录方法进行登录:

cloud . log in({ success : RES={ console . log(' log in success ',res) },fail: err={ consol

e.log('登录失败', err) }})

登录成功会将用户数据保存在数据库 cAuth 的 cSessionInfo 表里,并将用户数据返回。

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

问题

用户登录过之后会将用户信息缓存在本地,当有缓存的时候会将用户信息直接返回。但是 sdk 中,缓存的存取都是有问题的,有缓存的情况下,会返回 undifined。

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

所以现在要正常使用,需要到 wafer2-client-sdk/lib/login.js,找到保存用户数据的地方:

Session.set(res.skey);

修改为:

Session.set(res);

另外,还想吐槽一下,sdk 里 wx.login 和 wx.getUserInfo 是搭配使用的。

也就是说,必须要获取到用户信息,才能实现登录。而我们知道,小程序在获取用户信息时会弹窗,并且用户是可以拒绝的。拒绝后一段时间内,调用 wx.getUserInfo 都不会再弹窗。可以说 wafer2 没有考虑用户拒绝授权的情况。而这恰好是微信不提倡的做法,甚至可能导致无法通过审核。

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

第一个接口

学习要有目的性才能保持兴趣,配置完了我们来写一个自己的接口。

wafer2 基于 Node.js 平台,使用了 Koa2 框架。

在 server/controllers 下新建文件 hello.js,输入如下代码:

module.exports = async ctx => {  ctx.state.data = "Hello World !"}

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

然后我们打开 server/routes/index.js

添加一句代码:

// 测试接口router.get('/hello', controllers.hello)

代码就只有这么多。保存之后点击「腾讯云」-「上传测试代码」,如果是第一次上传要勾上「部署后自动安装依赖」。等待上传成功,就可以测试我们的接口了。

调用 xxx.qcloud.la/weapp/hello,看是否返回以下结果:

{  code: 0,  data: "Hello World !"}

恭喜!你自己开发的第一个接口已经调通了!

数据库操作

wafer2 使用了 knex 作为数据库的查询构造器,并且已经配置好了。对于有 sql 经验的程序员,可以很快的上手。

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

假如已经有一个「Book」的表,下面代码,简单展示了在 wafer2 里,如何对数据库进行增查改删:

const { mysql } = require('../qcloud')const uuid = require('node-uuid')module.exports = async ctx => {  var id = uuid.v1()  // 增  var book = {    id: id,    name: "冰与火之歌",    price: 88  }  await mysql("Book").insert(book)  // 查  var res = await mysql("Book").where({ id }).first()  // 改  await mysql("Book").update({ price: 66 }).where({ id })  // 删  await mysql("Book").del().where({ id })  ctx.state.data = "OK"}

数据库操作默认都是异步执行的,如果要等待操作完成,需要在操作语句前加上 await。

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

总结

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

wafer2 用起来方便。我们不用懂太多后台配置的东西,前后端代码都在小程序开发工具编写,直接在开发工具上传后端代码,区分了开发、生产环境,而且目前还是免费的,虽说不知道会不会一直有免费版。

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

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

更多资讯
游戏推荐
更多+