小程序总结
小程序
1.高效开发的经验分享
发版历史:http://confluence.daojia-inc.com/pages/viewpage.action?pageId=70759438,除了bugfix,基本不到一周一个版本
项目组织
- 优秀的人担任技术负责人,并给予技术指导和资源支持
- 项目开始建立良好的基础
- 核心人员把项目架子搭起来,模块拆分,基础设施、公共lib和公共方法统一专人封装,统一约定
技术架构
统一的环境配置(dev/test/sandbox/production),所有接口同时切换,避免环境不一致导致的问题
对小程序原生API统一封装成promise,同时对常用功能统一封装
- wxRequest
- getDjLoginInfo
- getUserInfo
- login
- logout
- getOpenid
- getAddressInfo
- openWebview
- openIM
- toChangeCity
- toChangeLocation
- showLoading
- requestPayment
- goMiniProgram
- reqErrorHandle
- to404
- track 统计方法
共性问题的统一解决方案和jssdk
- navigateTo 以防止用户连续点击打开多个同一页面
- ios/Android字体加粗处理
- 1px border
- webview分享时的配置定制
- 小程序和webview互相跳转时登陆状态的携带
- webview调用小程序的支付组件
- ...
开发配套设施
组件化尽可能细粒度,业务组件尽量能被复用
- banner、回到顶部、loding、加载更多、toast、星级
- 反作弊弹窗
- 收银台
- 下单页选择规格
- 评价组件/list
- 优惠券item/list
- 登陆
- 搜索框
- 时间选择
- 标签
- plus菜单
项目模板
把之前项目的积累的跟业务无关的底层方法/公共函数/开发配套工具沉淀成项目模板,直接clone之后,进行业务开发
多个小程序开发
每个端共用一套代码还是多端多套代码?(微信小程序、支付宝小程序、百度小程序、快应用,h5)
- 纯展示的需求(同城,家政只填线索),理论上可以做到多端一套,通过工具转换成对应的端的代码,然后再稍加处理,可以复用的是UI(view,css)和业务逻辑部分
- 涉及到平台独有的特性和api的需要进行处理
- 用户系统,openid
- 支付
- app与小程序互相跳转,微信分享,微信公众号跳转小程序
- 平台策略上限制(支付宝不能出现京东,微信等字眼)
- ...
坑
- 嵌套webview
- 登陆状态互相传递
- webview识别是在小程序环境,url?参数
- input上传图片
- input 软键盘
- postMessage 只有离开页面时,小程序才能处理数据
- form 自己的元素盖不住textarea这些原生的组件
- 限制
- 获取头像昵称、获取电话号码,只能用户点击
- 分享不能通过api分享,分享只能设置分享参数,手动触发
- 打开其他小程序,只能手动触发
- 分享到朋友圈只能合成图片,不能直接分享小程序
- 包体大小限制
- 10层跳转栈限制
- 内存使用限制,闪退,发热
- 其他
- 版本更新,新版发布之后,有的用户版本还是旧版本,一直不更新;需要接口做兼容处理各版本,小程序本质上跟App一样
- 审核和发布的间隙 沙箱测试之后,接口已经上线,但是依赖于审核通过之后才能更新到用户,需要接口做兼容处理
- 测试和沙箱环境测试时,扫描二维码打开的是线上版本,然而新版还没上线,导致没法验证,通过内嵌一个扫二维码的页面来fix
- 线上调试 功能不好用