开发者能够应用云开发开发微信小程序、小游戏,无需搭建服务器,即可应用云端能力。
云开发为开发者提供残缺的原生云端反对和微信服务反对,弱化后端和运维概念,无需搭建服务器,应用平台提供的 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
办法获取到每次调用的上下文(appid
、openid
等),无需保护简单的鉴权机制,即可获取人造可信赖的用户登录态(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
对象蕴含了此处调用的调用信息和运行状态,能够用它来理解服务运行的状况。
在模板中也默认require
了wx-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 外面看到申请