最近,Twitter 将他们的移动 Web 端迁移到了一个新的、基于 JavaScript 的网络协议栈中。同时,他们阐述了移动 Web 技术在与原生应用性能的对比中都有哪些优势。
在一条非正式的 Twitter 动态中,Twitter 的工程师 Nicolas Gallagher 提到,迁移工作已经完成:
今天我们将 Twitter 所有的移动 web 端流量(听起来还挺多的)迁移到了我们新的网络协议栈中:Node.js、Express、React PWA(React 渐进式网络应用)。
——Nicolas (@necolas) February 8, 2017
这条极其神秘的推特留下了许多未解之谜。其中最重要的是,“之前这些流量在什么上运行?” Ghallagher 之后的推特解答了其中的一些谜团。
针对那些已登录的用户,“新的”网络协议栈其实已经投入应用有九个月了。未登录的用户其实由一个不同的网络协议栈提供服务,这个协议栈是由 Scala 和 Closure Templates 组成。由React 开发者们所认可的登录体验得到改善的时候会用回到新的协议栈。
新的浏览器UI 构建基于Node.js 和Express,Node.js 和Express 用于处理服务器端。该应用程序如同渐进式Web 应用 (Progressive Web App)被构建,渐进式Web 应用通过Service Workers 来支持即时页面加载、离线功能、消息推送等。目前的应用还不能支持所有这些特性,但是另一个Twitter 工程师Paul Armstrong 透露,Twitter 将很快支持这些新特性。
运行在服务器上的后端并不是React。Twitter 工程师 James Bellenger 提到,“后端服务没有使用 React 的render
函数,并且几乎没有使用react-router
”,他还补充道,“这个服务中最难的一项任务是对 json 进行解析”。在这些推特中,Bellenger 透露了这项服务是怎样工作的。对于初学者而言,它运行在当前Node.js 的长期支持版本上,并且使用 handlebars 而不是render
函数。
社区正在要求他们透露更多信息,比如,他们是如何应对处理站点的大量流量的。Stuart Langridge回复道,他想“看到一条(或者更多)的动态能解释这是怎么做到处理大量流量的,以及期间遇到的问题等等。”
Ryan Johnson 写了一篇对于 Twitter 的 Redux 存储的分析,其中有许多有趣的见解。在同 InfoQ 的谈话中,Johnson 谈到,看了 Twitter 的实现,给了他对于技术的信心:
我一直关心的一个问题是,对于 Redux,到底处理多少数据才算多,到底能处理多少数据?你能看到,当你滑动 Twitter 或者收到新的推特动态时,Twitter 会不断地处理数据。如果 Redux 能处理 Twitter 这么多的数据,我相信它能满足我的所有应用的需求。
新的网络协议栈在移动端的性能是非常出众的。Johnson 说到,“我发现移动端页面的流畅让人难以置信,在我看来,它能轻易取代原生应用。”
新的 Web 应用能通过以下网址访问: https://mobile.twitter.com
查看英文原文: https://www.infoq.com/news/2017/02/twitter-react-mobile-stack
感谢冬雨对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ , @丁晓昀),微信(微信号: InfoQChina )关注我们。
评论