小程序是一种不需要下载安装即可使用的应用。它实现了应用“触手可及”的梦想用户扫一扫或者搜一下即可打开应用;也体现了“用完即走”的理念用户不用关心是否 ...
小程序是一种不需要下载安装即可使用的应用。它实现了应用“触手可及”的梦想首页优化用户不用关心是否 ...
小程序是一种不需要下载安装即可使用的应用。它实现了应用“触手可及”的梦想用户扫一扫或者搜一下即可打开应用;也体现了“用完即走”的理念用户不用关心是否安装太多应用的问题。
早在2016年9月携程就获得小程序内测名额在对微信文档规则调研、确定需要开发的业务之后就开始了风风火火的开发。
回顾三个多月的开发过程其中碰到了各种问题seo优化细节其中碰到了各种问题也尝试了一些解决办法最终打造了携程独立的小程序框架。
本文将主要介绍携程小程序的框架开发和发布审核中碰到的问题及我们的一些解决办法。
一、携程微信小程序的框架介绍
1、CPage()
CPage是封装了微信的Page的函数内部通过插入中间件装饰页面初始化的option主要实现页面间通信、页面层级控制、埋点、页面分享等功能。
中间件
Base : 装饰option
Navigator:内部维护navigatorOpts存储上文的参数回调等pageStack存储页面栈信息
UBT :为业务提供埋点分析、统计页面驻留等信息分享
分享
在CPage中特殊处理同时也方便统计分析
CPage中data处理的具体流程如下图:
流程解释:
data传入CPage
Baes同步data生命周期接受data自有属性
Navigator控制层级使用navigateTo上下文交互
UBT提供统计分析功能及后续更多中间件处理
newData接受data.onShareAppMessage和中间件的属性
传入原生Page()
2、CWX
cwx的原型是wx,扩展了更多API工具类、网络请求相关、定位相关、组件API等。
网络请求
wx.request()最大并发数是5所以要避免同时并发很多请求。
主要在两个方面:
1、cwx提供了request内部通过队列的方式控制request并且提供了cancel方法取消在等待队列中的request
2、服务端数据合并小程序端单个页面请求减少
工具类
提供常用的方法如Base64加解密JS对象类型的判断等
定位
1、使用wx.getLocation获取到经纬度上传服务端匹配定位城市相关信息使用百度逆地址解析
2、内部实现队列控制定位请求解决授权等问题
组件API
对接组件提供快捷使用组件的API可在任意页面使用基础组件
cwx.component.calendar()
cwx.component.city()
cwx.component.imagebrowser()
3、基础组件
基础组件都是基于CPage实现的参数传递页面回调都遵循CPage的规则
日历组件
提供常用的日期选择功能日期元素支持一级标题、二级标题及颜色等自定义
城市选择组件