小程序技术概述及支付宝小程序开发实践小结

前言

小程序底层是基于webview来实现的,虽然不是什么革命性的全新技术,但是却是影响广泛的技术新应用。它的出现不是凭空出现的,肯定为了解决一些问题。那么没有小程序前的客户端有哪些比较明显的痛点呢?

  1. 纯客户端原生渲染的缺点:在动态打包,动态下发,存在一些问题,比如缺乏灵活性。
  2. 纯web技术渲染的缺点:在一些有复杂交互的页面上可能会面临一些性能问题,这是因为在 Web 技术中,UI渲染跟 JavaScript 的脚本执行都在一个单线程中执行,这就容易导致一些逻辑任务抢占UI渲染的资源。另外一个问题,是web太灵活,用完即走,用户留存度低。

针对这两个缺点,客户端技术、web技术都有一些新的技术方案出现。而在web技术这个方向,大的方向是对web容器进行增强,赋予web更多性能和能力。目前主流有三类技术比较火:

  • 小程序技术
  • PWA技术
  • phoneGap为代表的套壳并对webview增强的技术

这里主要说说小程序技术,其他两类技术在国外较火,但在国内不温不火,由于主题不是它们,这里不多做介绍了。小程序实现的基本思路是通过分离渲染和逻辑的处理,即将小程序的运行环境分为渲染层和逻辑层,每个页面有单独的webview来渲染,而逻辑是在一个独立的线程运行,避免了web的UI渲染跟javaScript在同一单线程中执行会出现的性能瓶颈的问题,因此他们互不干扰,两个线程只会有一些数据通信。同时,提供大量客户端原生能力的接口,从而充分结合客户端原生技术和web技术的能力,给客户端动态化提供了一个新的技术方案。

小程序通信模型

一门新技术的诞生,在初期,对开发者而言,都会有那么一段黑暗时期,各家小程序都不例外。进入正题,那些年踩过的支付宝小程序的坑。

支付宝小程序开发的一些痛点

小程序自身不稳定

据不完全统计,我们在开发我司在各家超级APP中的小程序的时候,给官方提过的bug,总和不下于百余枚。其中支付宝小程序占比20%左右,分布主要在以下几个方面:

  1. input、text-area等表单组件
  2. 覆盖原生组件的cover-view组件
  3. 支付宝授权
  4. 开发工具

当然,我们遇到这几个方面问题都一一向官方反馈过,也得到了官方的确认,在面临这些问题时,由于修复有个过程,我们通过修改产品交互设计和程序hack等方法,也还算顺利地绕开了一些问题。由于大部分问题官方已经修复,所以具体将bug罗列出来没什么意义。重要的是在面对问题的时候,有化繁为简、追根究底的能力。

调试及测试

调试的问题也是比较棘手的,影响业务开发效率,主要的痛点在以下几个方面:

  1. 代理抓包只支持ios,不支持android代理抓包,官方解释:其底层网络库有做限制导致的
  2. 开发工具与真机在某些特性上表现不一致
  3. 体验版不像其他家小程序那样可以使用调试器

目前这些问题还部分存在,虽然不是致命的,但是作为开发者,还是很希望这方面的能力能更快完善和优化。如果你看到本文已经没有这些问题了,那么恭喜你,如果还存在,也恭喜你,顺利入坑。

发版本

每次发体验版,需要重新设置新发版本为体验版,相比于微信小程序的开发体验(同一个人上传体验版,自动更新,无须重新设置体验版)来说,真的不是一般的苦逼,虽然可以通过尽量降低发布频次,集合更多问题统一发版这个解决方案,但是特别是在一些特定的场景下,需要频繁在体验版测试的时候,每次都需要设置体验版,是极其琐碎的事情。希望以后支付宝小程序能改善这一开发体验。

社区反馈

社区论坛第一版的时候,我觉得反馈问题非常方便,是非常好的。但是在今年(2019)5月份开始将社区改版了,满怀期待的新版本社区,在8月份左右上线了,但是却非常不好用,反馈问题、查找问题现在反而变得不容易了,以前提过的问题,也找不到了。这个实在让人费解。期间还在各种渠道,比如在线客服、钉钉官方技术群等反馈过问题,但是这些渠道反馈的问题毕竟没有可追溯性,不是一种理想的反馈bug的渠道。还是希望继续推进社区论坛的建设,以前反馈的问题,也能搜索到,而不是将其抹去。所以总结下,目前相对比较有效率的反馈方式是支付宝小官方技术钉钉群,群号:23362130,反馈问题前,可以先在社区搜索下问题。如果出现了更便捷的反馈形式,欢迎补充。

资源位跳转,与运营及市场人员的沟通之痛

支付宝小程序提供多种跳转能力,主要分为四类:

  • 小程序跳转小程序
  • url schema 跳转小程序(h5跳转小程序)
  • 小程序跳转支付宝官方页面或小程序
  • 小程序跳转小程序插件

运营与市场人员为了给小程序导流,时常会给出触达我们小程序的方法,以及收到别人可触达他们家小程序的方法。而由于支付宝的跳转能力是多种多样的,同时我们自己还有一套配置规则,运营和市场人员常常面对的问题就是,收到各种不一样的跳转方法,但是他们不明白这些方法之间的转换规则,自然当需要把资源位上到我们家小程序时,不知道应该怎么转换。同时,当别人要我们家小程序触达方法时,无法按照对方的规则给出方法。

当我们运营市场人员遇到这个问题,目前都是通过直接跟开发沟通,开发帮忙手动转换来实现这个需求。后续,我们还是会尝试一些解决方法,比如开发一些转换工具,给他们使用。

结语

总的说来,小程序的能力是显而易见的,身在中国应该大家都有深刻的印象。但是小程序目前在各家超级APP的具体应用都有不小的差异,虽然底层技术类似,但是由于各个生态存在的差异性,还是对开发者造成了不小的困扰。目前,业界虽有Uni-app, Taro等这种多端开发框架,来抹平多端的底层差异,但是实践来看,仍然不是那么一帆风顺,坑也不少,同时各家的运营策略是不同的,提供的扩展服务不一而同。同时,引入第三方框架来开发,在获取收益的同时,又引入了一个可能出问题的一环,如此,要同时排查第三方框架、支付宝小程序本身和自身业务写法的问题,增大了开发及调试的难度系数。幸运的是,随着时间的推移,小程序底层会逐渐稳定,同时,目前w3c也在积极朝着制定小程序规范的方向努力,小程序的发展会绽放更多光彩。