关于小程序云开发:微信小程序云开发

9次阅读

共计 2976 个字符,预计需要花费 8 分钟才能阅读完成。

开发者能够应用云开发开发微信小程序、小游戏,无需搭建服务器,即可应用云端能力。

云开发为开发者提供残缺的原生云端反对和微信服务反对,弱化后端和运维概念,无需搭建服务器,应用平台提供的 API 进行外围业务开发,即可实现疾速上线和迭代,同时这一能力,同开发者曾经应用的云服务互相兼容,并不互斥。

云开发提供了几大根底能力反对:

能力 作用 阐明
云函数 无需自建服务器 在云端运行的代码,微信公有协定人造鉴权,开发者只需编写本身业务逻辑代码
数据库 无需自建数据库 一个既可在小程序前端操作,也能在云函数中读写的 JSON 数据库
存储 无需自建存储和 CDN 在小程序前端间接上传 / 下载云端文件,在云开发控制台可视化治理
云调用 原生微信服务集成 基于云函数免鉴权应用小程序凋谢接口的能力,包含服务端调用、获取凋谢数据等能力

云开发官网文档

云开发控制台

云开发提供了一个控制台用于可视化治理云资源。控制台蕴含以下几大模块。

  • 概览:查看云资源的总体应用状况
  • 用户治理:查看小程序的用户拜访记录
  • 数据库:治理数据库汇合、记录、权限设置、索引设置,能够增加,导入和导出数据
  • 存储管理:治理云文件、权限设置,上传的图片,视频等文件能够在存储里看到
  • 云函数:治理云函数、查看调用日志、监控记录,
  • 统计分析:查看云资源具体应用统计

初始化(小程序端和云函数端)

小程序端

在小程序端开始应用云能力前,需先调用 wx.cloud.init 办法实现云能力初始化

App({onLaunch: function () {if (!wx.cloud) {console.error('请应用 2.2.3 或以上的根底库以应用云能力')
    } else {
      wx.cloud.init({
        // env 参数阐明:// env 参数决定接下来小程序发动的云开发调用(wx.cloud.xxx)会默认申请到哪个云环境的资源
        // 此处请填入环境 ID, 环境 ID 可关上云控制台查看
        // 如不填则应用默认环境(第一个创立的环境)env: 'my-env-id',
        // 是否在将用户拜访记录到用户治理中,在控制台中可见
        traceUser: true,
      })
    }
    this.globalData = {}}
})

env 还能够传入对象,指定各个服务的默认环境,可选字段能够去文档外面查找

云函数端
const cloud = require('wx-server-sdk')
// 初始化 cloud
cloud.init({
  // API 调用都放弃和云函数以后所在环境统一
  env: cloud.DYNAMIC_CURRENT_ENV
})

留神env 设置只会决定本次云函数 API 调用的云环境,并不会决定接下来其余被调云函数中的 API 调用的环境,在其余被调云函数中须要通过 init 办法从新设置环境。(每一个云函数都要调用 init

倡议 :在设置 env 时指定 cloud.DYNAMIC_CURRENT_ENV 常量 (需 SDK v1.1.0 或以上),这样云函数内发动数据库申请、存储申请或调用其余云函数的时候,默认申请的云环境就是云函数以后所在的环境:

云函数上手

创立 cloudfunctions 文件夹,外面寄存所有云函数,而后在我的项目根目录里创立 project.config.json 文件,新增 cloudfunctionRoot 字段,指定本地已存在的目录作为云函数的本地根目录,实现指定后,图标会变成“云目录图标”

{"cloudfunctionRoot": "./`cloudfunctions`/"}

接着,在 cloudfunctions 目录上右键,抉择创立一个新的 Node.js 云函数,命名为 login,创立胜利后会看到 login 文件夹外面有以下三个文件

  • config.json:配置文件
  • index.js:入口文件
  • package.json

登录函数

小程序有很多需要都须要拿到 openid 和 unionid 等用户登录信息,一般的做法是拿到长期 code 跟后盾换信息,云开发不须要这么简单

云开发的云函数的独特劣势在于与微信登录鉴权的无缝整合。当小程序端调用云函数时,云函数的传入参数中会被注入小程序端用户的 openid,开发者无需校验 openid 的正确性,因为微信曾经实现了这部分鉴权,开发者能够间接应用该 openid。与 openid 一起同时注入云函数的还有小程序的 appid。

从小程序端调用云函数时,开发者能够在云函数内应用 wx-server-sdk 提供的 getWXContext 办法获取到每次调用的上下文(appidopenid 等),无需保护简单的鉴权机制,即可获取人造可信赖的用户登录态(openid)。

上面就是具体的实现办法:

const cloud = require('wx-server-sdk')
// 初始化 cloud
cloud.init({
  // API 调用都放弃和云函数以后所在环境统一
  env: cloud.DYNAMIC_CURRENT_ENV
})
/**
 * 这个示例将经主动鉴权过的小程序用户 openid 返回给小程序端
 * event 参数蕴含小程序端调用传入的 data
 */
exports.main = async (event, context) => {console.log(event)
  console.log(context)
  // 可执行其余自定义逻辑
  // console.log 的内容能够在云开发云函数调用日志查看
  // 获取 WX Context (微信调用上下文),包含 OPENID、APPID、及 UNIONID(需满足 UNIONID 获取条件)等信息
  const wxContext = cloud.getWXContext()
  return {
    event,
    openid: wxContext.OPENID,
    appid: wxContext.APPID,
    unionid: wxContext.UNIONID,
    env: wxContext.ENV,
  }
}

云函数的传入参数有两个,一个是 event 对象,一个是 context 对象。
event 指的是触发云函数的事件,当小程序端调用云函数时,event 就是小程序端调用云函数时传入的参数,外加后端主动注入的小程序用户的 openid 和小程序的 appid。
context 对象蕴含了此处调用的调用信息和运行状态,能够用它来理解服务运行的状况。
在模板中也默认 requirewx-server-sdk,这是一个帮忙咱们在云函数中操作数据库、存储以及调用其余云函数的微信提供的库

在小程序端调用这个云函数前,咱们须要先将这个云函数部署到云端才能够。在云函数目录上右键,能够将云函数整体打包上传并部署到线上环境中。

上传胜利后 login 文件夹的 icon 会变成绿色的,证实咱们曾经部署胜利了

咱们能够到云开发控制台 > 云函数的云函数列表外面看到咱们部署的云函数

部署实现后,咱们能够在小程序中调用该云函数:

小程序端调用云函数

wx.cloud.callFunction({
      name: 'login',
      data: {},
      success: res => {console.log('[云函数] 
  此处含有隐藏内容,登录后即可查看!
user openid:', res.result.openid) app.globalData.openid = res.result.openid }, fail: err => {console.error('[云函数]
  此处含有隐藏内容,登录后即可查看!
调用失败', err) } })

能够到 Netword > cloud 外面看到申请

正文完
 0