千牛插件上线以来,为广大的商家用户提供了更多的功能和选择,同时也带来了更加便捷的工作方式,受到了众多用户的喜爱。同时,我们注意到插件目前的用户体验还有很多的提升空间,用户的使用习惯也没有良好的养成,导致插件生态没有良好的形成。以交易类目为例,该类目插件上线的插件有20多款,质量良莠不齐导致使用插件用户数量相差过大,使得插件之间的竞争力不够强。在这样的复杂背景下,千牛需要为开发者提供接口友好的、功能丰富和性能优秀的SDK,方便开发者推出更加有竞争力和用户粘度高的插件。
千牛插件提倡“小而美”,而非“大而全”。要求插件“美”的含义在于要求提升专业度、提高插件质量、和更好的用户体验,给用户带来美的感受。QAP旨在为开发者提供接口良好、性能优异和稳定的平台。
Qianniu Application Platform(QAP)是千牛官方推出的、功能丰富的开发者套件。该套件包括了但不限于:
本文将描述QAP的优点,让开发者快速了解QAP。
1. 页面管理
1.1 页面栈
相对于H5页面切换时需要重新加载不同的html,QAP的多页面管理在底层屏蔽平台差异性(Android和iOS),实现Native层面的多页面来保证真正的多页面。
1.2 页面生命周期
在QAP中定义的每个页面,都可以感知到Native页面的部分生命周期事件,充分利用这些生命周期事件,可以开发出用户体验更友好的插件。以Andorid为例,QAP的每个单页面分别对应到Android的Fragment实例,开发者可以收到Fragmentd 部分生命周期事件,比如在应用退后台时,存储状态数据,而在从后台恢复时则可以从之前保存的状态中快速恢复用户操作上下文。
2. 高性能
一直以来,H5编写的插件使用Webview容器加载后,导致内存占用量飙升从而使千牛容易被系统回收。在移动极端机上经常出现的一幕是,千牛插件打开相机等耗内存应用时千牛被回收导致千牛插件无法很好的运行。
经过编译的QAP工程代码会以Native方式解释JS并运行,替代让人诟病已久的webview。带来的好处在于,缩短插件打开时间和提高运行时的效率。由于没有Webview的初始化,和跨进程带来的消耗,千牛插件的启动速度将得到较大幅度的提升。大量的统计表明,iOS插件启动时间约为200毫秒,Android插件启动速度在400~600毫秒之间。插件启动时间的效率媲美原生应用。
千牛插件的离线包方案同样适用于QAP,并且已经集成到QAP-CLi工具里。开发者打包后上传到千牛服务端即可。
首先QAP提供了命令行工具迁移H5工程,并且允许开发者使用H5和Rax混合式的方法。开发者可以升级部分页面,并且上线查看实际效果。
QAP页面可以使用Rax和H5开发,这两种方式都是使用了前端熟悉的语法。ES6、JSX、Babel和Webpack等都是前端熟悉或者使用过的,不存在很高的学习成本。
在风险成本方面,QAP提供了完整的降级方案和回滚机制,并在打包时提供了H5版本的qap工程,从而保证插件的可用性。
QAP的JS SDK为插件提供了丰富的能力:
a) 页面管理
提供了navigater相关的Api,可以对页面执行push、pop等页面栈相关的操作。
b) 存储管理
提供了基于Session、Cookie或关系化数据的存储方案
c) 千牛标准协议
千牛标准协议指的是千牛开放给外部开发者调用的接口或功能,你可以通过JS SDK方便的调用该协议功能
d) TOP API
TOP API是淘宝开放平台提供给开发者的、功能丰富的API集合。你可以通过QAP直接调用该类目的API。
e) 日志组件(开发中)
日志组件提供了一套日志输出、上报的API,用于后续日志收集、问题排查。
f) 传送门(规划中)
这是千牛开放平台提供的推送服务,可以利用推送的方式,实时将数据推送到客户端进行同步,而无需再主动到服务端拉取。未来将为插件开放。
值得一提的是,所有的api请求都提供了Promise版本,意味着你可以这样调用API:
// Promise 形式 QN.top.invoke({ api: 'taobao.time.get', query: {}, }).then(result => { console.log(result); }, error => { console.log(error); });
文档涵盖了新手指引、使用QAP和高级三个部分。对于初次使用QAP的开发者,我们提供快速开始等基础的文档。已经使用QAP且渐入佳境的开发者,我们提供了UI组件列表、API列表等文档,方便开发者查询。开发一个完善的、质量良好插件,往往需要一定时间的QAP相关使用知识的积累,因此QAP提供了开发建议等高级部分的文档。
QAP作为千牛官方推出的开发套件,将受到长期支持。目前QAP还在快速迭代更新,并持续为开发者带来更多的、友好的新特性。
将来JS SDK支持PC、移动的调用方式统一,最小化端的差异性。官方例子也更加丰富和拥有更好的可读性。
QAP兼容H5方案,意味着可以很方便的迁移你的H5工程和使用H5开发你的新页面。