zoukankan      html  css  js  c++  java
  • 微信小程序又一爆炸功能上线-云开发

    云开发介绍

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

    云开发为开发者提供完整的云端支持,弱化后端和运维概念,无需搭建服务器,使用平台提供的 API 进行核心业务开发,即可实现快速上线和迭代,同时这一能力,同开发者已经使用的云服务相互兼容,并不互斥。

    目前提供三大基础能力支持:

    • 云函数:在云端运行的代码,微信私有协议天然鉴权,开发者只需编写自身业务逻辑代码

    • 数据库:一个既可在小程序前端操作,也能在云函数中读写的 JSON 数据库

    • 存储:在小程序前端直接上传/下载云端文件,在云开发控制台可视化管理

    云开发能力介绍

    小程序·云开发提供了三个基础能力:数据库、存储和云函数,这一章节我们介绍下这几个能力分别是什么,我们能用他来做什么。

    数据库

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

    关系型数据库和 JSON 数据库的概念对应关系如下表:

    关系型文档型
    数据库 database 数据库 database
    表 table 集合 collection
    行 row 记录 record / doc
    列 column 字段 field

    以下是一个示例的集合数据,假设我们有一个 books 集合存放了图书记录,其中有两本书:

    [
      {
        "_id": "Wzh76lk5_O_dt0vO",
        "title": "The Catcher in the Rye",
        "author": "J. D. Salinger",
        "characters": [
          "Holden Caulfield", 
          "Stradlater", 
          "Mr. Antolini"
        ],
        "publishInfo": {
          "year": 1951,
          "country": "United States"
        }
      },
      {
        "_id": "Wzia0lk5_O_dt0vR",
        "_openid": "ohl4L0Rnhq7vmmbT_DaNQa4ePaz0",
        "title": "The Lady of the Camellias",
        "author": "Alexandre Dumas fils",
        "characters": [
          "Marguerite Gautier",
          "Armand Duval",
          "Prudence",
          "Count de Varville"
        ],
        "publishInfo": {
          "year": 1848,
          "country": "France"
        }
      }
    ]

    存储

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

    在小程序端可以分别调用 wx.cloud.uploadFile 和 wx.cloud.downloadFile 完成上传和下载云文件操作。下面简单的几行代码,即可实现在小程序内让用户选择一张图片,然后上传到云端管理的功能:

    // 让用户选择一张图片
    wx.chooseImage({
      success: chooseResult => {
        // 将图片上传至云存储空间
        wx.cloud.uploadFile({
          // 指定上传到的云路径
          cloudPath: 'my-photo.png',
          // 指定要上传的文件的小程序临时文件路径
          filePath: chooseResult.tempFilePaths[0],
          // 成功回调
          success: res => {
            console.log('上传成功', res)
          },
        })
      },
    })
    

    上传完成后可在控制台中看到刚上传的图片。

    云函数

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

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

    比如我们如下定义一个云函数,命名为 add ,功能是将传入的两个参数 a 和 b 相加:

    // index.js 是入口文件,云函数被调用时会执行该文件导出的 main 方法
    // event 包含了调用端(小程序端)调用该函数时传过来的参数,同时还包含了用户登录态 `openId` 和小程序 `appId` 信息
    exports.main = (event, context) => {
      let { userInfo, a, b} = event
      let { openId, appId} = userInfo // 这里获取到的 openId 和 appId 是可信的
      let sum = a + b
    
      return {
        openId,
        appId,
        sum
      }
    }
    

    在开发者工具中上传部署云函数后,我们在小程序中可以这么调用:

    wx.cloud.callFunction({
      // 需调用的云函数名
      name: 'add', 
      // 传给云函数的参数
      data: {       
        a: 12
        b: 19,
      },
      // 成功回调
      complete: console.log
    })
    // 当然 promise 方式也是支持的
    wx.cloud.callFunction({
      name: 'add',
      data: {
        a: 12,
        b: 19
      }
    }).then(console.log)
    

    如需在云函数中操作数据库、管理云文件、调用其他云函数等操作,可使用官方提供的 npm 包 wx-server-sdk 进行操作

    为什么需要wx-server-sdk这个包呢,什么需要用呢?

    其实这个库是为在云函数里可以操作数据、文件、调用其他云函数,而云函数是运行在云端,可以理解为是node端,所以不能和客户端使用一套api,所以微信提供了这么一套服务端的api,正好和客户端api相对应了;

    官方文档请看:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/getting-started.html

  • 相关阅读:
    POJ3094 UVALive3594 HDU2734 ZOJ2812 Quicksum【进制】
    UVALive5583 UVA562 Dividing coins
    POJ1979 HDU1312 Red and Black【DFS】
    POJ1979 HDU1312 Red and Black【DFS】
    POJ2386 Lake Counting【DFS】
    POJ2386 Lake Counting【DFS】
    HDU4394 Digital Square
    HDU4394 Digital Square
    UVA213 UVALive5152 Message Decoding
    UVA213 UVALive5152 Message Decoding
  • 原文地址:https://www.cnblogs.com/crith/p/9629776.html
Copyright © 2011-2022 走看看