小程序云开发使用体验

昨天,微信公众平台开放了「云开发」的功能,对于开发者来说绝对是一个好消息,终于不需要自己搞个服务器,搞个域名,还要https了。

一些准备

今天正好不忙,所以看了看文档,先常常鲜。

首先需要升级下微信开发者工具,最新版才有云开发的功能哦。

小程序截图1

这里发现直接更新有点慢,直接下载最新版然后覆盖比较快,打开最新的开发者工具之后会发现多了个云开发:

截图2

点进去进行开通,开通的时候发现居然提示开通失败,有点泪崩,当然,这不影响我正常开通,可以发现下面有环境版本和每个月使用次数,相信未来还是会根据一定的标准进行收费的吧。

但对于个人来说,这些免费的量肯定够用啦。

截图3

环境配置完成之后,就正式进入主界面了,云开发主要提供了三个功能,数据库,存储管理和云函数,大家可以根据文档进行实际操作。

截图4

原本打算根据文档写个简单的demo的,可发现官方给到的demo已经很详细了,新建项目时选择建立云开发快速启动模板即可。

截图5

下面根据官方给到的demo简单介绍下三个功能。需要注意的是,在使用云功能之前,一定要开通云服务,也就是文章上面的步骤。

接着在小程序端使用时需要通过调用wx.cloud.init来初始化,可以看到官方demo中app.js中有这样一段代码:

//app.js
App({
  onLaunch: function () {

    if (!wx.cloud) {
      console.error('请使用 2.2.3 或以上的基础库以使用云能力')
    } else {
      wx.cloud.init({
        traceUser: true,
      })
    }

    this.globalData = {}
  }
})

数据库

首先是数据库,这应该是大多数人最想要的功能,毕竟不管什么应用都离不开数据,简单的CRUD还是必不可少的。

官方的demo很人性化,安装数据库指引一步一步操作即可,这里就不累赘重复了,简单说些重点,有兴趣的可以直接根据demo和官方文档进行学习

截图6

数据库操作代码部分开始比较简单的,类似调用接口一样,通过add,get,updateremove方法可以实现简单的增删改查,如下:

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

//新增操作
db.collection('test_table').add({
       data: {
         count: 1
       },
       success: res => {
         // 在返回结果中会包含新创建的记录的 _id
       },
       fail: err => {
       }
     })

//读取操作
db.collection('test_table').doc('key').get({
  success: function(res) {
    // res.data 包含该记录的数据
    console.log(res.data)
  }
})

//更新操作
db.collection('test_table').doc('key').update({
  // data 传入需要局部更新的数据
  data: {
    // 表示将 done 字段置为 true
    done: true
  },
  success: function(res) {
    console.log(res.data)
  }
})

//删除操作
db.collection('test_table').doc('key').remove({
  success: function(res) {
    console.log(res.data)
  }
})

这里主要介绍下复杂查询,小程序提供了多种查询指令,指令都暴露在db.command对象上:

eq    //字段是否等于指定值
neq    //字段是否不等于指定值
lt    //字段是否小于指定值
lte    //字段是否小于或等于指定值
gt    //字段是否大于指定值
gte    //字段是否大于或等于指定值
in    //字段值是否在指定数组中
nin    //字段是否大于指定值
and    //条件与,表示需同时满足另一个条件
or    //条件或,表示如果满足另一个条件也匹配

举个简单的例子,我需要查询年龄在18~20的男性:

const _ = db.command
db.collection('people').where({
  age: _.gte(18).and(_.lte(20)),
  sex: _.eq('男')
})

但对于模糊查询,目前好像还不支持。更详细的介绍可以看下官方的API文档。

另外还需要了解下数据库的权限问题,在云开发控制台,可以设置每个集合的权限,官网也整理出了对应的权限表

截图7

截图8

存储管理

小程序给了一定的空间用于存储实际应用中的图片和文件等,用法还是比较简单的:

#上传文件
wx.cloud.uploadFile({
  cloudPath: 'example.png', // 上传至云端的路径
  filePath: '', // 小程序临时文件路径
  success: res => {
    // 返回文件 ID
    console.log(res.fileID)
  },
  fail: console.error
})

