小程序云开发实战:腾讯云后端的痛点与解决方案

2024-07-29
来源:网络整理

摘要:但是小程序云开发也存在一些局限性,我将在下一篇小程序云开发实战系列之云数据库篇中分享一些使用云开发数据库的经验,敬请期待。

因为工作原因,之前用过亚马逊 AWS 的架构,当时觉得这个是非常适合小程序的基础设施。今年开始自己做微信小程序开发,决定用这个架构,所以用了腾讯云作为小程序的后端。总结起来有以下几个痛点:

向小程序开放API时,需要使用已注册的域名。在腾讯云,注册一个域名需要租用云服务器至少三个月(无聊的套路)。但我只用云功能,不需要云服务器。所以就花了一百多元租了一台最低配置的云服务器,只是为了注册域名。

云函数的冷启动时间不太理想,我需要用定时器每30秒触发一次我常用的几个云函数,保证它们一直处于热启动状态。

我花了很多时间配置云函数、对象存储、云数据库(我用过)、CDN 静态加速,让它们可以顺畅地协同工作。让我惊讶的是腾讯云的人工客服系统。在配置系统时,我经常提交工单来询问我难以解决的问题,有时甚至在凌晨 2 点。他们的客服和工程师有时会在一小时内回答我的问题!

这个月在开始一个新的小程序项目(私信:“丨活动报名与组织”)的时候,发现微信开发者工具集成了云开发。于是就有了这个云开发实践系列。微信提供了两个云环境,一个用于开发,一个用于发布。我将其中一个命名为 dev,另一个命名为 。这篇文章,我想主要说一下环境配置的坑点。

陷阱一:当我开发结束准备发布时,我从开发环境切换到环境,这一步无法通过在云端开发控制台上选择当前环境来完成,而是需要在app.js中指定环境ID

App({ onLaunch: function () { if (!wx.cloud) { console.error("请使用 2.2.3 或以上的基础库以使用云能力") } else { wx.cloud.init({ env: "release-xxxx" // 你的环境ID traceUser: true, }) } } })

并在每个云函数的.init函数中指定环境ID

const cloud = require("wx-server-sdk") cloud.init({ env: "release-xxxx" // 你的环境ID }) const db = cloud.database()

陷阱二:从dev切换的时候,别忘了给环境的数据库设置相应的权限,不然新环境会使用默认只有创建者和管理员可以读写的权限,但我的小程序首页需要所有用户可读,只有创建者和管理员可写。这个问题在开发阶段很容易被忽略,因为开发和测试时我一直是创建者。结果发布后,朋友告诉我,打开后什么都显示不出来:) 还好云开发的修改不需要等审核,第一时间就修正了错误。

陷阱三:要使用定时触发器,需要在云函数文档中添加 .json 文件。但是我花了好久才搞清楚为什么触发器不起作用。原来,照常点击云函数的“上传并部署”并不能使触发器生效,需要点击“上传触发器”。

也许你已经发现这些坑都是我自己的粗心造成的,小程序开发文档里提到了一些问题,比如设置环境ID,我只想说这些都是容易被忽略的问题,但后果很严重,希望我的分享能帮你省点时间。我对小程序云开发基本是持非常正面的评价,它解决了我使用腾讯云时遇到的三个痛点:1、不需要注册域名(注册一般要几天,而且流程繁琐,需要填一大堆表格,拍窗帘等)2、云函数冷启动时间提升,看来微信做了针对性的优化,我再也不需要设置定时器触发器来保证它们一直处于热启动状态了。3、省去了自己搭建云后端所需的配置过程,开箱即用。

不过小程序云开发也存在一些局限性,我将在下一篇《小程序云开发实战系列02--云数据库》中分享一些使用云开发数据库的经验,敬请期待。

本系列第 2 章:小程序云端开发实践系列 02 - 云数据库

“丨活动报名群”是我最近开发的一款用于活动报名预约的小程序,本系列文章主要来自于我开发这款小程序的心得,感兴趣的朋友可以扫描下方二维码进入我的小程序。

分享