查看原文
其他

AMP 和 React+Redux:为什么不呢?

2016-11-01 DevRel 谷歌开发者



在 Reddit,我们最近构建了一些常见网页的替代版本,这些替代版本的网页使用了  (AMP) 技术 - Google 和开源领域的其他参与者联合设计了这项技术,用于确保网页在移动设备上从搜索结果快速加载。我们实施这项技术是为了提升移动用户的 Reddit 体验。




我们将其构建成一款使用 React 与 Redux 的 Node.js 应用。React 是一种现代化的网络框架,可以解决网络开发过程中出现的大量问题。Redux 则是一个内容库,能够保留 UI 应用状态以及将远离用户控制与 API 回调的状态过渡抽象化,从而提供了一个固定的视图组件应用状态单一可信来源。对本质上渲染静态标记的应用来说,React 与 Redux 看起来像是一种非常奇怪的组合,但是,我们发现这种组合非常有效。我们的决策更关注人与生产率,而不是代码本身。

我们有一只非常棒的团队,他们正为我们使用 React 与 Redux 的移动网络应用构建新版本。新版本将替换 m.reddit.com 上目前正在运行的网站,并且将在未来数周上线。新应用是一款单页面应用,也就是说,客户端的 JavaScript 代码将处理点击、对 API 发起数据请求,以及渲染浏览器中的实时新视图,而不是由服务器渲染每个网页。为了获得出色的应用首次加载体验,我们还支持在服务器端对页面进行完整或部分渲染。

我们选择这项技术构建 AMP 应用的主要目标是希望快速打造出色的用户体验。由于 AMP 从根本上说是一种移动体验,我们将自己基于 React 与 Redux 的新版本移动网络应用作为切入点,但仅在服务器端渲染中使用这项技术。利用现有的代码库开发让我们可以将精力集中到如何让 Reddit 的 AMP 体验与核心移动网络体验不同上。利用 React,我们可以像使用任何 HTML 元素一样,使用类似 amp-img 或 amp-accordion 的 AMP 组件构建视图。因此,我们可以保持与其他 React 项目一致的范例,而不必为每个新组件添加关联。

随着 AMP 流量的增加,我们在生产过程中详细了解了 AMP,并且将继续探索为 Reddit 移动用户提供服务的更多方式。我们的 AMP 应用与核心移动网络应用之间的界线将变得模糊。我们有意保留了将 AMP 应用与移动网络应用合并的可能性。基本上,这样会让代码共享更加简单,也让我们可以灵活地制作快速加载的 AMP,从而妥善地丰富网页的交互性,让新用户成为 Reddit 的固定用户。

从技术和用户体验角度来说,我们对像 AMP 和 React 一样的新工具和生态系统感到非常兴奋。两者都可以让开发者编写更好的代码,构建快速且具有吸引力的网页。我们的目标是帮助 Reddit 用户在互联网上找到精神家园,为此,我们将使用任何有助于构建坚实技术的工具与技术。




查看 AMP 中文文档请点击文末“阅读原文”。



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存