由于工做缘由,使用过亚马逊AWS的serverless构架,当时就以为这是一个很是适合小程序的基础设施。今年开始本身的微信小程序开发,决定用serverless架构,因而便使用了腾讯云作为小程序的后端,总结下来有如下几个痛点:数据库
当暴露API给小程序时,须要使用已备案的域名。而在腾讯云里备案域名须要租用至少三个月的云服务器(无聊的套路)。可是我只用云函数,不须要云服务器。因而我花了一百多元租了个最低配云服务器只为了域名备案。json
云函数的冷启动耗时不是特别理想,我须要使用一个定时器每隔30秒触发一次我比较经常使用的几个云函数,确保它们老是处于热启动的状态。小程序
花了大量时间来配置云函数,对象储存,云数据库(用的是MySQL),CDN静态加速,使它们之间能顺畅的协同工做。令我意外的是腾讯云的人工客服系统。在配置系统时我常常会提交工单问一些本身难以解决的问题,有时是在凌晨两点。而他们的客服和工程师有时会在一小时内回答个人问题!segmentfault
这个月当我开始新的小程序项目(私货夹带:《Meetup丨活动报名组局》)发现微信开发者工具整合进了云开发。因而便有了这个云开发实战系列。微信送了两个云环境,一个用于开发,一个用于发布。我命名一个为dev,一个为release。这一篇我想主要谈谈关于环境配置踩过的坑。后端
坑一:当完成开发准备发布时,我从dev环境转换到release环境。这个步骤并非在云开发控制台上选择当前环境就能完成的,而须要在app.js里指定环境ID微信小程序
App({ onLaunch: function () { if (!wx.cloud) { console.error('请使用 2.2.3 或以上的基础库以使用云能力') } else { wx.cloud.init({ env: 'release-xxxx' // 你的环境ID traceUser: true, }) } } })
并在每个云函数的cloud.init函数里指定环境ID服务器
const cloud = require('wx-server-sdk') cloud.init({ env: 'release-xxxx' // 你的环境ID }) const db = cloud.database()
坑二:从dev转到release时,千万不要忘记设置为release环境的数据库设置相应的权限,不然新环境会使用默认的仅建立者及管理员可读写
,而个人小程序主页须要全部用户可读,仅建立者及管理员可写
权限,这个问题很容易在开发阶段被忽视,由于开发测试时我一直是建立者身份。致使发布后朋友们纷纷告诉我打开后什么都没有显示:) 还好修改云开发不须要等待审核,第一时间纠正了错误。微信
坑三:使用定时触发器须要在云函数文档里添加一个config.json文件。但我花了一点时间才搞明白为何触发器没有起做用。原来像往常同样点击“上传并部署”云函数并不会使触发器生效,而须要点击“上传触发器”。
也许你已经发现其实我本身的粗枝大叶对这些坑负有责任,一些问题在小程序开发文档里有说起,好比设置环境ID。我只想说这些是很容易被忽略,但后果严重的问题。但愿经过个人分享能帮你们节省点时间。我基本上对小程序云开发持至关正面的评价。它解决了我在使用腾讯云时遇到的三个痛点:1. 再也不须要域名备案(备案一般须要好几天的时间,并且过程繁琐,须要填不少表,拍幕布照片等)2. 云函数的冷启动时间有改善,貌似微信针对性地作了优化,我再也不须要设置定时触发来保证它们总处于热启动状态。3. 省去了本身搭建云后台所须要的配置过程,实现了开箱即用。微信开发
但小程序的云开发也有一些局限性,我会在下一篇《小程序云开发实战系列02--NoSQL云数据库》里分享我使用云开发数据库的一些体会,敬请期待。架构
本系列第二章:小程序云开发实战系列02--云数据库
《Meetup丨活动报名组局》是我最近开发的一个活动报名预定工具小程序,这个系列文章主要来自我在开发这款小程序时的一些体会心得。感兴趣的小伙伴能够扫下面的二维码进入个人小程序。