专栏名称: 携程技术
携程技术官方账号,分享交流成长。
目录
相关文章推荐
架构师之路  ·  美团的童鞋,有个问题麻烦您帮忙看一下... ·  15 小时前  
高可用架构  ·  这家公司对网关性能的优化历程,在 ... ·  昨天  
美团技术团队  ·  北斗计划 | 美团核心本地商业大模型全年招聘 ·  4 天前  
美团技术团队  ·  无需代码!美团 NoCode ... ·  4 天前  
美团技术团队  ·  可信实验白皮书系列05:准实验 ·  4 天前  
51好读  ›  专栏  ›  携程技术

干货 | 代码复用率99%,携程市场洞察平台Donut跨多端高性能技术实践

携程技术  · 公众号  · 架构  · 2024-11-14 17:18

正文

请到「今天看啥」查看全文



  • 微信小程序在功能和性能上都要求高优先级支持;

  • c. 高性能需求:

    • Donut在小程序支持度和App性能上表现优异。在App上底层基于Flutter,使用和微信小程序相同的一套容器,接近原生渲染性能;

    • FlightAI具有大批量数据实时渲染的需求,对渲染性能要求很高; 与公司框架计划支持使用Flutter提升渲染性能的技术路线一致;

    1.2.2 为何选型Donut技术
    由于用户群体主要以微信小程序为主要使用场景,所以无法支持小程序的多端框架如React Native,Flutter等无法选用,而既支持小程序又支持移动端的技术框架,目前市面比较流行的是taro和uni-app,但存在如下顾虑:
    • 使用该类框架后,功能更新完全依赖于框架,微信小程序里有的功能可能无法支持;

    • 使用该类框架后,代码经过二次转换,性能可能不如原生WXML,而且会带入转换逻辑额外引入的代码和性能忧虑;

    • 该类框架一般都会自定义DSL,有一定的学习成本,文档是否健全,社区支持是否完善将直接影响配置和自定义功能的效率;

    • 该类框架优势多在跨多端小程序,实际上线APP的案例并不多,大坑小坑无法避免,例如uniapp的nvue原生开发有局限性,特别是样式方面限制比较严重;

    • 跨多端应用开发的全生命周期集成和管理能力是否强大,包括开发,测试,构建,发布,运维,法律法规提示与解读,token管理等;

    而Donut是腾讯官方推出的和小程序同源容器,在功能和性能上比这类衍生框架更优秀,在App上底层基于Flutter,接近原生渲染性能;Donut以小程序DSL作为开发语言,可以无缝切换,也没有二次转换的成本,会开发小程序就会写Donut APP。在研发工具、测试工具、部署工具、运维工具上腾讯做了全方位集成,小型团队可能遇到的问题几乎全部涵盖。官方文档一步一截图,阅读体验良好,总结如下:

    a. 功能覆盖率较高

    常用需要适配API(8个) ,根据使用情况进行选择支持,Donut官方提供了非常多的功能API,从功能支持度、易用性和架构上App小程序同构上也可以看出官方的大力投入。

    序号

    功能名称

    适配方案概述

    1

    •小程序登录(wx.login)

    •可使用小程序登录(wx.getMiniProgramCode)代替
    •或使用微信登录(wx.miniapp.login)代替
    2
    •获取手机号(getPhoneNumber)
    •可使用一键获取本地号码(phoneOneClickLogin)代替
    3
    •微信支付(wx.requestPayment)
    •可微信支付(wx.miniapp.requestPayment)代替
    4
    •微信分享(share)
    •可微信分享(wx.miniapp.shareXXXX)代替
    5
    •隐私政策
    •框架层提供原生的隐私政策弹窗,内容由开发者自定义实现
    6
    •Location 相关
    •创建腾讯位置服务的 Key 即可使用原来的 jsapi
    7
    •消息推送(小程序订阅消息)
    •创建腾讯云消息推送的 Key + 使用新的 jsapi
    8
    •流量主广告
    •创建腾讯优量汇广告媒体 ID/ 广告位 ID + 使用原来的 jsapi
    JSAPI 和组件支持汇总,涉及6大方面
    组件部分 :视图组建,表单,导航,媒体,地图,画布,开发能力,原生组建都能较好支持;

    API部分支持情况 :总共大概507个API;支持371个,大概占73%,部分支持或者不支持的部分官方提供一些其他的替代方案;(2024-03统计)

    SDK部分 :基础SDK和扩展SDK支持较好;这部分是Native功能,根据需要进行勾选,不选就不会打入包中,按需打包降低包size;

    NativePlugin :支持Native自定义扩展,该部分都是一次性工作,除非有强烈的自定义需求,一般都用不上;

    云支持 :云开发云托管,Donut网关防护;

    埋点监控 :热力图,回放功能支持完善,支持全埋点;

    b.基础设施较完善

    Donut 平台覆盖开发、部署、产品体验分析全产品开发周期的各种需求,研发工具、测试工具、部署工具、运维工具上腾讯做了全方位集成,基础设施比较完善,贯穿产研全流程支持,可大幅提升研发效率,特别对于没有移动端研发经验的团队具有引导和指导的作用。

    • 多端框架-支持使用小程序原生语法进行一次代码编写,多端编译,实现多端开发。

    • 多端身份管理-几行代码,快速实现 App、小程序的身份认证和用户管理。

    • 安全网关-提供弱网加速、防爬防刷、流量治理等能力,全方位保障业务安全高效稳定运行。

    • 产品体验分析-从真实的用户视角洞察产品问题,寻找产品体验的不足之处,提升用户留存与转化,具有如下功能:

    • 零代码、全埋点

      无需开发,一键接入,元素自动全埋点,快速开始小程序数据分析。

    • 还原用户操作现场

      创新可视化日志 & 热力图,还原用户实际操作现场,问题分析一目了然。

    • 可视化交互分析

      全程无需 SQL 编写,仅需在模拟器上点选交互即可完成分析过程。

    • 一键智能分析

      无需数据分析背景,根据业务目标智能分析,查找用户漏点,提升转化率。

    c. 研发生态兼容性较强






    请到「今天看啥」查看全文