近日,小程序发布新能力——“小程序·云开发”,帮助开发者快速搭建微信小程序的后台服务。作为微信小程序的开发者,我也是第一次尝试小程序的云开发,把自己在开发过程中的心得分享给大家。什么是小程序云开发简单来说,小程序云开发是一种serverless服务,为开发者提供“云功能”、“云数据库”、“云文件存储”,并将这些能力封装成特定的接口,用wx.云.xxx。小程序云开发不是什么首先,小程序云开发不是PaaS。它不同于我们熟悉的BAE和GoogleAppEngine。提供的云功能不是一个完整的环境,而是以特定的事件为单位。严格来说,它提供的云函数其实就是FaaS(FunctionasaService)。类似的产品还有LeanCloud的云函数、Bmob的云函数、AWS的Lambda、Azure的Functions和GoogleCloudFunctions。其次,小程序云开发不是像LeanCloud、Bmob那样的BaaS。与以上两款产品不同的是,它们提供了丰富的API接口,可以实现各种功能。小程序云开发对接口进行深度封装,只能在小程序和云函数中通过wx.cloud和wx-server-sdk调用(截至2018年8月24日)。因此,小程序云开发只能应用于小程序,不能应用于其他产品(如Apps)。什么样的场景适合小程序云开发?所有业务逻辑只需要在小程序端完成,没有过于复杂的管理逻辑(这是因为云函数和云数据库不能在小程序以外的区域调用,所以无法实现强大的web管理界面)小程序云开发优势1、微信登录逻辑简单。小程序云开发可自动验证用户登录。开发者无需再次验证用户身份,直接通过云函数的event.userInfo.openId获取用户信息即可。直接调用数据库和文件存储API时,也会自动关联用户对应的openId。如果用户授权小程序获取昵称等信息,这些信息也会自动出现在小程序云开发管理控制台的用户登录部分。无需开发者手动上传。2、免费目前,小程序云开发提供免费1GB数据库存储空间和免费5GB文件存储空间。这个存储空间不是很大,但是对于一些个人开发者来说已经绰绰有余了。开发者可以利用这些能力来快速开发自己的小程序。3、简单小程序云开发的调用非常简单。你只需要懂JavaScript和一些简单的异步知识(promise)就可以完成小程序云开发的内容。4.非侵入式小程序云开发本身在小程序基础库层面进行了封装,无需引入其他库即可使用。同样,你也可以将原有应用的部分功能迁移到小程序的云端开发。小程序开发中遇到的一些坑1.异步请求需要通过Promise处理在云函数中,我们大多会实现一些请求接口,这些接口在小程序中无法实现,或者受域名限制。这个时候我们不能使用传统的Callback方法来发起请求,因为传统的回调方法执行完之后,云函数已经将数据返回给了客户端,我们需要使用Promise来处理。比如下面的代码就是我请求豆瓣API的代码。varrp=require('request-promise')exports.main=(event,context)=>{varres=rp('https://api.douban.com/v2/book/isbn/'+event.isbn).then(html=>{returnhtml;}).catch(err=>{console.log(err);})returnres}以上代码来自Github项目WXCloud-bookcase2。权限结构比较简单,小程序云开发提供的数据库权限很简单,只有四个。Writableonlybycreator,readablebyeveryone:数据只有创建者可写,所有人都可读;比如文章。只有创建者可以读写:数据只能由创建者读写,其他用户不能读写;例如,使用私人相册。只管理端可写,所有人可读:数据只有管理端可写,所有人都可读;比如产品信息。只有管??理端可以读写:数据只能被管理端读写;例如后台使用的非公开数据。大多数情况下,单纯使用这四种权限是不能满足我们的要求的。所以,我们需要在代码层面做一些判断,保证具体的表现如我们所愿。例如,在做书柜项目时,希望书柜中的书籍可以设置为第三方可见或第三方不可见。Read”,通过代码控制是否显示具体信息,比如添加一个is_private字段来控制。广告时间关于微信小程序·云开发,我写了一个Demo工程,放在了Github上。欢迎大家Star,fork,并PR.项目地址:https://github.com/Tencent-CloudEDU/WXCloud-bookcase另外,针对本项目,准备了一个免费的实用开发项目,可以访问https://cloud.tencent。com/dev...检查。
