微信小程序笔记六:serverless 云开发

腾讯云提出的云开发应该已经有一段时间。至于serverless是什么?不懂的同学可以移步至phodal大神的serverless。腾讯云借助于小程序快速发展走一波serverless。

它的优势在于弱化后端和运维概念,让小企业和小团队可以更容易地开发小程序。它首创的云调用将鉴权部分有效的封装,让你的接口很容易的实现了鉴权保护。当然,大公司或者是具有成熟后台团队的公司,肯定不愿意将数据放在腾讯的服务端,而且现在小程序云开发声明收费事宜,具体可以参考配额。以国外的serverless服务的情况来看,都是按流量计费,借于腾讯的流量,云开发所消耗的费用也是一笔不小的数目,当然那也是后话。哪有用别人东西不收费的情况,而且它还是“腾讯”。

云开发能力从基础库 2.2.3 开始支持(覆盖率 97.3%,查看兼容性问题),所以可以不需要考虑这点兼容性。

开始前,需要在你的代码库里面新建一个server的文件夹,如果你采用了第三方的框架,请你自行想一下解决方案。开发之前要搞清楚,你的代码是写在server还是写在client里面,分别参考对应服务端API小程序端API。我相信有node开发经验的同学应该很清楚这部分。如果涉及到远程调度的同学,HTTP API 文档则是提供服务端调用的API,远程控制数据库以及数据导出迁移功能。

在这里,着重介绍一下,云函数和云调用。

云函数

云函数是指运行在云端的代码,也就是你server文件夹里面的代码。

如果你了解不用云开发的openid获取流程,你就知道openid的获取是非常繁琐的过程,前端需要用过wx.login获取一个code值,code值具有时效性。通过code值去后台用appsecret去调取openidsessionkeyunionid的获取就更为复杂。

但是云函数由于是部署在腾讯云的关系,所以无需维护复杂的鉴权机制,云函数会带上特殊的签名机制,即可获取天然可信任的用户登录态,代码如下,注意node.js的代码使用common.js的模块化方案。

const cloud = require('wx-server-sdk')
exports.main = (event, context) => {
  const {userInfo, a, b} = event
  // 这里获取到的 openId 和 appId 是可信的
  const {OPENID, APPID} = cloud.getWXContext() 

  const sum = a + b

  return {
    OPENID,
    APPID,
    sum
  }
}

云函数的构建就是前端小程序可以直接通过wx.cloud.callFunction调用。这样,团队内不需要后端工程师以及运维人员。

// server.js
exports.main = async (event, context) => ({
  sum: event.a + event.b
})
// client.js
wx.cloud.callFunction({
  // 云函数名称
  name: 'add',
  // 传给云函数的参数
  data: {
    a: 1,
    b: 2,
  },
})
  .then(res => {
    console.log(res.result) // 3
  })
  .catch(console.error)

云调用

云调用是指需要access token才能调用的供服务端调用的接口,由于access token只有7200秒的有效期,要定时去获取。对于小程序而言,测试和生产如果共用一个小程序,会有冲突的风险。这部分的处理是需要非常小心的。

云调用的使用则是减轻这些功能的使用难度,无需获取access tokenopenapi的使用让小程序更面向前端,方便前端工程师的开发。下面是关于消息模版推送的代码。在开发之前需要配置一下权限,详情参考

const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async (event, context) => {
    const result = await cloud.openapi.templateMessage.send({
      touser: cloud.getWXContext().OPENID,
      page: 'index',
      data: {
        keyword1: {
          value: '339208499'
        },
        keyword2: {
          value: '2015年01月05日 12:30'
        },
        keyword3: {
          value: '腾讯微信总部'
        },
        keyword4: {
          value: '广州市海珠区新港中路397号'
        }
      },
      templateId: 'TEMPLATE_ID',
      formId: 'FORMID',
      emphasisKeyword: 'keyword1.DATA'
    })
    // result 结构
    // { errCode: 0, errMsg: 'openapi.templateMessage.send:ok' }
    return result
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容