圆桌:小程序技术开发应用实践

 主持人:感谢邱总为我们带来的精彩演讲!小程序推出后,有人说“前端开发的春天”来了,这是因为小程序的语法与前端语言很像,但小程序没有使用国际标准组织 W3C 的 DOM 和 Window 标准,仅仅采用基础 JavaScript。这意味着 HTML5 生态的各种基础无法复用,要完全重造一个新的小程序开发生态,发明能解决功能体验和动态性的技术方案,虽然难,但不是最难的事情。最难的是开发者生态的建设。小程序发展到今天,我们的开发者生态可以说是很成熟了,那小程序提供了哪些技术支持?又有哪些限制与不足?小程序开发者又该如何应对,如何在实践中应用?下面让我们掌声有请, Cocos联合创始人 & CTO林顺、她拍(她face+)技术合伙人李铭明 、58到家技术负责人王超来跟我们聊聊小小程序技术开发应用实践。

    大家都知道小程序开发到现在比之前越来越完善,但在这个过程中肯定也会遇到越来越多的技术问题,接下来先邀请三位嘉宾做一个自我介绍,我就展开我们圆桌环节的讨论。

    HO6A5383_w8249.jpg

    林顺:大家好,我是林顺,我主要负责技术部分。

    李铭明:大家好,我是李铭明,这个照片是我通过我们的产品合成的,可能有点不太像。

    王超:大家好,我是王超,我是来自58到家的技术负责人。

    

    高阳:今天我们有多位嘉宾提到了,在小程序框架这个前端方面的框架已经有非常多,像最早小程序自己团队开放的VP,以及美团团队做的MPLE,这几个平台在我们社区上讨论也负责多,我看到滴滴的团队也做了变色龙的开源项目最开始是支持ILS移动端最近也支持了小程序的跨端,我想听自己在做业务的技术负责人,想一下你们在前端的技术选择上怎么用的。

    

    王超:目前我们的实践因为我们最初的时候在2017年最初做小程序的时候还是集中在微信小程序,包括后来因为我们跟阿里那边有一些合作,所以后来又增加了对支付宝小程序的支持,原来我们人力主要支持两块小程序。但后来随着各家平台小程序的生态不断的完善,头条,QQ,高德,钉钉,包括现在的抖音都出来了,我们现在也考虑了跨平台小程序的选择。

    刚刚提到的变色龙,还有UNITApp我们都是做过调研的,我们在钉钉小程序实现的是,因为我们是移动端跟大前端团队,我们整体今年开始是统一的采用了UNITApp作为跨平台的选择。怎么说呢,首先我们团队是VUE的技术战,本身它是VUE的语言,大家上手比较容易一些。今年大家有没有注意到支付宝已经官方接纳了UNITApp作为它的一个框架,所以我们是选择了UNITApp来覆盖除去我们原有的微信支付宝以外的,所有的多平台的小程序,我们主要是以原生的支持的微信、支付宝,其他的全部通过UNITApp覆盖的。

    

    李铭明:其实我们最早她拍(她face+)最早的时候是没有前端研发团队的,我们小程序刚开始做的时候,我们是客户端,做IOS和安卓的开发我们刚开始的时候对整体小程序的生态不是特别的了解,所以我们采用的是原生框架。到最后的时候在业务发展过程当中,我们也看到跨平台的优势,所以最后我们在技术选择上,我们因为是2018年中的时候开始做的,我们那时候选择的是他若(英音),我们目前只是在微信的上台上做,目前来看他诺是满足我们的需求。

    

    林顺:从大家的分享来看,今天的小程序开发者实在是太难了,对于小游戏的开发者天生没有这些困扰,为什么呢?因为从小游戏的开发开始,我们天生的就是跨平台,这是第一个。第二个其实一个游戏的开发复杂度可能在一些大的项目的话会比小程序要复杂非常多,这方面不仅仅是需要一个跨平台的框架,他还需要工具链的支持,工具链的支持是任何一个产品里面最需要的,因为他直接决定了你的生产效率,直接决定你能不能做很多的事情。像Cocos我们在2013年就开始做第一代的工具,在2016年又开始做了第二代的工具Cocos,我们觉得工具是整个生产里面最核心的东西,最核心上面的关键部件一定要自己做,别人社区里面做的非常优秀的,像谷歌动画像一些优秀的插件我们会利用社区提供的资源,我们会把整个的工具链从上到下打造为一致,工具为一个框架设计的跟工具不为一个框架设计这天然有非常大的区别,我们其实也拜访了很多开发团队,他们在Cocos发布了3D之后,像腾讯光子,像一些外部的游戏公司就直接开始立项做一些重度的游戏。

    所以在我看来今天小游戏的生态里面,这方面要比小程序要成熟很多,因为我们有非常完善的框架的支持,工具的支持,这是一个方面。第二个方面今天游戏离我们还是很近的,在上面有很多配套的服务也会做的更好,像今天大家在微信小游戏里面看到活跃的生态,在昨天BAT的颁奖里面也能够看到活跃的生态,在外部还有很多活跃的比如说手机小游戏的生态,大家也慢慢的把提升效率降低成本这第一阶段的事情跨过去了,在做第二阶段的事情,像流量红利跃迁有非常多的服务,已经专著在这个上面了。

    HO6A5375_w5207.jpg

    高阳:刚刚像林总所说从小程序的技术选型上来说,前端框架非常多,小游戏从原先HTML5方面的积累,已经很成熟了,在小游戏的选择方案上来说,可能会更精确更明确。

    我想追加问李总一个问题我也看到Cocos在前不久开放了一个云游戏的一个方案,CocosPLAY,在云游戏上有怎样的布局和思考?

   HO6A5375_w5207.jpg

    李铭明:这个问题就是我刚刚前面说的围绕着效率的事情,因为Cocos其实做两件事情在提升效率降低成本这个事情上,在安卓起来的时候我们做到了全世界第二大的游戏引擎,第一是UNIT,第二是Cocos,目前我们的占比仍然是排第二。第二就是在微信的小游戏里面,微信刚好去掉了中心化,所以现在微信没有榜单,它只有创意的榜单,今天的主办方阿拉丁我们也非常感谢阿拉丁给行业提供的洞见数据的平台,我们每个月都会猜阿拉丁TOP的榜单我们每个月在阿拉丁的榜单占50%,我们很关心行业是往哪个方向走的。

    云游戏在我们看来是跟今天的小游戏是一个非常互补的内容,其实小游戏跟云游戏有一个非常类似的特点就是点开即玩无法安装,他有一个更低的获得用户的门槛,虽然有一些障碍,但是这些障碍不是致命的,这是一个情况。

    第二个我们今天在小游戏上面虽然Cocos不断的优化我们的工具链让我们的小游戏能够做非常重度的游戏,当然一些更重度的现在还没看,但是这种方式来看的话,仍然会有一个瓶颈在那边,因为整个技术架构不一样,你永远没办法超越原生的例子,云游戏在我们看来是一个非常好的补充,他可以让今天点开即玩很重度的游戏可以用云游戏的方式表现,可以让今天表现非常好的游戏通过小游戏这种类型来表现,所以CocosPLAY我们这个产品是2B的产品,他一部分服务于小游戏,我们今天支持很多App在做这方面的流量变现,因为社区里面有非常多的开发者,Cocos有技术团队,有内容,然后我们刚好可以服务很多App主来做这方面的变现所以如果在座的有什么流量主需要合作,今天我们业务的负责人也到现场了,回头可以谈一下,这是我们帮助社区开发者不仅解决开发效率的问题,还解决他们更高校变现的问题。

    

    高阳:我们都知道Cocos在二度的游戏占比是非常大的,在3D小游戏这块您是怎么看的,或者Cocos团队有没有什么进展?

    

    李铭明:刚才有提到我们从2016年就开始布局做3D小游戏的编辑器,为什么我们会等到2019年才发布呢,原因是在于说第一我们认为核心关键度上的工作流我们必须自己做,我们不会吧编辑器送到UNIT的手上,整个Cocos商业化非常重要的入口是在编辑器上,意味着如果我把我的编辑器给了UNIT,我所有的商业化后续发展的可能性都给了UNIT。因为一个引擎能够走的更远,能走的更久能够更好的服务开发者第一点是我要能生存,还有一个工具去为框架做匹配,用别人的工具,特别是核心工作的工具来完成自己,我可以认为说这个框架其实只是那个核心工作流的一个插件,而它不是一个真正的引擎。因为我们在2010年开始做Cocos2DX的时候,那个时候没有编辑器只有一个引擎框架,我们做了Cocos引擎,但是我们遇到海外很资深的开发者说,这个时候我们才意识到工具有多么的重要,我们在3D今年已经完成了所有工作流上的搭建更加高效的服务开发者,支持今天游戏开发最主流的功能,当然今天还不会去上光追这么高级别的效果,但是非常多的优秀的表现效果已经具备了,所以在发布完了之后已经有非常多的团队开始立项,开始做重度的3D的小游戏。

    

    高阳:大家都知道小程序虽然小,有人评价这个小程序是简约而不简单,我们经常会看到非常多刷屏的小程序的应用,今天也有很多是它的用户,像有千万量级或者更高的小程序的应用它的后端的要求是非常高的,我想问一下她拍(她face+)的李总,在后端技术上你们有没有遇到什么样的难题,或者在技术选择上是怎样用的,我们知道她拍(她face+)是跟AI结合的小程序,在这块AI跟小程序之间又有什么样的可能性?

    

    李铭明:刚开始我们做她拍(她face+)的时候,是技术层面只有两个人,一个前端一个后端,所以当时上线的时候有很多情况是我们没有预料到的,上线了几个星期之后我们用户就达到了百万级,如果在场的用到我们face+的话可以了解一下,我们其实是一个集合了人脸识别,美颜包括融合的一个功能,它对于后端的计算能力要求是非常高的,但是你在短时间用户量增长的情况下,你对底层的优化是没有办法支撑这么大的用户量的,我们只能在业务上做一些优化,而且我们也是大量的工作都在业务上,比如说我们是做了一些动态的扩容,我们对CPU动态的监控增加它的服务,因为每一个App,每一个产品它是有访问的高峰期和稳定期的,在高峰期的时候我们是动态的增加容量,然后在稳定期的时候实际上我们把这些服务给释放掉,这样的话能够节省我们很多成本

    另外我们怎么做一些缓存的策略,我们有几点,刚开始我们是比较粗暴的解决方式,用户一上来你变一张脸的时候我们给你预加载两张或者三张,如果不是快速的点击的话,它的加载速度是非常快的,用户没有感知到做这些融合的操作。我们其实发现这个操作的话对我们调用的成本很大,我们在后台有一套算法,我们用户量非常大,我们通过用户的分析我们调整了它的加载的策略,比如说一些通过用户的行为,比如说预加载两张或者几张的策略,能够在资源上也节省了很多。还有我们在变脸的过程当中,我们也是对你原始的一些照片进行一些判断,比如说你之前用到的照片也用到了我们的模板,融合之后的图片我们是有存储的,当你再用到这样的模板的时候我们直接从存储里面把融合的照片直接拿过来,这也减少了很多计算量。

    其实要解决的问题真的是非常多,今天时间有心我就说这几个,通过我们的优化我们最高的DAU达到每天300多万,KBS2000多万,基本上是比较稳定的。AI跟小程序我是这样想的,我们她拍(她face+)一直做女性社区的,face+是单独出来的一个功能,我们做了一个小程序,小程序一定要简单,一定要易用,你的产品形态一定要简单AI跟小程序的结合是很容易出爆款的,比如说前一段时间比较火的用你的照片融合一个影视剧的场景,这个当时很短的时间内就刷屏了,其实AI的这个东西是很容易出爆款的,他有一个问题,它本身对于服务计算是要求很高的,它的成本也是非常大的,所以说我们在拉新到这么多用户的时候,我们怎么能够把这些用户留存到我们的平台,这是我们要研究的。用户来了我们怎么承接,你如果说一个小程序,只是这么简单,就是我们AI要解决的就是一个场景,比如说我通过一张照片,来识别你是一只猫,比如说什么样的猫,什么样的特性,比如说识别一只狗它是什么样的特性识别一朵花是什么样的环境,比如说我分析你皮肤的状态,给你推荐一些化妆品,或者给你推荐整容的一些建议,其实这个都是我们平时生活场景当中遇到的。

    所以我们怎么去能够把平时用到的这些小的功能做好,我觉得这点是比较关键的,而且还是我刚才提到的,就是怎么能够把这种你获得的这些用户留存到你的平台,这也是我们需要考虑的,我们现在也一直在探讨这个问题,这个就是我的一些看法吧。

    

    高阳:谢谢李总的分享,现在我看到像腾讯他们自己也开放了一些小程序云,相当于后端云服务,这个后端云服务,包括也有其他的一些厂商,在移动端开发的时候,他们也在做后端云服务,已经有后端云服务,跟自己的技术选型上,包括像王总,这种后端云服务不知道你有没有了解过,什么样的团队更适合这样的产品,像58到家是通过自研的方式还是也选择了第三方?

    HO6A5397_w9457.jpg

    王超:云服务这块我们自己也有实践,团队之前也有过调研,我记得是去年腾讯那边刚去做它自己的腾讯云产品的一个推广的时候,因为我们这边当时就做了一个小的实践,我的体会就是云开发,更适合的场景是说对这种创业公司要快速验证业务,或者它本身可能成本有控制,比如说人力成本考虑的情况下,可以考虑采用云开发的方案来去做。这种方案的话它的缺点非常明显,刚刚当当网的李总提到了,其实非常容易跟供应商有一个绑定关系,一旦你的业务深度跟供应商去做绑定的话,你后期想考虑换一个供应商或者一个服务商的话,你要考虑数据的迁移,包括接口变更之后就非常的麻烦非常的难搞。

    我们的业务场景整体来说是比较大的,所以我们这块考虑的并没有采取腾讯,或者他们阿里的一些提供的云开发的方案,我们自身还是基于我们自己的一个云开发的方案。

    

    高阳:主办方让我问两个比较具体的问题,就是58到家是如何解决用户健全的问题,以及如何解决服务器域名不受限的问题?

    王超:确实比较具体,可能大家也会在开发中遇到,尤其是前端,因为我们的产品难免碰到,因为最早快手打车第一版小程序是快速上升,当时是内嵌的形式我们快速上线了微信小程序,从2017年初我们引进了好几十个版本了,其实中间产品有迭代,包括我们最初是用户必须登陆才能够使用我们的产品后来我们向平台化演进我们放开了一部分的内容,但是有一部分的页面,或者是产品,它是需要用户去登陆之后才会使用的,但是基于我们产品已经成型了,已经迭代了好几个版本了,如果你在原有的基础上直接做改造,那直接就是改造成本非常高,你每个页面都要动,做过小程序的都知道每个都有一个对象,我们通过这个对象做一个重写,对它里面的一些生命周期函数做一个拦截,拦截之后在做一个健全,因为毕竟小程序不像HTML5,我们做单页也好,多页也好都可以通过拦截路来,做小程序本身是没有提供这个功能的,所以我们是采取复写它的配置对象来解决统一健全的问题。

    比如说服务器域名受限,大家做过小程序的都知道,后端的服务器域名好像是20个,最多的话就不行了,我们的服务也好,可能是有的很多,我们这边当时因为最初做的时候我们把测试域名,线上域名都是统一都可以运行的,之后我们发现好像不够用了,我们当时想一种方案,就是我们在加一端网端层,把这个代理域名统一之后对实际的用户做一个分发,来解决服务器域名受限的问题。

    

    高阳:时间原因,我们圆桌论坛就到这里,相信几位嘉宾分享之后对于小程序和小游戏不同场景的开发会有更多的了解,会后大家也可以去跟我们的嘉宾有一些更深度的交流。

1576816364.jpg