10分钟带你0基础入门小程序云开发,从理论到实践,从前端到全栈

一、前端发展

在开始讲解小程序云开发之前,我们先来看一下前端的发展图。

在这里插入图片描述

那么接下来前端3.0,又是什么时代?

目前有两种声音:

  • 前后端包揽的“大前端”,也就是全栈,关键性技术是Node.js;
  • 以React-Native、Flutter、uniapp为突破点的“泛前端”,即全端

但是以目前来看,不管以RN,还是Flutter来看,都未必是成熟,全端任重而道远。

相对来说,前端下一步发展为全栈的可能性更高。

基于这个前提下,serverless便是成就此道的革命性技术。


二、核心 Serverless

目前业内对于Serverless的普遍认知是 FaaS + BaaS的综合体

那么FaaS、laaS、PaaS、SaaS又是什么呢?

2.1、各种aas区别

customer 客户 vender 提供商

请添加图片描述

  • IaaS(Infrastructure as a Service)设施即服务
  • PaaS(Platform as a Service)平台即服务
  • FaaS(Function as a service)函数即服务
  • BaaS(Backend as a service)后端即服务
  • SaaS(Software as a service)软件即服务

2.2、概念模型

腾讯云的相关团队将Serverless的具体实现为下图所示的模型。
请添加图片描述

以此为支撑,落地到具体应用场景中的云开发模式如下图:
请添加图片描述

2.3、优缺点

优点缺点
构建和部署更简单复杂逻辑不好实现(无状态管理)
提升开发效率测试不好排查(多函数,分散、无调试工具)
降低运维需求和成本冷启动慢&高延迟(高度分布式、低耦合)

​2.4、应用场景

Serverless 架构自提出到现在经过若干年的发展,已经在很多领域中有着非常多的最佳实践。
总结出一些 Serverless 架构所适合的场景。
请添加图片描述

  • 实时文件处理
  • 实时数据处理
  • 机器学习(AI推理预测)
  • Web 应用/移动应用后端
  • 音视频转码

2.5、总结

  1. Serverless作为新兴的服务,还处在发展阶段,有明显的优势,但同时也存在一定的问题
  2. Serverless主要优势为轻量级的聚合能力(模式聚合&数据聚合)、操作便捷的扩展能力,可以很好地应用于数据服务化、AI等场景

三、云开发能力

3.1、数据库

云开发提供了一个 JSON 数据库,可视化管理,可以在云开发控制台打开。
请添加图片描述
请添加图片描述

数据库 API :

// 云端初始化
wx.cloud.init({
    //   如不填则使用默认环境(第一个创建的环境)
    // env: 'cloud1-123456',
    traceUser: true
})

// 数据库初始化
const db = wx.cloud.database()

// 增
db.collection('todos').add({
  data: {
    description: "learn cloud database",
    due: new Date("2018-09-01"),
    done: false
  },
  success: function(res) {
    // res 是一个对象,其中有 _id 字段标记刚创建的记录的 id
    console.log(res)
  }
})

// 删
db.collection('todos').doc(_id).remove({
  success: function(res) {
    console.log(res.data)
  }
})

// 改
db.collection('todos').doc(_id).update({
  data: {
    // 表示将 done 字段置为 true
    done: true
  },
  success: function(res) {
    console.log(res.data)
  }
})


// 查
db.collection('todos').where({
  _openid: 'user-open-id',
  done: false
})
.get({
  success: function(res) {
    // res.data 是包含以上定义的两条记录的数组
    console.log(res.data)
  }
})

具体的请看:数据库 | 微信开发文档

3.2、存储

云开发也提供了一块存储空间。
请添加图片描述

在小程序端可以分别调用 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)
      },
    })
  },
})

3.3、云函数

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

云函数就是运行在云端的方法函数代码(接口/服务)

const cloud = require('wx-server-sdk')

cloud.init()
const db = cloud.database()

exports.main = async (event, context) => {
  //  let { id, nickName } = event 传参
  
  // 这里获取到的 openId 和 appId 是可信的
  let { OPENID, APPID } = cloud.getWXContext() 
  return new Promise((resolve, reject) => {
    db.collection('userList').where({
      _openid: OPENID
    }).get().then(res => {
      resolve(res)
    }).catch(err=>{
      reject(err)  
    })
  })
}

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

wx.cloud.callFunction({
  name: 'getUserInfo',
  // data: {
  //  id: '',
  //  nickName: ''  
  // }
  success: res => {
    this.setData({
      userInfo: res.result.data[0] || {}
    })
  }
})

// 当然 promise 方式也是支持的
wx.cloud.callFunction({
  name: 'getUserInfo',
}).then(res=>{
   this.setData({
      userInfo: res.result.data[0] || {}
    }) 
})

云函数的请求参数 data 有大小限制(100K)

3.4、云调用

云调用是云开发提供的基于云函数使用小程序开放接口的能力,支持在云函数调用服务端开放接口,如发送模板消息、获取小程序码等操作都可以在云函数中完成。

具体的可以参考,云调用 | 微信开放文档 (qq.com)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值