研发小程序功能,还是必须要学习了一下小程序开发文档的谋篇布局,这样能快速定位且解决自己业务问题。
如何布局?
1、指南微信开放文档
2、框架微信开放文档
3、组件视图容器 | 微信开放文档
4、API基础 | 微信开放文档
5、平台能力平台能力 | 微信开放文档
6、服务端接口调用凭证 | 微信开放文档
7、工具概览 | 微信开放文档
8、云开发微信开放文档
9、云托管微信开放文档
10、更新日志基础库更新日志 | 微信开放文档
小程序的开发模式有5种,分别有:
1、第三方平台代开发
2、小程序插件开发
3、企业微信小程序开发
4、PC小程序开发
5、多端应用开发
目前公司使用了企业微信小程序开发和第三方平台代开发两种开发模式。
使用第三方平台代开发的背景是,客户急需用自己注册的小程序来宣传活动,但是没有固定的研发团队,于是想通过我们来提供技术支持、服务,来不断迭代小程序。也就是我们是第三方平台,我们有自己的小程序,但是要按照微信官方规则来开发。从开发者角度来说,我有一套代码,开发语法不变,若需求只用于我们企业的小程序,没有变化,但是第三方代开发,就要按照新的规则来开发,规则如下概述 | 微信开放文档。
接下来第三方平台代开发简称:代开发。
代开发有一定的复杂性,首先要确认三个概念:
1、open3rd:第三方平台账号,是认证的第三方开发者账号
2、3rdMiniProgramAppid:第三方平台申请的并绑定在该平台上的小程序,用于开发小程序模板
3、extAppid:授权给第三方平台的小程序
第三方平台相关的小程序开发需要做一些特殊的处理:
1、小程序模板的开发
2、小程序模板结合extAppid的开发调试
3、使用directCommit直接提交至待审核列表
插话:以上都是由小程序开发管理者操作,开发人员参与不了
管理者那边有两个后台:一个是小程序后台(用于发布小程序),另一个是第三方平台的后台(用于管理草稿箱和模板库)
开发者代码上传至何处均由管理者决定,管理者设置上传到哪个平台,开发者点击上传时弹窗给的提示不一样。下图就是设置上传到第三方平台的草稿箱里了。
鉴于我只是普通开发人员,有关代开发管理者的很多规则都没有进行实操,因此不做过多描述。
比如创建项目:管理者把项目创建好了,我这边是直接就已经被添加到开发里面了,extAPPId;ext.json如何配置?管理者和开发者均要统一认知。
extEnable调试时,必须要设为true,这样就是切换到第三方代开发模式,小程序的wx接口,不同模式下,规则有所不同。
extAppid:被代开发的小程序的Appid
ext: 自定义字段,若设置了,该对象的所有属性都能被 wx.getExtConfigSync获取到。
实战需求:
商户有很多门店,刚开始宣传时,需要从门店列表页来启动小程序,只要用户扫码进入到门店列表页就必须调用商户的tenantId,这样才能获取到商户的门店。
因此第三方代开发,需在ext,中添加字段t,表示商户的tenantId。如上:ext: {"t":"管理者传入商户id"}
开发提示:ext.json中的,extAppid和ext.t,开发者可以用后台提供的固定值进行开发。在门店列表页使用 wx.getExtConfigSync获取ext的属性t。
onLoad: function (options) {this.setData({g: $,tenantId: options.t ? options.t : (wx.getExtConfigSync() && wx.getExtConfigSync().t ? wx.getExtConfigSync().t : 'xxxxxx')});},
上述代码中,options是一个对象{},可获取路由中的参数,该页面需从路由或者第三方代开发ext.json中获取到t的值
踩坑tips: 虽然options是{},是空对象,但想通过 tenantId : options ? options.t :wx.get...赋值,tenantId会一直是空的,上面的三元赋值,实际是 true ? option.t : wx.get..,后面的wx.get根本进不去。所以可直接用options.t来判断是从理由获取还是从ext.json中获取。
小程序没有固定的启动页,后台可以配置从任何单页面进入,因此不能固化自己的头脑,格局要打开。
ext.json字段的优先级高于app.json,如果字段名相同,首选ext.json中改字段的值。
若有疑问,请继续研读第三方代开发文档 概述 | 微信开放文档