社区/学习指南/小程序·云开发高级教程

云开发资源管理

14.1.1 开发人员的工具链

1、通过云开发网页后台管理云开发资源

我们可以登录腾讯云官网的 云开发后台管理,选择使用微信公众号登录,然后用该小程序管理员的微信扫描二维码,就可以在网页控制台里看到我们使用微信开发者工具创建的小程序云开发资源了。

在这里可以管理小程序云开发的数据库、文件(存储)、云函数、监控告警、日志检索以及环境设置,也可以对云开发资源的服务进行续费,是一个完全可以替代云开发控制台的可视化管理工具。

腾讯云的这个云开发网页控制台相比开发者工具的控制台来说,功能更多更全面,很多新的功能也是会先发布在这里,比如:

  • 静态网站托管:可以将 hexo、vuepress、hugo 等生成的静态博客、自己创建的静态网页网站托管到云开发环境里;

  • 文件存储的缓存设置:缓存过期配置是一套针对用户文件的缓存策略,可降低 CDN 回源率;

  • 云存储安全规则

  • 用户管理的登录设置:跨多端必不可少的功能,支持自定义登录、微信公众平台、微信开放平台以及匿名登录等;

  • 云函数的 HTTP 触发:HTTP 触发是云开发为开发者提供的 HTTP 访问服务,让开发者可以通过 HTTP 访问到自己的云开发资源。

  • 私有网络,是一块在腾讯云上自定义的逻辑隔离网络空间,可以为云服务器、云数据库等资源构建逻辑隔离的、用户自定义配置的网络空间,以提升用户云上资源的安全性,并满足不同的应用场景需求;

  • 云函数除了支持 Nodejs 还支持 php,之后可能会增加更多的编程语言;

  • 可以按资源包购买云环境的资源,开启按量付费之后,购买资源包更划算;

  • 云开发环境的自动降配:云开发环境到期后若满足条件,系统将自动为您降为免费版环境,避免存储的资源因付费不及时而被清空

  • 拓展能力:支持图像安全审核、图像标签、图像处理、图像盲水印等,而且拓展能力还在持续添加中

2、跨云开发环境进行管理

如果你开通了多个云开发环境(小程序云开发环境、Web 端云开发环境等),也就有了多个云开发资源环境,那我们是否可以在 A 小程序的云函数里调用 B 小程序的云开发资源呢?当然可以,通过@cloudbase/node-sdk 这个依赖就能很方便的实现。

@cloudbase/node-sdk也就是云开发的服务端 SDK,让你可以在服务端(如腾讯云云函数或 CVM 等)使用 Nodejs 服务访问 云开发 的服务,也就是服务端 SDK 是云开发环境必备的一个依赖。在我们给云函数安装 wx-server-sdk 时就已经同时安装了该依赖,也就是我们无需再安装就可以直接用它来实现跨云开发环境来调用资源。

比如我们可以在 A 小程序的云函数里填入 B 小程序的 secretId 和 secretKey 以及环境 ID,这里的 secretId 和 secretKey,

  • 可以填写 B 小程序的 appid 和 key,这个在 B 小程序的控制台就可以找到,因为小程序云开发的环境可以创建两个,所以我们可以通过填写环境 ID 来确定是哪个环境;

  • 你也可以腾讯云 API 固定密钥对,腾讯云密钥对获取,这个密钥对会管理该账号下的所有云开发环境,我们可以通过填写环境 ID 来确实是哪个环境

  • 如果不填写 secretId 和 secretKey,就表示初始化的是 A 小程序的云开发环境了。

比如我们想在 A 小程序的云函数里对 B 小程序的数据库进行增删改查,在 A 小程序的云函数里比如云函数名为 cross,在 cross 云函数的 index.js 里写如下代码,当我们在小程序调用 cross 云函数时,就能往 B 小程序的数据库里添加一条记录了:

const cloud = require("wx-server-sdk");

cloud.init({
  //任意云开发环境,包含B小程序创建的云开发环境,你一定要找到对应的腾讯云的secretId和secretKey哦

  secretId: "AKIDUmqiIcQUyA...GsDH6frnvcjZ",

  secretKey: "iChEVXL7mBKJ...GqRmrgFYZ7",

  env: "hac...1279b",
});

const db = cloud.database();

exports.main = async (event, context) => {
  const { OPENID } = cloud.getWXContext();

  const result = await db.collection("test").add({
    data: {
      openid: OPENID,

      name: "李东bbsky",

      interest: ["爬山", "旅游", "读书"],
    },
  });

  return result;
};

服务端 SDK 也就是@cloudbase/node-sdk 的用法,与小程序云函数端(服务端)的用法是一致的。该依赖更多信息可以通过阅读在 Github 上的技术文档来了解。

@cloudbase/node-sdk 是云开发 Nodejs 的服务端 SDK,而云开发也在不断支持更多的编程语言,比如 php,而tcb-php-sdk则是云开发 php 语言的服务端 SDK。

