1.微信小程序云开发使用那些简单的开通什么?

2022-02-06
来源:网络整理

1.微信小程序云开发背景

我之前实际上并没有接触过它。在开发小程序云的时候,基于我的小印象,我一直认为它是一个相当于mock data的功能。方便前端工程师根据文档快速搭建mock API(CGI),然后进行开发。为了提高开发效率,经过实际了解,它们之间有相似之处,但也有更多不同之处。

1.1 数据存储的扩展

由于小程序本身存储数据的能力有限,无法在客户端保存大量数据,而且将数据保存在本地既不安全,也不能与其他小程序用户共享,所以大部分小程序程序需要一个服务服务端可以用多种技术实现,比如PHP、Node.js等,不管用什么技术来实现服务端,都增加了开发的复杂度

1.2 后端业务相似度

微信小程序云开发就是将服务端的功能封装起来,然后提供API(CGI)给客户端来访问这些封装后的功能。服务器的主要功能不外乎数据存储、文件上传下载、视频/音频流等功能。这些功能大部分都是业务逻辑相近,复用性强,但耗时较长,所以打包给客户端调用,可以提高开发效率,降低开发成本。

2.使用云开发

先不说简单的开局,先从比较复杂的说起。

2.1 如果不使用构建工具,直接启动项目,我觉得上手会容易很多。毕竟微信小程序可以直接创建云开发小程序模板,然后就看文档画图了。

2.2 开始构建项目时,我把构建工具当成一个小程序使用。毕竟改动不大小程序云数据库开发实例,只是方便wxss,使用scss语法,所以用构建工具构建项目的时候,很多地方需要注意。一、取出小程序入口目录、插件目录、云函数目录,在..json中添加**"":"/",

"": "/",** 这两个配置项,一个指定小程序的根目录,一个是指云函数的根目录,这样小程序打包时就不会进入云函数文件. 微信开发者工具,下面会有几个黄色警告,这个很不爽。

2.3 部署云功能,这部分可以使用小程序开发工具创建的模板的云功能来体验和学习,按照文档中的说明操作即可。

2.4 体验完,进入正题,创建云函数

一个云函数基本上包括这三个文件。json、.json 和 .js。其中 .json 和 .json 不是必须的文件。前者作为定时触发器的配置文件存在,后者在本地使用。要调试云功能,npm 下载依赖于 'wx--sdk' 的存在。

2.4.1 = ('wx--sdk')

基本上每个云功能都有的一个语句,提供云功能的全部基础能力(本地调试)

当开发者直接使用小程序开发工具点击云开发模板时,他的实例的每个云功能都有一个语句,提供了云功能的全部基础能力(本地调试)。在实际开发中也可以不用这个。这意味着在您的云函数中没有依赖于 wx--sdk 的函数。

以下2个示例代码:

// const cloud = require('wx-server-sdk') // // 初始化 cloud // cloud.init({ // // API 调用都保持和云函数当前所在环境一致 // env: cloud.DYNAMIC_CURRENT_ENV // }) let a = 0; let b = 1; exports.main = (event, context) => { return{ sum : a+b , } }

const cloud = require('wx-server-sdk') // 初始化 cloud cloud.init({ // API 调用都保持和云函数当前所在环境一致 env: cloud.DYNAMIC_CURRENT_ENV }) let a = 0; let b = 1; exports.main = (event, context) => { return{ sum : a+b , } }

结果总是输出为 {sum: 1}

如果用wx--sdk初始化云,基本就是创建云函数的标准

微信小程序云开发视频教程_云开发小程序实例_小程序云数据库开发实例

cloud.init({ // API 调用都保持和云函数当前所在环境一致 env: cloud.DYNAMIC_CURRENT_ENV })

那么什么是wx--sdk?

2.4.2 云函数的入口函数

相当于对应C语言中的main函数,里面的一些基本业务逻辑其实和es6没什么区别。

//异步输出 exports.main = async (event, context) => { //主要逻辑 } //同步输出 exports.main = (event, context) => { //主要逻辑 }

基本上云功能的创建就是这样。在小程序端调用也很简单。

首先需要在app.js中初始化云函数调用

if (!wx.cloud) { console.error('请使用 2.2.3 或以上的基础库以使用云能力') } else { wx.cloud.init({ // env 参数说明: // env 参数决定接下来小程序发起的云开发调用(wx.cloud.xxx)会默认请求到哪个云环境的资源 // 此处请填入环境 ID, 环境 ID 可打开云控制台查看 // 如不填则使用默认环境(第一个创建的环境) env: 'test-ba05b', traceUser: true, }) }

示例如下:

//事件调用区域 onGetOpenid() { // 调用云函数 wx.cloud.callFunction({ name: 'login',//这里是云函数的名字,基本上也就对应创建的云函数的文件夹名 data: { }, success: res => { wx.showModal({ title: '提示(opendid)', content: `${ res.result.openid}`, success (res) { if (res.confirm) { wx.cloud.callFunction({ name:"test", data:{ }, }).then((res)=>{ console.log(res.result) }) console.log('用户点击确定') } else if (res.cancel) { console.log('用户点击取消') } } }) console.log(res.result) //console.log('[云函数] [login] user openid: ', res.result.openid) }, fail: err => { console.error('[云函数] [login] 调用失败', err) } }) },

还有一点需要注意的是,同名云功能的云部署和更新上传前不需要删除,文件更新直接上传即可。

2.4.3 数据库的使用

其实我个人认为云功能的初步使用应该放在小程序云开发的数据库前面。虽然对整个云开发很熟悉,但是感觉云开发中的云功能主要是针对数据库的。不过云功能也可以把不依赖数据库的公共服务写在云端,不过这似乎意义不大,却可以让开发者快速掌握云功能。这样更容易熟悉云功能和数据库相关的开发。

下面的代码在一个页面的js中直接调用,即使用数据库

db.collection('todos').add({ data: { id: 1, openid:'fsdfsafdsaf', todoname:"代办事项二" }, success: res => { // 在返回结果中会包含新创建的记录的 _id wx.showToast({ title: '新增记录成功', }) console.log('[数据库] [新增记录] 成功,记录 _id: ', res._id) }, fail: err => { wx.showToast({ icon: 'none', title: '新增记录失败' }) console.error('[数据库] [新增记录] 失败:', err) } }) },

直接使用云函数,如创建添加云函数,使用云函数添加数据,示例代码如下:

const cloud = require('wx-server-sdk') // 初始化 cloud cloud.init({ // API 调用都保持和云函数当前所在环境一致 env: cloud.DYNAMIC_CURRENT_ENV }) exports.main = async (event, context) => { const db = cloud.database(); let message = await db.collection('todos').add({ data: event, }) return message; }

然后直接调用这个云函数

//使用云函数进行数据库操作 wx.cloud.callFunction({ name:"test", data:{ id: 3, openid:'fsdfsafdsaf', todoname:"代办事项三" } }).then(res=>{ console.log(res.result)//然后根据res.result 的errCode来判断是否上传成功 })

备注:#云开发

这是云开发的快速入门指南,演示了如何开始使用云开发的三个基本功能:

参考文档

分享