从入门到实战微信小程序云开发

  • Post author:
  • Post category:小程序




1、微信云开发介绍

小程序·云开发是官方提供的原生 Serverless 云能力。它提供了一整套完整、标准化的开发流程。弱化了后端以及运维的概。无需搭建服务器,使用微信接口即可集成原生云服务,也可以获得开箱即用的完整的原生云端支持和免鉴权微信服务支持。



2、功能与优势


能力:

  • 云函数:在云端运行的代码,微信私有协议天然鉴权,开发者只需编写自身业务逻辑代码
  • 数据库:既可在小程序前端操作,也能在云函数中读写的 JSON 数据库
  • 存储:可在小程序前端上传/下载云端文件,在云开发控制台可视化管理


优势:

  • 无需搭建服务器,快速构建小程序
  • 免登录,免鉴权调用微信开放服务
  • 统一开发多端应用
  • 按量计费,成本更低

官方介绍:

官方介绍和视频



3、功能介绍



3.1 云数据库

云开发提供了一个 JSON 数据库,顾名思义,数据库中的每条记录都是一个 JSON 格式的对象。一个数据库可以有多个集合(相当于关系型数据中的表),集合可看做一个 JSON 数组,数组中的每个对象就是一条记录,记录的格式是 JSON 对象。

在这里插入图片描述



3.2 云存储

云开发提供了一块存储空间,提供了上传文件到云端、带权限管理的云端下载能力,开发者可以在小程序端和云函数端通过 API 使用云存储功能。

在这里插入图片描述



3.3 云函数

云函数是一段运行在云端的代码,无需管理服务器,在开发工具内编写、一键上传部署即可运行后端代码。

小程序内提供了专门用于云函数调用的 API。开发者可以在云函数内使用 wx-server-sdk 提供的 getWXContext 方法获取到每次调用的上下文(appid、openid 等),无需维护复杂的鉴权机制,即可获取天然可信任的用户登录态(openid)。

在这里插入图片描述



3.4 其他

运营 分析、云托管、云调用、HTTP API


参考地址



4、 代码讲解

本次介绍小程序云开发以一个todolist的项目来进行实际的讲解。代码地址:

github



4.1 入口函数:

// 云函数入口文件 /cloudfunctions/getOpenId/index.js
const cloud = require('wx-server-sdk')

cloud.init({ // 初始化云开发环境
  env: cloud.DYNAMIC_CURRENT_ENV // 当前环境的常量
})
const db = cloud.database()
// 云函数入口函数
exports.main = async (event, context) => {
  // 预置创建集合,如果存在则自动失败跳过,自己上架时可以去掉
  try{ await db.createCollection('todo') }catch(e){}
  const wxContext = cloud.getWXContext()
  // 返回当前用户的身份信息,用于数据库记录和查询
  return {
    event,
    openid: wxContext.OPENID,
    fromopenid: wxContext.FROM_OPENID,
    appid: wxContext.APPID,
    unionid: wxContext.UNIONID,
  }
}



4.2 增删改查


新增

 const db = await getApp().database()
 // 在数据库中新建待办事项,并填入已编辑对信息
 db.collection(getApp().globalData.collection).add({
   data: {
     title: this.data.title,       // 待办标题
     desc: this.data.desc,         // 待办描述
     files: this.data.files,       // 待办附件列表
     freq: Number(this.data.freq), // 待办完成情况(提醒频率)
     star: false
   }
 })


删除

	// 在数据库中删除一条id数据 
 db.collection(getApp().globalData.collection).where({
   _id: this.data._id
 }).remove()


修改

// 校验通过后,根据待办 _id,更新待办信息
db.collection(getApp().globalData.collection).where({
  _id: this.data._id
}).update({
  data: {
    title: this.data.title,
    desc: this.data.desc,
    files: this.data.files,
    freq: Number(this.data.freq)
  }
})


查询

// 在数据中查询查询该用户的信息
 db.collection(getApp().globalData.collection).where({
   _openid: openid
 })



版权声明:本文为qq_60174013原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。