uniCloud云函数概述
uniCloud.init 访问非绑定的uniCloud空间。
当需要访问非绑定的空间资源时,可以通过以下代码实现访问其它空间资源:
客户端无论腾讯阿里均支持。云端uniCloud.init方法仅腾讯云支持,且仅能获取同账号下的腾讯云服务空间的uniCloud实例。
//开发者创建了多个服务空间,则需手动初始化。 const myCloud = uniCloud.init({ provider: 'aliyun', //【必需】空间类型,可选值:aliyun、tencent、alipay spaceId: 'xxxx-yyy', //【必需】服务空间ID,可以在uniCloud控制台服务空间列表中查看 clientSecret: 'xxxx', //【必需】仅阿里云支持,可以在uniCloud控制台服务空间列表中查看 accessKey: 'xxx', //【必需】仅支付宝云支持, 可以在uniCloud控制台服务空间详情中查看 secretKey: 'xx', //【必需】仅支付宝云支持, 可以在uniCloud控制台服务空间详情中查看 spaceAppId: 'xxx', //【必需】仅支付宝云支持, 可以在uniCloud控制台服务空间详情中查看 endpoint: 'xxx', //【可选】服务空间地址,仅阿里云与支付宝云支持。阿里云商用版请将此参数设为https://api.next.bspapp.com }); //通过uniCloud实例调用云开发的API myCloud.callFunction() myCloud.uploadFile()
源文URL:https://doc.dcloud.net.cn/uniCloud/concepts/space.html
uniCloud的云函数分为:
- 普通云函数(https://www.cnblogs.com/wm218/p/18138491)
- 云对象(https://www.cnblogs.com/wm218/p/18139765)
- 公共模块(https://www.cnblogs.com/wm218/p/18141504)
普通云函数、云对象与客户端通信
云函数执行过程中,客户端可以通过相关事件获取执行进度,这里分客户端与云函数端进行代码模块整理:(原文:https://doc.dcloud.net.cn/uniCloud/sse-channel.html)
客户端获取云函数执行进度代码如下:
const channel = new uniCloud.SSEChannel() //创建消息通道 export default { data() {}, onLoad() {}, methods: { // async testSSE() { this.ListenerMessage() this.ListenerEnd() await this.openSSE() // 必需在开启通道后,调用云函数 const res = await uniCloud.callFunction({ name: 'massive-task', data: { channel: channel // 调用云函数时传入通道对象(注意必需带入此参数) } }) }, // 监听message事件: 云函数向客户端发送消息 ListenerMessage() { this._ListenerMessage() }, _ListenerMessage() { channel.on('message', (message) => { console.log('on message', message); }) }, // 监听end事件:云函数告诉客户端它执行完成 ListenerEnd() { this._ListenerEnd() }, _ListenerEnd() { channel.on('end', (message) => { console.log('on end', message); }) }, // 监听通道错误 ListenerError() { this._ListenerError() }, _ListenerError() { channel.on('error', (err) => { console.error('收到错误:', err) }) }, //移除监听 removeListenerMessage() { channel.off('message', this._ListenerMessage) }, removeListenerEnd() { channel.off('end', this._ListenerEnd) }, removeListenerError() { channel.off('error', this._ListenerError) }, // 开启通信 async openSSE() { await channel.open() //注意这里是 await调用 }, // 关闭通信 async closeSSE() { await channel.close() } } }
云函数向客户端发送进度消息,代码模板如下:
// 普通云函数代码 exports.main = async (event, context) => { const channel = uniCloud.deserializeSSEChannel(event.channel) await channel.write({ a: 1 }) await channel.write({ a: 2 }) await channel.write({ a: 3 }) await channel.write({ a: 4 }) await channel.end({ //end 如果客户端不需要end事件可不写 a: 5 }) return {} };
// 云对象代码 module.exports = { excuteTask(param) { const channel = uniCloud.deserializeSSEChannel(param.channel) await channel.write({ a: 1 }) await channel.write({ a: 2 }) await channel.write({ a: 3 }) await channel.write({ a: 4 }) await channel.end({ a: 5 }) return {} } }
schema2code功能可以根据数据库配置说明,自动将数据库生成前端或后端页面(HTML + CSS + 具体功能实现,比如添加、编辑、列表、删除 )。