#下载文件
wx.cloud.downloadFile({
  fileID: '', // 文件 ID
  success: res => {
    // 返回临时文件路径
    console.log(res.tempFilePath)
  },
  fail: console.error
})

#删除文件
wx.cloud.deleteFile({
  fileList: ['a7xzcb'],
  success: res => {
    // handle success
    console.log(res.fileList)
  },
  fail: console.error
})

云函数

云函数即在云端(服务器端)运行的函数,这个用处很大,尤其对于前端来说,很多场景下,后端同学给到的接口不一定完全契合前端渲染,这部分转换后端可能不愿意做,而放在前端代码中又显得凌乱,这个时候定义个函数就比较方便啦。

而且根据官方文档,云函数之间也可互相调用,用起来还是挺爽的。可同时也有个疑问,一旦云函数管理不当,或者云函数过多,对于开发维护还是比较棘手的,尤其是没有一个统一规范的时候。

云函数的写法就不多说了,一个云函数的写法与一个在本地定义的 JavaScript 方法无异,代码运行在云端 Node.js 中。

正常编写完云函数之后,右击你的云函数,点击上传并部署就可以了,这样你在小程序端就可以调用了

//小程序端调用方法
wx.cloud.callFunction({
  // 云函数名称
  name: 'sum',
  // 传给云函数的参数
  data: {
    a: 1,
    b: 2,
  },
  success: function(res) {
    console.log(res.result) // 3
  },
  fail: console.error
})

总结

总的来说,小程序的云开发对于开发者来说绝对是个福音,整体使用起来也比较方便。

最近整理些思路,准备做一个简单的小程序应用实战一把,希望我的学习进度能赶得上小程序的迭代速度,不多说了,赶紧学习去。

原文发布于微信公众号 - Bug生活2048(BugLife2048)

原文发表时间:2018-09-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Samego开发资源

自动化运维之playbook

20230
来自专栏Ryan Miao

Git 工作流的正确打开方式

前言 一直在使用git做版本控制,也一直工作很顺利,直到和别人发生冲突的时候。这才注意到git 工作流并不是那么简单。比如,之前遇到的清理历史。百度到的资料很...

34460
来自专栏IMWeb前端团队

给react加try-catch

最近在一个使用fis构建的react.js项目里遇到个问题,render函数里如果发生了运行时错误,比如说某个对象没有判断就直接去访问其属性,那我所知道的就是,...

66750
来自专栏欧阳大哥的轮子

iOS应用程序的脱壳实现原理浅析

对于诸多逆向爱好者来说,给一个app脱壳是一项必做的事情。基于安全性的考虑,苹果对上架到appstore的应用都会进行加密处理,所以如果直接逆向一个从appst...

11330
来自专栏喵了个咪的博客空间

phalapi-进阶篇3(自动加载和拦截器)

#phalapi-进阶篇3(自动加载和拦截器)# ? ##前言## 先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个优秀的开源框架. ...

27730

Cloudify中的部署组合

[这篇文章是由DeWayne Filppi撰写的。]

37760
来自专栏武军超python专栏

2018年8月16日多线程并发和队列

静态文件的打包:静态文件包括图片,视频等静态的文件 MANIFEST.in include  如果要打包静态文件,定义MANIFEST.in配置文件

15660
来自专栏编程

花5分钟教会你用python搭建出一个动态网页,零基础也能学得会

本套录屏教程,是为初学者准备的,确保非计算机专业的也能跟着一步一步玩转python,既培养出兴趣,又玩出点东西。 上一讲介绍了我们如何用python发布一个静态...

24570
来自专栏Golang语言社区

深入Go语言网络库的基础实现

Go语言的出现,让我见到了一门语言把网络编程这件事情给做“正确”了,当然,除了Go语言以外,还有很多语言也把这件事情做”正确”了。我一直坚持着这样的理念——要做...

32570
来自专栏Crossin的编程教室

【Python 第64课】python shell

各位好久不见,我终于又更新了:D。今天抽空来讲点非常非常基础的东西,关于在哪里写 python。 如果你已经编写过自己的程序,相信对这些内容已经熟悉。但很多刚刚...

360100

扫码关注云+社区

领取腾讯云代金券