Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >腾讯云 wafer2 上手,轻松部署小程序后端!

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

作者头像
NanBox
发布于 2019-07-09 12:31:11
发布于 2019-07-09 12:31:11
2.7K00
代码可运行
举报
文章被收录于专栏:NanBoxNanBox
运行总次数:0
代码可运行

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

本文从一个初学者的角度,简单介绍一下腾讯云推出的小程序解决方案 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 地址及登录密码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  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 方法就可以实现登录了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
qcloud.login({
  success: res => {
    console.log('登录成功', res)
  },
  fail: err => {
    console.log('登录失败', err)
  }
})复制代码

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

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

问题

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Session.set(res.skey);复制代码

修改为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Session.set(res);复制代码

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

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

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

第一个接口

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module.exports = async ctx => {
  ctx.state.data = "Hello World !"
}复制代码

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

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

添加一句代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 测试接口
router.get('/hello', controllers.hello)复制代码

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  code: 0,
  data: "Hello World !"
}复制代码

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

数据库操作

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 使用门槛低,但现在还不够稳定。个人项目玩玩还是可以的,商业项目要用的话,建议再观察一段时间吧。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年09月27日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
开发 | 只需一步!教你如何轻松部署小程序后端
利用它,你可以在「微信 web 开发者工具」中,直接完成后端代码编写、腾讯云部署等一系列操作。
知晓君
2018/07/27
3.8K0
Wafer1 和 Wafer2 有什么不同?
Jason
2017/12/19
12.2K10
Wafer1 和 Wafer2 有什么不同?
自己部署 Node.js 版本的 Wafer2 Demo
本文主要介绍如何在自己服务器上部署腾讯云微信小程序开发环境,通过详细步骤和截图进行说明。同时,介绍了部署完成后如何进行测试和联调。
Jason
2017/12/11
13.7K11
自己部署 Node.js 版本的 Wafer2 Demo
自己部署 PHP 版本的 Wafer2 Demo
Jason
2017/12/11
9.6K4
自己部署 PHP 版本的 Wafer2 Demo
电影评论小程序demo的食用说明
调试基础库:2.3.2(选择其他可能不兼容。只代表PC上的调试库,手机上可随意测试)
用户3827825
2020/04/07
9140
电影评论小程序demo的食用说明
黄荣奎:如何快速、便捷开发小程序
京东、蘑菇街等电商企业率先使用微信小程序,带动了小程序开发的热潮。 腾讯云小程序方案技术负责人黄荣奎在现场为大家带来了最新的微信小程序开发工具与技巧。他将小程序的开发分成客户端代码与业务核心能力两个部分,并总结了传统开发过程中将遇到以下四个问题: 1.环境部署耗时; 2.后台代码部署不方便; 3.开发调式不直观; 4.很多时间将花费在框架搭建上,包括基础的功能,比如登录体系,而不是直接开发业务功能。 [1506305650768_5297_1506305646899.png] 为了让开发者更加方便快捷地开发
腾讯云开发者社区
2018/01/15
1.3K0
黄荣奎:如何快速、便捷开发小程序
黄荣奎:腾讯云微信小程序解决方案
本文介绍小程序在腾讯云上的解决方案,如何快速帮助开发者快速完成开发和上线。
Techeek
2018/04/04
12.8K15
开发 | 小程序·云开发释放四大能力,“人人都是开发者”时代到来!
如何从技术上降低小程序开发门槛成为开发者们最关注的问题。腾讯云和微信团队联合推出的 “小程序·云开发”解决方案,通过提供的一站式后端服务,让开发者无需构建应用后端服务,即可高效开发出一款高质量的小程序,让小程序的开发进程大大加快。
云蚁cloudant
2019/01/02
1K0
开发 | 小程序·云开发释放四大能力,“人人都是开发者”时代到来!
微信小程序开发工具,腾讯云服务支持PHP语言啦!
腾讯云开发者社区
2017/11/13
7.4K2
微信小程序开发工具,腾讯云服务支持PHP语言啦!
林超:小程序云服务的发展探索
12月15日,由腾讯云主办的首届“腾讯云+社区开发者大会”在北京举行。本届大会以“新趋势•新技术•新应用”为主题,汇聚了超40位技术专家,共同探索人工智能、大数据、物联网、小程序、运维开发等热门技术的最新发展成果,吸引超过1000名开发者的参与。
腾讯云开发者社区技术沙龙
2018/12/29
2.4K0
林超:小程序云服务的发展探索
过去、现在和未来:开发一款微信小程序的技术迭代全过程
2016 年 1 月 11 日,张小龙现身微信公开课 Pro 版发表公开演讲。也就是在此次演讲中,微信官方正式宣布正在开发“应用号”的消息。而当时被形容为“像 App 一样的公众号”——「应用号」在同年 9 月正式更名为「小程序」,并发布内测。
Java帮帮
2019/11/01
1.3K0
过去、现在和未来:开发一款微信小程序的技术迭代全过程
轻松理解小程序 session的实现
小程序版 websocket 聊天室。 从服务器到小程序客户端配置基础教程。
疯狂的小程序
2018/01/25
2.2K0
微信小程序初见+nodejs服务端 (一个简单的博客)「建议收藏」
腾讯云快速开发(nodejs前后端):https://developers.weixin.qq.com/miniprogram/dev/qcloud/qcloud.html#%E5%AF%BC%E5%85%A5-nodejs-demo-%E5%92%8C%E9%85%8D%E7%BD%AE
全栈程序员站长
2022/09/07
1.3K0
微信小程序初见+nodejs服务端 (一个简单的博客)「建议收藏」
3 元购买 Wafer1 指南
Jason
2017/12/12
2.2K0
3 元购买 Wafer1 指南
朱展:腾讯云小程序解决方案
大家下午好,我今天给大家带来的分享主题是腾讯云小程序解决方案。首先做一个自我介绍,我叫朱展,来自腾讯云,目前负责腾讯云小程序解决方案,从事设计开发的工作。
腾讯云开发者社区技术沙龙
2018/05/07
17.2K5
朱展:腾讯云小程序解决方案
基于 Wafer 2.0 搭建自己的第一个小程序
Jason
2017/12/11
21K16
基于 Wafer 2.0 搭建自己的第一个小程序
Vue+koa2开发一款全栈小程序(5.服务端环境搭建和项目初始化)
如果本地的MySQL设置了密码,将server文件下的config.js中的数据库密码配置,填写你mysql数据库的密码
玩蛇的胖纸
2018/10/11
1.5K1
Vue+koa2开发一款全栈小程序(5.服务端环境搭建和项目初始化)
Vue+koa2开发一款全栈小程序(7.图书录入功能)
1.图书录入功能 1.获取图书信息 1.在mydemo/src/until.js中封装工具函数post和get // 工具函数 import config from './config' // http get工具函数 获取数据 export function get (url,data) { return request(url,'GET',data) } export function post (url,data) { return request(url,'POST',data) }
玩蛇的胖纸
2018/10/18
7680
Vue+koa2开发一款全栈小程序(7.图书录入功能)
剑指 Firebase ,云开发—— 腾讯云的小 B 战略能行么?
小程序推出云开发已经有一段时间了,我自己也已经深度的体验了小程序云开发,自此,写下一篇文章来谈一谈我眼中的云开发。
白宦成
2018/11/09
9.2K0
剑指 Firebase ,云开发—— 腾讯云的小 B 战略能行么?
腾讯云快速搭建微信小程序服务
小程序后台服务需要通过 HTTPS 访问,在实验开始之前,我们要准备域名和 SSL 证书。
云上云
2019/07/01
33.7K1
腾讯云快速搭建微信小程序服务
相关推荐
开发 | 只需一步!教你如何轻松部署小程序后端
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验