• 微信小程序又一爆炸功能上线-云开发


    云开发介绍

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

    云开发为开发者提供完整的云端支持,弱化后端和运维概念,无需搭建服务器,使用平台提供的 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

  • 相关阅读:
    干货:分布式系统详解
    如果有人问你数据库的原理,叫他看这篇文章
    MySQL的B树索引与索引优化
    优化网站性能必备的6种架构方案,你知道吗?
    【干货】手把手教你搭建一套可自动化构建的微服务框架
    你真的理解微服务架构吗
    Android Activity 半透明效果(Translucent)
    Android DatepickerDialog(日期选择器)的使用
    Android搜索自动提示功能 AutocompleteTextView
    Android动态加载ListView中的Item
  • 原文地址:https://www.cnblogs.com/crith/p/9629776.html
Copyright © 2020-2023  润新知