前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >开发 | 只需一步!教你如何轻松部署小程序后端

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

作者头像
知晓君
发布2018-07-27 17:37:34
3.5K0
发布2018-07-27 17:37:34
举报
文章被收录于专栏:知晓程序
作者: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/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-09-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 知晓程序 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档