- 小程序开发总结
从微信提出小程序的概念到如今过去了将近五年的时间,如今小程序的生态异常繁荣。在2021年微信之夜上,张小龙晒出了每日约有4亿用户使用小程序的数据,规模庞大。仅仅在我们项目内部,小程序就被应用在了信息流推广、裂变增长以及作为出版书籍配套的工具上,而且都取得了不错的成绩。小程序设计的初衷是连接线上与线下,但是借助庞大的微信生态,其作用也早已不限于此,所以在此总结一些小程序开发过程中的小知识,希望能提供一些参考,但是本篇并不同于教程,所以会比较少涉及代码,也由于一些内容可能依据个人经验并不准确,也希望大家能够提出来,共同进步。 1. 微信公众平台、微信开放平台、微信商户平台分别是做什么的? 在刚接触微信生态开发时,难免会被这几个平台的概念搞混,但是因为其职责不同,作为开发者还是要有一个清晰的认知。 微信公众平台定位的是服务平台,可以为个人、企业、组织提供业务服务及用户管理的能力,我们熟知的订阅号、服务号、小程序均属于微信公众平台。 微信开放平台定位则是面向应用,应用接入移动平台后,即可以调用微信提供的能力,实现例如分享、支付等功能。另外,对于绑定统一开放平台的不用应用,有着唯一的UnionID来标识用户身份。 微信商户平台是第三方支付平台,其提供了多种多样的支付方式与支付工具,在项目的开发中,如果我们需要针对不同类型的应用选择不同的支付产品,例如jsApi支付、native支付等,以及利用红包等支付工具去完成一些营销活动,那么都需要去接入商户平台。另外,公司内部的商户号统一由财务进行管理。 2.小程序中如何获取unionid? 自2021年2月底,在小程序端获取unionid将去掉了用户必须关注过同一开放平台下同主体的公众号或者比如授权登录过同一开放平台下同主体的移动应用的限制,可以直接通过wx.login + code2session获取。 由于openid是相对于应用唯一,在不同应用中unionid是识别用户身份的最佳方式,在小程序开发初期,应该留存用户uniond已应对后期的矩阵式拓展。 3.注册小程序建议复用公众号资质快速注册 对于已认证的的公众号,小程序可以直接复用其资质快速注册,不仅免于填写大量的资料,还可以节省认证的时间及费用。复用公众号资质快速注册,注册完成即同时完成关联,后期开发引导关注公众号、或者打开公众号文章都无需再次关联。 4.开发小程序需要什么准备工作 与传统h5开发不同,小程序本身依托于微信生态,在审核发布的过程中有一定的限制。但是客观的来说,规则带来的是良性的发展,所以建议在开发前应该熟悉相应的规则,避免出现开发完成无法发布的情况,在开发前应在https://developers.weixin.qq.com/miniprogram/product/material/#%E9%9D%9E%E4%B8%AA%E4%BA%BA%E4%B8%BB%E4%BD%93%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%BC%80%E6%94%BE%E7%9A%84%E6%9C%8D%E5%8A%A1%E7%B1%BB%E7%9B%AE查询小程序所属类目所需要的资质。 其实我们应该充分熟悉小程序后台的功能,开发之前,我们应该在成员管理处添加项目成员、在开发管理处添加开发所需的配置,建议开发过程中打开域名校验,防止上线后由于忘记配置服务器域名导致功能异常。 5.小程序是否可以做到持续集成? 开发者工具提供了命令行及http调用方式,可以实现登录、预览、上传等操作。结合jenkins等工具可以实现小程序的持续集成,对于团队内统一工作流、提升协作效率有一定的价值,而否需要持续集成,则需要根据实际项目的体量进行考量。 6.是否需要第三方框架进行开发? 需要利用taro/mpvue等第三方框架的主要原因大概来自这两方面,一方面是之前没有接触过小程序开发,希望继续使用vue、react等技术栈进行开发,其次是希望后面可以编译发布到多端,目前个人的建议是除非有多端发布的需求,否则建议是使用小程序原生的框架进行开发。因为其开发简单,也可以自己动手去拓展一些能力,不应该在本身比较轻量的开发上增加框架的成本。 7.什么是云开发? 云开发是小程序开发服务,可以使开发者免于搭建服务器快速构建小程序开发环境,云开发内配套有数据库、存储等基础服务,亦提供了http的调用方式,基于微信私有协议,使用微信开发可以免鉴权调用微信api,保证业务安全性。云应用可以节省人力成本,在部分规模不算庞大的项目上可以尝试使用,前端及可以完成前后台全部开发。 8. 利用好实时日志 实时日志是小程序提供的日志服务,开发过程中我们可以通过打印日志用于排查跟踪问题,通过实时日志上报的内容,可以在小程序开发管理下面的运维中心查到,另外,虽然叫做实时日志,但是实测并非实时,能查到前一日所上报的内容。养成查看前日实时日志的习惯,可以较早的发现一些隐藏的问题。 9.关注小程序的性能与体验? 开发者工具中提供了体验评分的功能,我们在开发过程中应该多次运营,提前规避应该小程序性能的问题。对于启动性能、与运行时性能,小程序也均提供了相应的能力进行优化,开发者均应熟知次部分内容,其中性能也会影响到小程序的综合评测结果,如果综合评测结果达标,小程序则会拥有极速审核、搜索加权等奖励 10.如何生成小程序码? 小程序服务端api提供了生成有限数量及无限数量小程序的不同方式,在使用getUnlimited生成数量无限制的二维码时,参数均应放在scene中,且最大只支持32个可见字符,这个限制需要注意。对了,微信支持通过扫普通二维码打开小程序,这也是小程序码的一种平替,具体规则可以参考https://developers.weixin.qq.com/miniprogram/introduction/qrcode.html#%E4%BA%8C%E7%BB%B4%E7%A0%81%E8%B7%B3%E8%BD%AC%E8%A7%84%E5%88%99 11.自定义导航栏与tabbar,提升视觉体验 在早期,小程序的标题栏配置为全局配置,即要么使用微信原生的标题栏,要么使用自己定义的标题栏,现在则可以针对页面进行配置,针对部分页面自定义标题栏。 对于tabbar小程序则提供了官方的解决方案,不仅可以满足自定义的需求,还可以保留大部分api,参考https://developers.weixin.qq.com/miniprogram/dev/framework/ability/custom-tabbar.html 12.使用横版布局 小程序提供了pageOrientation配置项,可以配置小程序固定横版展示,对于部分课程类型、或者功能体验类型的小程序,横版的设计可以带给用户更沉浸的体验。 13.能否使小程序支持mixin或者watch等功能? 可以通过过在app.js中修改Page构造函数,为Page注入相应的能力,在小程序开发的过程中,除了官方提供的一些能力,也可以尝试拓展Page构造函数,为其增加你想要的能力。 以上是本次想到的一些细节,在实际的开发过程中还有很多的技巧与限制,一时难以想到,后续仍然会更新本篇内容,把需要分享的一些细节补充完整。
2021-11-29 - wx.request 请求失败?各类异常何时出现,是否符合预期?
API:wx.request,微信版本号:"8.0.1",基础库:"2.15.0",触发 fail 回调【此处提供的微信版本和基础库版本出过问题,但是其他版本也有类似问题出现】,请求的 url 确保正确,错误信息如下,可否分别解释一下出错原因? request:fail -105:net::ERR_NAME_NOT_RESOLVEDrequest:fail timeout,request:fail -7:net::ERR_TIMED_OUT,request:fail 请求超时request:fail interrupted,request:fail 网络连接已中断。【这个报错比较明了,可以理解】request:fail -103:net::ERR_CONNECTION_ABORTED特别说明,针对上述错误“2 超时问题”,平时也会偶发超时,但 2020.2.25 下午 18:00 - 18:30 超时明显增多,同时间段环比增长 5倍,我们自己的业务没有变化,排除自身流量问题,看区域主要集中在山东,当时是有网络波动吗?我们当时只有小程序的业务收到了影响。
2021-03-02