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

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

简介

wafer

后台的搭建涉及到购买服务器、购买数据库,然后要在服务器上安装运行环境等。说实话,我连要在服务器上装什么都不知道。所以希望能有一个东西,帮我把这些都做好,要是再提供一些登录之类的常用接口就更好了。这就是 wafer 所做的。

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

进入后按照指引购买,就可以拥有一个配置好的后台。

wafer2

wafer 相对于自己搭建后台已经方便很多了,但我用起来还是感觉有难度。我不熟悉 Linux,也搞不懂如何测试代码。直到发现腾讯云又推出了 wafer2。

如果你用上了新版小程序开发工具,会在工具的右上角发现一个「腾讯云」的按钮:

这个按钮就是用来连接 wafer2 的。

我们可以直接在小程序开发工具里编写后台代码,并上传代码,后台是区分开发环境和生产环境的。

下面我们看看怎么使用 wafer2。

搭建

开发环境

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

生产环境

官方文档说的都是开发环境,要是你想部署到生产环境,有些配置需要改一下。

域名

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

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

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

切换到生产环境后,别忘了把客户端的接口域名也改一下。

数据库

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

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

  mysql: {host: '修改为生产环境 ip',port: 3306,user: 'root',db: 'cAuth',pass: '修改为生产环境密码',char: 'utf8mb4'},

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

比外需要注意,开发环境的 MySql 是 5.7 的,而生产环境是 5.6 的。注意不要在开发的时候使用 JSON 等 MySql 5.7 才有的功能。

登录

先说一下小程序基本都会用到的登录。

使用

wafer2 的客户端及服务端 sdk,已经集成了登录逻辑,在客户端引用 sdk 后,只要调用它的 login 方法就可以实现登录了:

qcloud.login({success: res => {console.log('登录成功', res)},fail: err => {console.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 使用门槛低,但现在还不够稳定。个人项目玩玩还是可以的,商业项目要用的话,建议再观察一段时间吧。

腾讯云 wafer2 上手,轻松部署小程序后端!相关推荐

  1. ***腾讯云直播(含微信小程序直播)研究资料汇总-原创

    ***腾讯云直播(含微信小程序直播)研究资料汇总-原创 原文: ***腾讯云直播(含微信小程序直播)研究资料汇总-原创 这段时间抽空研究了下直播技术,综合比较了下腾讯云直播的技术和文档方面最齐全,现把 ...

  2. 磊哥测评之数据库SaaS篇:腾讯云控制台、DMC和小程序

    本文由云+社区发表 作者:腾讯云数据库 随着云计算和数据库技术的发展,数据库正在变得越来越强大.数据库的性能如处理速度.对高并发的支持在节节攀升,同时分布式.实时的数据分析.兼容主流数据库等强大的性能 ...

  3. 微信小程序 腾讯云 mysql 初始_微信小程序初始化怎么处理?小程序服务器域名配置...

    小程序初始化配置指引 假如您已成功创建了小程序资源,需要对现有的资源进行一些简单配置后,才能让小程序跑起来 未创建过资源的用户可以先在小程序控制台进行创建 1.配置微信小程序通信域名 首先我们在小程序 ...

  4. 善用云函数,开源节流,小程序后端使用云函数案例

    背景 随着serverless越来越流行,越来越多的中小型企业,个人开发者开始接纳并使用这样一个简单,灵活的平台.由于不用自己运维服务器,不用自己考虑系统负载问题,可以为企业节省不少成本.另外对于一些 ...

  5. Authing 联手腾讯云,在云函数上轻松部署 SSO 应用

    近些年,中国 SaaS 行业一直受到国内腰部企业的数量规模以及支付意愿的影响,相比西方来说,扩张相对缓慢.但在疫情影响下,数字化的各种需求和支付意愿如雨后春笋般涌现,SaaS 行业正迎来新一轮的发展机 ...

  6. 从零开始部署小程序服务器(腾讯云)

    从零开始部署小程序服务器(腾讯云) 话说目前云已经很便宜了,腾讯有一个月的试用期,不过阿里云也有,而且对于学生认证的用户 9.9元一个月的最低配置,这让 Lefe 才有可能尝试配置一个线上的服务器.从 ...

  7. 云脉文档管理小程序轻松解决文档管理难题

    手机h5访问地址:http://www.aipim.cn/docs 电脑端访问地址:http://www.yunmaiocr.com/goDoc 在日常处理办公文档过程中常常需要对纸质文档的文字内容进 ...

  8. 微信小程序开发15 项目实战 基于云开发开发一个在线商城小程序

    在学完前 4 个模块之后,我相信你会对微信小程序的开发有一个全新的认识.在前面 3 个模块中,俊鹏分别从微信小程序内在的运行原理,小程序工程化开发以及具体实践层面,深度讲解了微信小程序开发所必要的知识 ...

  9. (云服务器学习)部署python程序到云服务器

    (云服务器学习)部署python程序到云服务器 我本来好早就买了阿里云的服务器,以前叫做学生机,现在好像叫云翼计划,我感觉每年花个不到百元能玩玩也挺不错的.还能在上面搭建个人博客,跑跑程序,以后还能学 ...

最新文章

  1. 「创式纪」人工智能应用创新大赛启动,首次结合商业计划和机器学习
  2. 【Groovy】Groovy 扩展方法 ( 静态扩展方法配置 | 扩展方法示例 | 编译静态扩展类 | 打包静态扩展类字节码到 jar 包中 | 测试使用 Thread 静态扩展类 )
  3. matlab gui打开fig文件,求助gui打开word文件及打开fig格式图片
  4. 为什么现在腿会抽筋了?
  5. Linux下必须知道的11个网络命令
  6. 计算机二级web题目(7.3)--简单应用题1
  7. 【今日CV 计算机视觉论文速览】 11 Mar 2019
  8. 啊哈算法-擒贼先擒王(并查集)
  9. [Hadoop]SSH免密码登录以及失败解决方案
  10. 使用Inno Setup 打包.NET程序,并自动安装.Net Framework
  11. 笔记本计算机外壳的制作过程,笔记本电脑外壳选材不可小视
  12. honeyd蜜罐简易部署——ubuntu
  13. gp数据库日常运维sql语句笔记
  14. 【word毕业论文排版(3)】word导出带有书签的PDF失败,转为用WPS成功
  15. SMILES Enumeration
  16. 机器学习算法系列(七)-对数几率回归算法(一)(Logistic Regression Algorithm)
  17. SimpleFOC移植STM32(二)—— 开环控制
  18. C#“Multiple assemblies with equivalent identity have been imported”错误
  19. deepin20.3 的问题
  20. Node.js期中爬虫实验项目

热门文章

  1. 利用Windows系统自带命令手工搞定病毒
  2. 【PMP】关键路径法与关键链法
  3. (一)微信小程序支付前后台
  4. TFT LCD屏接口芯片-通达LT7381(SSD1963)
  5. 解决phpstorm运行很卡问题!
  6. 解决联想小新air14装虚拟机镜像时蓝屏问题
  7. java实现上传zip/rar压缩文件,自动解压
  8. 你最期待的热门思维导图测评在这里!
  9. Gartner:数字化转型的新方向:敏捷,以产品为中心
  10. 透视网格的数据如何导出Excel?一招教你搞定