进入2019年,大前端技术生态似乎进入到了一个相对稳定的环境,React在2013年发布至今已经6年时间了,Vue 1.0在2015年发布,至今也有4年时间了。
整个业界在前端框架不断迭代中,也寻找到了许多突破方向,例如跨平台中的RN、Flutter,服务端GraphQL、Serverless,前端和客户端的融合越来越紧密,前端在Node和Electron的加持下,也扩展了自己的版图到服务端和桌面。
同时,随着前端开发越来越复杂,整个前端研发也经历了人工化->工具化->工程化->智能化的演变。目前各个大厂在工程化实践不断迭代,出现了许多Low/No Code等前端智能化解决方案,工程化实践也深入到研发的各个环节,不断提升前端研发的标准化能力。而且,随着机器学习的加入,各类UI2Code的解决方案也开始出现,前端研发进入了一个完全不同的时代。
随着端上能力的不断增强,现在在端上做的事情越来越多。首先,数据可视化方向,各类图表、地图、3D等等数据可视化的尝试变得越来越多。其次,伴随着人工智能的加持,在端上的人工智能应用也变的普及,减少了服务端的交互,提高了系统的实时响应能力。最后,随着Webassembly等技术的应用,有可能将前端运行能力再提升一个档次,可以进行更为复杂的端上计算。
为了了解当前前端的发展趋势,让我们从国内各大互联网大厂开始,了解他们的最新动态和未来规划。
这是解密大厂前端技术体系的第四篇,前三篇已经讲述了阿里、腾讯、百度在前端技术这几年的技术发展,这一篇讲讲携程。
我自己是一名从事了多年开发的web前端老程序员,目前辞职在做自己的web前端私人定制课程,今年年初我花了一个月整理了一份最适合2019年学习的web前端学习干货,各种框架都有整理,送给每一位前端小伙伴,想要获取的可以关注我的头条号并在后台私信我:前端,即可免费获取。
移动技术产品
移动技术产品分为四大模块:
大前端技术框架
携程在大前端技术框架层面主要面向不同应用场景沉淀了三个技术框架:
新技术探索
MCD经历了多次大型迭代,逐步成为携程内部持续交付平台,涵盖了集成阶段、测试阶段、发布阶段和运营阶段的全流程研发环节。
MCD 1.0
MCD1.0的出现解决了系统在线打包的问题,并且通过CI/CD实现定时打包、代码静态扫描、自动化验包-白屏监测的能力。
持续集成阶段接入了代码扫描和冒烟测试的功能,通过infer和sonar进行代码的静态检查,并且统一集成单元测试能力,提供单测的结果和覆盖率。
冒烟测试可以监测白屏情况,并且进行多机型兼容测试,通过内容和图像对比提前发现问题。
通过集成编译,持续减低App编译的时长,提高研发测试效率。
MCD 2.0
MCD 2.0重新定义了MCD,涵盖了更为广泛的范围,包含集成、测试、发布、运营环节。并且由各个模块各自打包生成Bundle,再通过Bundle集成达到2~3分钟极速出包的能力。
同时MCD也增强了许多能力:
APM性能监控平台主要关注性能、崩溃、异常等数据的监控,携程在性能与异常监控上也做了许多工作:
收集App中所有相关数据,例如网络请求、页面跳转、图片请求、用户行为埋点、Cat日志、Web服务日志,并且通过时间轴将所有数据串联起来,可以帮助研发同学快速还原现场排查问题。
在日志展示上以一次用户session为集合,按照时间轴显示不同的页面信息,同时在每个页面的详细信息中会提供当前页面所有的网络请求、用户行为埋点、研发自主埋点等等内容。
打造无线技术平台,将App中通用能力沉淀下来,并且复用到多个App中,避免重复造轮子,提高研发标准化与效率。同时平台治理提供例如注册服务、排查故障、服务熔断、查看调用等功能,方便平台化技术的运营。
CRN是携程内部基于React Native进行深度定制的移动端跨平台/动态化框架,目前已经在实际的业务项目中大规模应用,页面规模超过100个,PV数目已经超过传统Hybrid H5页面的2倍多。
基于React Native框架优化,定制成适合携程业务的跨平台开发框架 - CRN,提供从开发、发布、运维的全生命周期支持。
携程在2017年9月份正式上线了Node.js应用,历经2年时间,应用数实现了8倍增长,覆盖公司33个业务部门。
Node.js的工程化建设,涵盖开发、构建、测试、发布、运维各个环节:
GraphQL-BFF 的核心思路是,将多个 services 整合成一个中心化 data graph。
每个 service 的数据结构契约,都放入了一个大而全的 GraphQL Schema 里;如果不做任何模块化和解耦,开发体验将会非常糟糕。每个团队成员,都去修改同一份 Schema 文件。
这明显是不合理的。GraphQL-BFF 的开发模式,应该跟 service 的领域模型,有一一对应的关系。然后通过某种形式,多个 services 自然整合到一起。
技术选型上,开发语言选用了 TypeScript,跑在 Node.js v10.x 版本上,服务端框架是 Koa v2.x 版本,使用 apollo-server-koa 模块去运行 GraphQL 服务。
Apollo-GraphQL 是 Node.js 社区里,比较知名和成熟的 GraphQL 框架。做了很多的细节工作,也有一些相对前沿的探索,比如 Apollo Federation 架构等。
携程在组织架构上有基础研发团队进行保障,在大前端领域能够收敛、沉淀众多的基础平台服务、技术框架,形成了一套比较完整、统一的基础框架能力,很好的支撑了多App、多业务的快速发展。
本篇文章力图从大前端各个方面去整理总结携程当前的技术体系,但一定会有许多遗漏,同时开放信息毕竟有限,希望相关同学可以一起多多交流。
这是大厂前端技术体系解密系列第四篇,后续还会有其他大厂的内容,精彩还将继续,有兴趣的同学可以关注小编,第一时间获得信息。
原文链接:https://mp.weixin.qq.com/s/IbORf-lQOLyaS8sBO5ILOw
作者:奶爸码农
推荐阅读:小米手环3可以接电话吗
(正文已结束)
免责声明及提醒:此文内容为本网所转载企业宣传资讯,该相关信息仅为宣传及传递更多信息之目的,不代表本网站观点,文章真实性请浏览者慎重核实!任何投资加盟均有风险,提醒广大民众投资需谨慎!