美团外卖小程序的探索与实践丨掘金开发者大会

掘金开发者大会圆满结束,其中美团外卖上海研发中心的资深技术专家王善成对美团外卖这个庞大的产品如何在小程序的实现做了演讲,本文将带领大家回顾一下演讲中所提到的技术重点。

一、技术架构

业务场景:

采用较开放的框架策略,项目支持自由进入第三方的框架去满足各个应用场景的需求。对主流程等相对独立性较高的采用微信的原生框架;对于营销业务上需要支持Web页面、小程序等多种渠道,通过引入mpvue使多个渠道可以使用Vue.js的组件。


协同开发:

多团队开发中,核心的主流程放在主包,其他业务存放在不同的子包中,保证每个包中的业务相关性比较强,避免用户使用中频繁的子包加载过程,也避免团队业务冲突。将通用组件和各业务的子包托管在npm上进行模块化的管理,对构建脚本的改造将npm包引入到小程序。


系统架构

最底层是微信的原生组件;中层是各个业务通用的核心组件如:登录、对vebview的封装、监控以及数据埋点等,通用组件由统一的团队去维护和组建;通过对编译工具进行插件化的改造允许其他的业务方能引入第三方框架进行开发;最上层是各个业务通过拆包将业务隔离开来;


二、流程和工具

小程序脚手架(初始化)

利用如下架手架可自动初始化小程序项目,生成可以使用框架的目录结构,方便小程序的搭建和部署。


组件架手架(初始化)

可以利用如下架手架自动化创建组件。

开发过程:

本地开发过程如下,在本地工作目录中去调用命令build让构建工具执行整个构建过程,生成的目标代码会写到本地工作目录中,再通过微信开发者工具对生成的代码进行调试和发布;其中构建脚本提供Mock功能,可以模拟后端服务器接口。


发布过程(当前):

将代码托管于Git,发布时CI首先通过Git拉取待发布的代码且执行构建过程并对源代码和图片进行压缩进一步缩小小程序的体积,同时还对代码进行语法检查,对于不通过的代码将会被打回重新修改才可再次发布。


发布过程(规划):

将整个过程通过CI连接起来,减少人工操作。


三、组件化

Storage性能:

对小程序原生组件的改造,以下是一份“暴力”测试数据。

  • 大小约100k随机对象读写清空缓存各100次,耗时比较


Storage数据同步:

原理是在初始化过程当中,内存先去调用 wx.getStorageInfo获取现在小程序getStorage里面所有的存储的key值,就可以得到一个数据表。在读的过程中,首先是 组件的api去触发读取的操作,然后内存会查询我当前有没有缓存这个数据,没有的话就通过wx.getStorageInfo获取,并将值返回回去。写入只需要写入到内存当中,这样写入的性能就非常高。关于同步机制,美团外卖小程序采取了两个同步机制进行双重保障,首先是在小程序的生命周期中调用onHide、把内存中没有同步到文件的数据通过setlnterval回写到文件中。为确保数据同步设置了定时器。



转载于:https://juejin.im/post/5ba11d715188255c8e72740a

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1,实现的需求 1)首页:标题栏获取用户当前位置,使用腾讯api实现定位,不用弹窗出现用户授权, 进入首页,获取附近商铺的列表 轮播图: 导航栏: (1)向后台发送请求来获取展示的商铺列表,综合排序,筛选实现根据用户 条件请求数据 (2)导航栏出现偏移 商铺列表: (1)带参跳转店铺 网络中断情况: 新页面提示没网,可点击刷新 2)店铺:根据店铺id获取店铺相关信息 头部:动态显示店铺的相关优惠 导航:分别切换菜单,评价,商家 菜单: 商品列表展示:左右联动,动态出现添加数量以及按钮 商品详情展示:弹窗卡片,展示详情,可动态出现添加数量以及按钮 购物车:展示添加进购物车的商品信息,清空结算,计算合价,差多少配送, 结算:(未实现),跳转支付,传后台购物车数据,用户信息,当前时间等订单 需求信息 评价:根据店铺id获取店铺的所有评价list展示 商家:展示商家优惠信息,需求(呼叫商家,查看食品安全档案) 3)订单 全部订单:根据用户信息获取相关全部订单,实现详情,再来一点(需要根据店铺 id) 待评价:需求:实现评价功能(提交:店铺id,评价信息) 退款:评价,详情 4)个人 用户信息展示: 登录: 未登录:(登录,注册实现) 用户地址: 管理地址:添加新地址,编辑地址(地址id,用户id) 客服中心:接入客服(公众号后台可设置客服人员) 退出账号:清空本地用户信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值