需要先了解手机软件开发有三种形式,原生,混合开发,React-Native开发:
原生开发就是使用手机所支持的原生语言进行开发,像android是用java,iphone是 Objective-C
混合开发就是内置web-view形式,通过在web-view中注入一个js对象,并提供原生语言接口,js通过调用这些接口,实现网页应用和手机间的交互,像phonegap,dcloud等,
React-Native 开发则是直接创建第三种语言,类似html和js,然后生成对应的手机软件
三者主要对比性能和开发便捷程度
原生速度最快,但是跨平台性限制,导致各平台,都需要开发对应版本, 所以开发速度肯定是最慢的.
混合开发,各平台提供统一的接口给注入的js对象调用,所以只需要掌握基本的html和js基础,熟悉注入对象的文档即可开发能在多平台上跑的应用.速度最快,但是性能是最差的.因为是通过web-view进行渲染,性能是个硬伤,但是mui等前端框架,可极大程度的缩小差距. 但是混合应用, 说到底,只能开发展示类的应用.
React-Native 则是编写完成后,编辑器会编译成对应平台的软件,性能相对来说比混合好,开发也相对中等.
小程序则是比较接近react-native的形式,但是又可通过web-view的处理形式实现混合开发,公司这边使用的是web-view形式,上手相对容易很多.
小程序的限制:
小程序的限制是底层权限没有开放,限制比较高,导致写出来的应用,实际上是各公众号的功能差不多.在网速正常情况下,二者功能基本没有太大差别.唯一的优势基本就是入口可以在顶部下来访问.但是最大的缺点则是无法自由的进行模板消息推送. 小程序只有提交表单的情况下,会得到一个表单id,通过该表单才可以进行小程序消息下发,所以小程序一但离线,基本无法通知用户, 只能做为一款极其轻量的应用. 不过在绑定的前提下,公众号可以代替小程序推送消息,并通过消息访问小程序,前提是关注. 做到这步非常麻烦.小程序返回公众号流程繁琐,无法直接进入公众号.
公众号的类型:订阅号,服务号,小程序,企业号…
各公众号openid相互独立,所以,小程序用户的openid不同于其它公众号,且无法共享
公司web-view形式的小程序开发:
微信开发者工具
https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html
框架目录结构,每种必需小程序的功能,单独写成一个独立页面,然后通过wx进行访问
小程序开发者工具截图
小程序获取用户信息不同于公众号授权跳转,进入的时候就强制授权获取,且只能获取一次.且返回的是用户的详细信息和一个code,通过该code,才能获取小程序的用户openid. 所以入口处将用户信息传递到服务器端,必须由服务器进行保存,如果丢失,二次访问时,像头像,昵称这些信息将无法获取.除非将对应服务号接入,通过服务号进行授权跳转(小程序web-view本质是个浏览器,只是限制了长按扫描二维码,但是授权跳转有效)
小程序由于分享,支付,客服,关注,登录等特殊动作,必须由纯小程序代码进行编写,所以当需要触发上述功能时,web-view通过内置对象,携带参数并跳转到对应的页面,操作完成后,进行返回.以上为公司小程序的基本实现形式.
特殊模板小程序开发
通过开发一套完整的小程序,并提交到开放平台,绑定做为通用小程序模板, 这样只需要用户给对应的平台授权,平台可以直接给对应用户生成一套专属的小程序. 通过配置扩展变量,标记当前是哪个用户使用该模板.
web-view的最大优势为修改在web端,无需像小程序一般提交修改审核,极其便利.同时,在确保公众号开发一套任意的功能,通过关联openid,即可无缝整合成小程序访问.
最近小程序的优化,一个是通过头部跳转 Location: xxx 跳转”实现”不跳转太多次进入页面