3、通过 CLI 工具来管理云开发资源

CloudBase CLI 是一个开源的命令行界面交互工具,用于帮助用户快速、方便的部署项目,管理云开发资源。对于开发人员来说,我们还可以通过cloudbase-cliCLI 工具使用命令行对云开发资源进行管理。

如果你想使用 Visual Studio Code 在电脑本地来开发小程序和进行 Web 端云开发,可以使用 Cloudbase Cli 命令行工具来管理云开发的环境。

  • 云开发环境的创建、环境配置的创建、更改环境登录方式、展示环境信息;

  • 云函数列表展示、下载、部署、删除、更新代码、更新配置、拷贝云函数、打印云函数日志、触发云函数;

  • 文件存储文件列表、文件临时访问地址、文件信息、文件权限的获取与设置、文件/文件夹的上传、删除、列表获取、信息获取;

  • 静态网站的部署、删除

  • HTTP Service 的创建、删除、绑定、解绑、查询等

在电脑本地部署 Nodejs 环境,结合 VS Code 编辑器,Cloudbase CLI 是一个可以取代微信开发者工具来做跨端云开发的重要工具,当然小程序和网页的一些与账号有关调试还是离不开微信开发者工具。

14.1.2 云开发后台管理系统的开发

我们应该如何让市场、运营、产品等来管理云开发的资源(如添加商品、发表文章等),通常我们需要搭建一个后台,便于不懂代码的人员来进行可视化管理,尽管我们可以把这个后台直接搭建在小程序里面,但是 PC 端的后台可能更加方便一些。

1、cloudbase-manager-node

cloudbase-manager-node是云开发的管理端 SDK,它支持开发者通过接口形式对云开发提供的云函数、数据库、文件存储等资源进行创建、管理、配置等操作。

相比于云开发的服务端 SDK,管理端 SDK 在管理云开发环境的资源上功能更加丰富;使用管理端 SDK 可以在本地电脑、Linux、Windows 等服务器里搭建云开发环境的管理后台。我们仍然可以把管理端 sdk cloudbase-manager-node 引入到云函数,取得一些服务端 sdk(wx-server-sdk)没有的能力,比如:

  • 检查集合是否存在以及删除集合 ,通过 checkCollectionExists('')接口检查集合是否存在,与创建集合结合起来使用,可以说是天作之合;管理吨 SDK 也可以 deleteCollection('')删除集合;

  • 操作索引 ,更新索引,判断索引是否存在,获取索引的信息,索引的命中次数、大小;

  • 导入导出数据 ,将对象存储里的 csv 或 json 文件导入到数据库,也可以把数据库里的数据导出到 csv 或 json 文件,并能获取导入导出是否成功;

  • 文件夹操作 ,上传或删除文件夹,获取文件夹里所有文件的信息,获取并云存储的权限;

  • 操作云函数,获取云函数列表,创建和删除云函数,更新云函数的代码和配置,创建和删除云函数的触发器;

  • 创建发布层 Layer ,通过 Layer,同一个账号内的云函数可以复用代码块,跨账号可以共享代码块;

  • 操作安全规则 ,不仅可以查看数据库和云存储的安全规则,还能修改数据库和云存储的安全规则;

tcb-php-sdk 是云开发 php 语言的服务端 SDK,那与之相应的,tcb-manager-php 是云开发 php 语言的管理端 SDK。

2、Web 端 SDK

云开发同样适用于网站开发,Web 端是云开发中针对网站应用的统称,包含以下几个场景:普通网站应用(PC 端)、移动页面或者 H5 网页、公众号网页。如果你想将云开发这种免服务器免运维的开发理念和方式贯彻到 web 端,也可以直接把小程序云开发的环境切换到按量付费,那这个环境就可以成为 web 端开发的环境,实现一云多端,不需额外购置服务器就能来在网页 Web 端来管理小程序云开发环境里的资源。在后面我们也会简单介绍一下 Web 端云开发的相关内容。

3、云接入(HTTP 触发)

云接入是云开发基于云函数之上为开发者提供的 HTTP 访问服务,开发者可以轻松使用 POST、PUT、GET、DELETE 等方法通过 HTTP 请求访问到云开发环境内的全部资源,而不需要使用 Web 端 SDK,后面也会具体介绍。

4、使用 HTTP API 来管理云开发资源

开发人员还可以使用 HTTP API 搭建一个网页后台,HTTP API 适用于所有平台所有的编程语言以及所有的平台。云开发官方技术文档有非常详细的 HTTP API 技术文档 ,通过 HTTP API 我们可以实现对数据库的集合、记录、文件等的增删改查以及触发云函数。HTTP API可以完全被云接入以及 SDK 给取代,各方面的处理更好更合理,所以我们不再单独介绍 HTTP API 啦。

本文出自 李东bbsky