小程序推出后,有人说“前端开发的春天”来了,源于小程序的语法与前端语言很像,前端开发者可以很快地切入。前端开发的难度虽然降低了,但小程序对后端的要求却没有任何降低,反而提出了更高的要求。那微信官方对小程序提供了哪些后端技术支持?又有哪些限制与不足?小程序开发者又该如何应对?
1月18日晚8点,巴克云创始人、小应用云架构师、原迅雷首席工程师刘智聪将与广大开发者相约在CSDN学院,在线分享小程序后台开发的那些事,带你了解小程序后台开发关键技术点,并通过真实案例,教大家掌握小程序开发中的关键环节。
在正式分享前,我们有幸采访到刘智聪,请他先聊聊小程序后端开发时的诸多限制及最常遇到的问题,同时将为开发者带来一些建议。
巴克云创始人、小应用云架构师、原迅雷首席工程师刘智聪
受访人介绍:
刘智聪,巴克云创始人、小应用云架构师、原迅雷首席工程师。在迅雷时设计开发了多款迅雷核心产品,是多个领域的技术专家,也是BOLT 界面引擎的发明人。
CSDN:首先请您做下自我介绍,目前专注于哪些技术领域。
刘智聪:大家好,我2007年到2016年上半在迅雷任首席工程师。是迅雷多个PC核心产品的架构师,设计的Bolt界面引擎重塑了迅雷的Windows开发技术栈。最近几年在迅雷负责基础研发部,主要工作是迅雷基础核心系统(包括P2P、云存储、数据挖掘等)的研发,推动黑科技的研究与落地。
我五年前开始思考分布式系统领域的一些基础问题,已经有了一些成型的理论,将通过在基础概念上的革新来创建新的分布式系统的开发模型,降低复杂系统的开发门槛,提升开发效率。为了将这个新理论落地,我已在几个月前成立了“巴克云”,将要通过PaaS的方式把这个新的理论介绍给所有的开发者。
CSDN:对于想进行小程度开发的企业、组织等,他们应该如何着手,有哪些注意事项?
刘智聪: 9月底腾讯发布小程序以后,我们就把公司的方向调整为“支持小程序的PaaS”了。所以我们对小程序还算是有一些研究的。
前些天在微信公开课上,张小龙已经把小程序的各种关键问题都讲的非常清楚了,所以对于最近想玩小程序的团队,我的第一个建议就是“顺势而为”,仔细把张小龙的演讲原文多看几遍,好好理解一下微信团队对小程序的未来规划。
我的第二个建议是“大智若愚”,简单的说就是把握原则,独立思考。毕竟现在这个时间点,谁都没有一个小程序的完整产品周期经验,大家都在进行探索。所以独立思考,相信自己的判断非常重要。从小程序的设计目标来说,微信希望大家回到 “提高效率,提升体验,以用户价值为核心”的产品初心上。
第三个建议是怎么开始着手的问题。微信提倡“更多的企业把他们的服务变成一种小程序的形态,提供给微信的所有用户来用”。也就是说是把小程序作为现有服务的一种有力补充,不必all in,先派一个小团队快速的用小程序的方式完成一个小功能就好。 至于怎么做出小程序的爆款,我觉得这是一个新平台的产品创新问题,整个行业现阶段其实都没什么经验。那我的建议就是允许团队里对小程序有兴趣的工程师最近能分出30%-40%的工作时间来自由发挥,公司给予一些其它资源的支持就好。这样即使做不出爆款,也能积累有小程序实际经验的工程师,并发现团队里学习能力强的好工程师。
CSDN:有人说小程序“简约而不简单”,它虽提供的功能及界面简约,但对后端却有着更高的要求。对此,您怎么看?
刘智聪:“轻前端重后端”应该是现代互联网系统设计的常识了。在条件允许的情况下,把逻辑尽量往后放,不但修改起来方便,还能提高前端的加载速度和性能,提升用户体验。官方对小程序直接做了一些限制,比如一个小程序打包后最大只有1MB,其实就是保证了所有的小程序的加载时间。这也算是逼着大家往正确的方向走了。
小程序对后端的“高要求”,比较直接的体现是在协议支持上。目前小程序只支持HTTPS协议和WSS协议,在安全上直接就是高起点。这两个协议在过去都不算是主流的应用协议,有实际经验的开发和系统运维其实是比较少的,这也造成了小程序的后端开发不好做的一个现状。
CSDN:能否简介介绍下小程序的通信架构?
刘智聪:刚刚我已经概括性的说了小程序在协议支持上的限制。而在实际开发中去用小程序的通信框架,会发现更多的限制。坦白地讲我觉得有些限制并不是很合理,相信反馈的人多了小程序团队会及时作出调整。但现阶段,了解小程序的通信架构的核心就是了解这些限制。篇幅的限制我就简单地列一下,而不展开分析了。
小程序的JS框架不能使用windows对象,所以大量传统的JS库都用不了。
发起HTTPS请求用来处理逻辑数据,有同时连接数限制。并且URL中不能设置端口。
WSS只允许开一条连接。
通过uploadFile,downloadFile的方法来传输媒体数据,但支持的媒体数据类型有限。
CSDN:目前微信提供了哪些后端技术支持,还有哪些需要后端开发人员自己研发探索?
刘智聪:目前小程序技术团队只提供了一些传统的服务端 API,用来对接微信平台功能,和原来公众号/服务号的差异不大。此外没有提供任何后端技术的支持,需要后端开发人员根据微信小程序的协议要求,选择自己趁手的后端框架来实现自己的后台。但由于小程序通信架构的限制,不少传统的后端框架都不是那么好用的,需要做一些修改来适应小程序的通信架构。
CSDN:在小程序后端开发时,小程序开发者最有可能遇到哪几类问题?
刘智聪:第一个问题是支持HTTPS协议需要开发者有一个有效的SSL证书。这个不少开发者都没有申请的经验。
第二个问题是不少后端框架对HTTPS、WSS协议支持不够好。对有经验的后台团队来说,基本都会做nginx反向代理=>应用服务的设计,这样协议支持在反向代理层就搞定了,不会对应用服务系统有任何影响。但这个架构如果没有实际的经验,搭一遍还是比较费事的。
第三个问题是WebSocket协议实现应用的问题。小程序的体验要好,肯定是要用好WebSocket来做实时推送的。但过去WebSocket的应用一直比较尴尬:前端社区担心浏览器兼容问题不敢用,做APP的同学有推送需求又直接使用TCP了。所以WebSocket的相关框架的成熟度和普及度一直都不高,最近这一波爆炸性的需求也是需要开发社区花点时间来消化的。
CSDN:现在有没有一些第三方后端解决方案,可以帮助企业解决后端通用问题?
刘智聪:小程序9月底发布内测版到现在也就4个月不到的时间,而且相对后端来说小程序的前端框架算是“天翻地覆”的改变,所以早期参与的开发者大部分都在做小程序前端开发的最佳实践,目前已经发布的第三方后端解决方案其实是不多的,主要也是帮助开发团队解决一些基础性的问题。简单的整理下可以有下面几种。我尽量选朋友的项目说,不是为了广告,主要说错了不会被打(逃),毕竟现在小程序相关的项目都发展的特别快。
几个主要IaaS厂商都针对小程序这一波提供了更简单的证书申请/配置流程。主要解决的是“有证上路”的问题,还算不上是解决方案。
一键生成类解决方案,比如“轻芒小程序+”,可以把一个用HTML5编写的内容转换为小程序,在这个阶段对内容创业者来说相当有用。火速移动准备了一系列常见类型的小程序模版,只需要填写一些信息就能直接创建一个完整的小程序。
SaaS服务。不少传统的SaaS厂商都快速地完成了对小程序的支持。主要还是在协议兼容和场景设计上的,比如阿拉丁小程序数据统计平台,talkingdata App Analytics,环信的IM SDK等。
扫描以下二维码,报名参加1月18日CSDN学院公开课,与刘智聪在线交流: