文档控制台网址汇总
不像微信的全部集中在一个控制台,一份文档,支付宝小程序更像是拼凑出来的东西,小程序一份文档一个控制台,云开发又一个,还不太好找,因此把链接汇集于此。
- 小程序开发文档:小程序本地API的文档。
- 小程序云开发文档:小程序云开发API的文档。
- 小程序开放平台:相当于微信公众平台,在这里你可以管理小程序的版本、信息、设置体验版、提交审核等。
- 小程序云:管理云开发资源,包括云函数、云文件、数据库等。
- 阿里云OpenAPI开发者门户:用于设置云函数超时时间,内存大小,数据库导入导出、云存储等的网站,不提交工单我都不知道有这东西。
- 提交工单:有问题直接提问,回复还是挺迅速的。
- EMAS平台:IDE云开发工具跳转,没什么用,可用作跳板打开小程序云。
前言
最近微信小程序云开发开始收费,从免费直接涨到了19.9元/月,论割韭菜还得是你腾讯,我的小程序尽管用的人不多,但那都是心血之作啊。为了学习微信小程序开发,把大部分的接口和API都调用过了,个人最多只能接受涨到5块/月,没办法,只能上微信的友商支付宝看看了。
微信云开发计费调整公告官方 微信团队07-04 各位微信云开发用户: 感谢大家一直以来对微信云开发的支持。由于云计算成本整体上升,为了继续为各位用户提供稳定可靠的服务,微信云开发将于 2022 年 08 月 18 日,对计费方式进行如下变更,部分指标价格将有所上浮。 新计费模式下,新用户免费使用 1 个月后,统一使用 “基础套餐+按量付费” 模式:购买带有一定配额的基础套餐后,超出套餐配额部分再按照实际使用量付费。 
研究了一下,发现支付宝平台一样提供小程序云开发功能,并且免费!那就每天的空闲时间迁移一下吧。于是开始了我的微信小程序《通信人的工具箱》的迁移工作,有兴趣的朋友可以两边的都试一下看看区别,支付宝的可能还在审核。 然后就开始了迁移工作,并把需要手动修改的部分都记录了下来,方便后来的朋友参考。为了熟悉支付宝开发,我没有使用官方的antmove小工具进行迁移。小工具我试用了一下,发现里面使用了一大堆的JS代码做装饰器,把wx.装饰成my.,降低了程序的执行效率,提高了代码包的体积,也不利于学习,所以笔者手动迁移代码。 需要注意的是:下述的仅仅为我的小程序用到的接口需要修改的地方,并不是所有的区别。
本地区别
仅企业可用的功能
- 录音,详见:my.getRecorderManager。
- 粘贴板,详见:my.setClipboard。
第一点就很难受了,😟,相当于小程序的声音频谱分析功能无法迁移了。第二点是真的不能理解,我就是往用户的粘贴板写入处理结果,结果就不行。
限制功能
- 音乐播放器不支持播放本地的或者云存储的音乐,只能播放调用录音接口或者上传到优酷的音频文件,详见:音频播放 API 使用说明。
直接使得小程序的“信号发生器”功能无法迁移,心凉了半截,不过为了学习,还是接着往下看吧。
插件区别
- 基础库2.0下不支持echarts数据绘图插件,官方建议用@AntV/F2代替。
云开发API区别
- 云文件的云端路径无法指定,不支持创建文件夹。
- 云文件只可以存储指定类型格式的文件。详见:uploadFile
- 云函数超时时间最大只能设置10s,在一些等待接口响应的业务很容易超时。
需要做的代码变更
xml部分
- 控件标签 bindtap -> onTap
- 控件标签 bindchange -> onChange
- 控件标签 bindinput -> onInput
- 渲染控制 wx: -> a:
- image控件: bindtouchend -> onTap
- canvas控件:canvas-id -> id
- input控件:要添加controlled='true’标签,否则可能不受setData控制
- textarea控件:可以慎重添加controlled='true’标签,但是有坑,用了可能会出现用户无法输入的情况。
CSS部分
- 不支持CSS样式暗夜模式的识别与匹配,具体为微信端的“@media (prefers-color-scheme: dark)”标签。
- page注意p要小写,否则样式不生效,微信无所谓。
JS部分
- my.showLoading不支持mask参数,实测默认是有遮罩的。
- my.showLoading的title参数名替换为content,详见:my.showLoading。
- wx.showModal -> my.confirm ,且不支持showCancel参数。
- my.showToast没有icon参数,取而代之的是type,title参数名替换为content,详见:my.showToast。
- 支付宝的弱社交功能,Page内没有onShareAppMessage和onShareTimeline,只有onShareAppMessage,详见:页面运行机制。
- 表单元素查询不能使用this.selectComponent。
- wx.setNavigationBarTitle -> my.setNavigationBar,详见:my.setNavigationBar。
自定义组件
- components不支持在调用它的页面中selectComponent或createSelectorQuery获取实例对象,需要在components的ref()中返回,在宿主的xml中使用ref标签定义监听函数,在JS的对应的监听函数中获取,详见:ref 获取组件实例。
- 开发时遇到components的methods中的this指针没有setData方法,已经确定this指向没有改变,按照官方文档也不行。最后含有setData方法的this指针通过组件的didmount()生命周期的监听函数中的this获取。
比微信好的地方
- 云函数调用似乎没有限制参数和返回结果的数据长度,我用b64编码一张图片作为参数调用云函数,云函数返回一张图片,居然成功了。在微信端会提示参数过长,得先把图片上传云文件,云函数读取云文件图片读取后把结果保存到云文件,本地在下载处理结果。
- 保存图片到用户相册无需一长串的权限申请,直接调用my.saveImageToPhotosAlbum即可,就是不支持模拟器调试。
my.saveImageToPhotosAlbum({
filePath:that.data.output_image_src,
}).then(e=>{
my.showToast({
content:'保存成功',
type:'success',
});
}).catch(e=>{
console.error(e);
my.showToast({
content:'保存失败,请用真机测试相册保存功能',
type:'fail',
})
});
- 数据库更新支持"没有则创建"的选项,这个比微信要好,详见:updateOne。
- 获取用户的唯一id不需要通过云函数,只需要调用授权函数即可。
const res = await my.serverless.user.authorize({
authProvider: "alipay_openapi"
});
if (res.success) {
my.serverless.user.getInfo().then(user => {
console.log(user);
that.globalData.user = user.result.user;
}
}
附录一些常用的代码段
云函数
module.exports = async (ctx) => {
const {a, b} = ctx.args;
return a + b;
}
const { result } = await mpserverless.function.invoke('sum', { a: 1, b: 1 });
mpserverless.function.invoke('sum', {
a: 1, b: 1
}).then(console.log).catch(console.error);
数据库
mpserverless.db.collection('users').updateOne({
age: {$gt: 18}
}, {$set: {
name: "Smith",
age: 22,
}
}, {
upsert: true,
})
.then(res => {})
.catch(console.error);
云文件
mpserverless.file.uploadFile({
filePath: path,
})
.then(res => {})
.catch(err => {});
后语
经过这次迁移,我知道微信涨价的底气在哪了,支付宝的小程序云开发感觉就是个半成品。支付宝的小程序大部分是一些点单的,交易的,其它类别用的人并不多,所以开发的除了商业需要,基本就像我一样是纯粹学习的。微信平台则用户众多,社交属性强大,这些更提供了它涨价的基础。现在19.9元/月还能勉强承受,后面变成39我估计就下线小程序云功能了。。。看到这了,不点个赞再走嘛?
后记
本部分用于记录小程序上线前的log,本以为小程序可以通过顺利审核,但可能支付宝比较谨慎,或者刚好赶上敏感时期,居然被驳回了,于是把该过程按时间线记录于此,以供参考。
- @2022/10/14 晚上:提交初次审核,小程序本体与信息会一同进行审核。
- @2022/10/19 11:53:被驳回,原因如下:
1、当前小程序具有违规情形,在可搜索,可编辑内容上没有对涉政敏感信息做特殊防控,涉及一些特殊人名或政治相关图片信息透出,希望商家自行排查。同时也可申请接入支付宝开放能力,详见:https://www.yuque.com/docs/share/88a1c6f2-1839-4028-ac5c-b1537c08f165?#|应用内容
打开链接发现是《内容风险识别接口服务·语雀》,意思就是要接入它家的内容审核平台呗,,该接口目前是邀约制,需要把小程序appid和名称发送到经理开通。 往下查看了接口的API,发现图片居然不能B64解码后发过去,而要上传图片的urls,还好查看文档后发现小程序云文件支持公开链接,或许可以试试。 3. @2022/10/21 11:09: 经过一番思想纠结后,其实是临近毕业,繁杂事务多了起来,等偷得半日闲时终于想起这事了,决定还是开通《内容风险识别接口服务》试试,发送了开通申请。 4. @2022/10/22 14:06: 文档太烂,经过一番调试与摸索,接入了《内容风险识别接口服务》并提交了第二次审核,接入过程已记录到我的文章《【小程序·开发】支付宝小程序接入<内容风险识别服务>流程指南》,欢迎参考。 5. @2022/10/22 17:19:支付宝小程序过审啦!!! 
|