小程序·云开发初体验

小程序·云开发初体验

云开发基本情况

云开发(Tencent Cloud Base, TCB)是腾讯云为移动开发者提供的一站式后端云服务,它帮助开发者统一构建和管理资源,免去了移动引用开发过程中繁琐的服务器搭建以及运维、域名注册及备案、数据接口实现等繁琐的流程,让开发者可以专注于业务逻辑的实现,而无需理解后端逻辑及服务器运维知识,开发门槛更低,效率更高。

云开发能力

  • 云数据库:提供高性能的数据库写入和查询服务。通过TCB的SDK,可以直接在客户端对数据经行读写,也可以在云函数中读写数据,还可以通过控制台,数据进行可视化的增删改查等操作。目前云开发的数据库为Mongodb
  • 存储:提供高扩展性,低成本、可靠和安全的文件存储服务。可以满足不同场景下的文件访问管理。开发者可以在客户端和云函数端通过API直接使用存储
  • 云函数:(运行环境node.js)云函数是在云端运行的函数,无需购买、搭建服务器,只需编写函数代码并部署到云端,即可在腾讯云基础设施上弹性、安全的运行代码。

编程基础

  • HTML、CSS,务必掌握flex布局
  • Js推荐更多的使用ES5,ES6,深入了解js事件触发机制
  • Node.js运行在服务端的javascript,云函数现有唯一支持的语言
  • MongoDB:介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系数据库的。云开发现有唯一支持的数据库。
  • vue.js现有前端开发必备能力

云开发流程

小程序开发-普通开发:购买服务器域名,部署服务器环境,配置SSL证书,配置服务器信息,请求调试

小程序云开发:调用API

两种开发可兼容

云开发开通与项目初始化

  1. 新建小程序项目,必须填写APPID(不可使用测试号,如果使用测试号你是选不了云开发的,腾讯说的,不解释),后端服务使用小程序云开发。

  2. 点击微信开发者工具云开发工具栏开通云开发(AppID 首次开通云环境后,需等待大约 10 分钟方可正常使用云 API,在此期间官方后台服务正在做准备服务,如尝试在小程序中调用云 API 则会报 cloud init error:{ errMsg: "invalid scope" } 的错误 ,这个时候不要慌,等10分钟左右就好了)

  3. project.config.json添加字段cloudfunctionRoot用于指定存放云函数的目录

  4. 使用云能力前,需先调用wx.cloud.init方法完成云能力初始化(env:指定云开发环境)

  5. 获取openid(数据库操作大多需要用户openid,需要先配置好login云函数),如遇到未安装wx-server-sdk模块,请先安装node.js再参考如下链接

数据库开发基础

上手数据库

  • 创建第一个集合:打开控制台,选择“数据库 ”标签页,通过“添加集合”入口创建一个集合。假设我们要创建一个数据查询小程序,我们创建一个名为counters的集合。创建成功后,可以看到counters集合管理界面,界面中我们可以添加记录、查找记录、管理索引和管理权限。

  • 按照快速启动模板提示进行添加记录。如需在数据表中导入数据,则json或csv格式的数据编码必须是UTF-8

  • 数据类型介绍

    Null 相当于一个占位符
    String 字符串
    Number 数字
    Object 对象
    Array 数组
    Bool 布尔值
    GeoPoint 地理位置点
    Date 时间
  • 数据权限控制

  • 数据库初始化:开始使用数据库API进行增删改查操作之前,需要先获取数据库的引用。如下调用获取默认环境数据库的引用:

    const db = wx.cloud.database()
    const testDB = wx.cloud.database({
        env:''//测试环境
    })
    
  • 可以通过在集合对象上调用add方法往集合中插入一条记录:

    db.collection('test').add({
      data:{
          test:'插入数值'
      },
      success:res =>{
          //在返回结果中会包含新创建的记录的_id
          this.setData({
              csid:res._id,
              test:'插入数值'
          })
      }
    })
    
  • 数据库查询

    db.collection('test').doc('数值').get({
        success:function(res){
            //res.data包含该纪录的数据
            console.log(res.data)
        }
    })  
    
  • 其余不做解释

存储管理基础

云函数架构基础

  • 最基础的云函数:将两个数字相加的函数作为第一个云函数示例

    wx.cloud.callFunction({
        name:'add',//要调用的云函数的名称
        data:{//传递给云函数的参数
            x:1,
            y:2,
        },
        success:res =>{ 
        //成功后的回调
        },
        fail:err =>{},
        complete:() =>{
            //执行完成后
        }
    })
    

    云函数

    exports.main =(event,context) =>{
        return{
            sum:event.a+event.b
        }
    }
    

    上传并部署成果之后即可

  • 使用npm:在云函数中我们可以引入第三方依赖来帮助我们更快的开发。云函数的运行环境是Node.js。因此我们可以使用npm安装第三方依赖。

  • 异步返回结果:经常,我们需要在云函数中处理一些异步操作,在异步操作完成后再返回结果给到调用方。此时我们可以通过在云函数中返回一个Promise的方法来完成。

    //index.js
    export.main = async(event,context) =>{
        return new Promise((resove,reject){
            //在3秒后返回结果给调用方(小程序/其他云函数)
            setTimeout(() =>{//定时器
                resove(event.a+event.b)
            },3000)
        })
    }
    

    云函数运行机制

    • 运行环境:云函数运行在云端Linux环境中,一个云函数在处理并发请求的时候会创建多个云函数实例,每个云函数实例之间相互隔离,没有公用的内存或硬盘空间。云函数实例的创建、管理、销毁等操作由平台自动完成。每个云函数实例都在/tmp目录下提供了一块512MB的临时磁盘空间用于处理单次云函数执行过程中的临时文件读写需求,需要特别注意的是,这块临时空间在函数执行完毕后可能被销毁,不应依赖和假设在磁盘空间存储的临时文件会一直存在。如果需要持久化的存储,请使用云存储功能。
    • 无状态函数:云函数应是无状态的,幂等的,即一次云函数的执行不依赖上一次云函数执行过程中在运行环境中残留的信息。为了保证负载均衡,云函数平台会根据当前负载情况控制云函数实例的数量,并且会在一些情况下重用云函数实例,这使得连续两次云函数调用如果由同一个云函数实例运行,那么两者会共享同一个临时空间,但因为云函数实例随时可以被销毁,并且连续的请求不一定会落在同一个实例,因此云函数不应依赖之前云函数调用中在临时磁盘空间遗留的数据。总的原则即是云函数代码应是无状态的。
    • 事件模型:云函数的调用采用事件触发模型,小程序端的每一次调用即触发了一次云函数调用事件,云函数平台会新建或复用已有的云函数实例来处理这次调用。同理,因为云函数间也可以相互调用,因此云函数间相互调用也是触发了一次调用事件。

注:本文为学习笔记,原版视频级源码如下

点此获取源码

点此获取视频教程

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容

  • 9.10号微信重磅推出小程序云开发功能,该功能方便了很多逻辑上的问题,至于安全嘛,腾讯的,如果腾讯不看你的,没人看...
    zhyzhyzz阅读 9,069评论 2 5
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,071评论 0 3
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,713评论 0 10
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,082评论 1 32
  • 昨天下班回到家,老公说了几句不中听的话,我突然就火了,一个人跑出去,剪头发、吃饭、逛超市。 他本来就是那种人,觉得...
    小蓉_ab42阅读 179评论 0 0