小程序云开发入门-学习路径

232 阅读3分钟

1.云开发概念

  • 云开发提供完整的原生云端支持和微信服务支持,弱化后端和运维概念. 开发者不需要搭建服务器就可以实现快速上线和迭代

  • 云开发能力( 数据库,存储,云函数,云调用,http api)

2.快速构建小程序云开发的demo

> 必须存在APPID7465-test-lxy-1302856589.tcb.qcloud.la/image.png?s…

> 目录结构主要是三部分7465-test-lxy-1302856589.tcb.qcloud.la/1.png?sign=…

cloudfunctions (可自定义,云函数存储目录)
miniprogram (普通小程序结构)
project.config.json (相关配置)

> project.config.json下目录说明:

"miniprogramRoot": "miniprogram/",
"cloudfunctionRoot": "cloudfunctions/",

> 初始化云开发小程序:

App({
    onLaunch: function () {
        if (!wx.cloud) {
            console.error('请使用 2.2.3 或以上的基础库以使用云能力')
        } else {
            wx.cloud.init({  //方法只能调用一次,多次调用时只有第一次调用生效。
                env: '小程序api调用的云环境',
                traceUser: true,
            })
        }
    }
})

3. 云开发控制台简介(包括环境)

  • 数据库

> 数据库: 数据库下包含多个集合(表),集合可以看成是json数组,每一个对象就是一条记录

1.获取数据库的引用
const db = wx.cloud.database()

2.获取集合引用
const cName = db.collection('集合名称')

> 简介数据的基础操作语法

//获取某个集合的全部具体内容()
wx.cloud.database().collection('language').get().then(res => {
    console.log(res) //默认返回20条小程序端
})

//条件查询
wx.cloud.database().collection('language').where({username:'张三'}).get().then(res => {
    console.log(res) //默认返回20条小程序端
})

//添加
wx.cloud.database().collection('language').add({
    data
}).then(res => {
    console.log(res)
})

//更新某一条数据,更复杂的指令 db.command
wx.cloud.database().collection('language').where({_id:'1111222'}).updata({
    data:{
        username: '李四'
    }
}).then(res => {
    console.log(res) 
})

//删除id为1的数据
wx.cloud.database().collection('language').doc('1').remove().then(res => {
    console.log(res)
})

> 拓展(请求面板)

1.7465-test-lxy-1302856589.tcb.qcloud.la/network.png…

2.7465-test-lxy-1302856589.tcb.qcloud.la/request.png…

  • 存储(uploadFile,downloadFile,deleteFile等)

    wx.cloud.uploadFile({ cloudPath: 'example.png', // 上传至云端的路径 filePath: '', // 文件路径 }).then(res => { console.log(res) })

  • 云函数

> 创建云函数(环境):右键新建node云函数命令为add,将自动上传至云端,部署同理

> 云函数目录分析

// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init()

// 云函数入口函数
exports.main = async (event, context) => {
    const wxContext = cloud.getWXContext()

    return {
        event,
        openid: wxContext.OPENID,
        appid: wxContext.APPID,
        unionid: wxContext.UNIONID,
    }
}
//context 主要是调用信息和运行状态,可以用它来了解服务运行的情况

> 小程序端云函数的使用

wx.cloud.callFunction({
    name:'add',
    data:{}
}).then(res => {
    console.log(res)
})

> 本地调试(云函数右键)

  1. 相应的云函数下安装依赖

  2. 1.02.1903211 或以上版本的开发者工具

> 日志查看

  • 云调用

> 概念:基于云函数使用小程序服务端相关的api

  • 需要在服务端调用(云函数里)

  • 使用开放数据(例如微信运动步数,)

  • 消息推送

> 使用配置config.json

> 订阅消息demo

  • 操作步骤: 获取模板 ID > 获取下发权限 > 调用接口下发订阅消息

7465-test-lxy-1302856589.tcb.qcloud.la/WX20201230-…(配置模版)

//小程序端
Page({
    data:{
        proname:'大鸡腿plus',
        price:'99.9元',
        time:'2020年10月1日 15:01',
        order:1234567898,
        title:'如有问题请联系客服110,24小时在线~',
    },
    async messagePush(){
        let data1 = this.data
        let id ='Ykm10SPyzVEpqjqqsK84buf0GAizNlNuHsfG6QGHChA'
        let v1 = await wx.requestSubscribeMessage({tmplIds:[id]})
        if(v1[id] == 'accept'){
            wx.cloud.callFunction({name: 'messagePush',data:data1}).then(res => {
                wx.showToast({
                    title: '发送成功~',
                })
            })
        }
    }
})



//云函数

//index.js
// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init()

// 云函数入口函数
exports.main = async (event, context) => {
    const { OPENID } = cloud.getWXContext()
    const { proname,price,time,order,title} = event
    
    const result = await cloud.openapi.subscribeMessage.send({
        touser: OPENID, 
        templateId: 'Ykm10SPyzVEpqjqqsK84buf0GAizNlNuHsfG6QGHChA',
        data:{
            "thing6":{ value: proname},
            "amount7": { value: price},
            "date10": { value: time},
            "character_string9": { value: order},
            "thing5": { value: title},
        },
        page:'page/messagePush/messagePush'  //通知消息后的按钮跳转地址
    })
    return result
}
  • 结果

7465-test-lxy-1302856589.tcb.qcloud.la/WechatIMG12…