写点什么

Flipboard 发布 Web 版,在 Web 技术实现上取得突破

  • 2015-04-01
  • 本文字数:1359 字

    阅读完需:约 4 分钟

最近,Flipboard 发布了其杂志形式社交网络聚合阅读器的 Web 版本。这次发布旨在让用户在浏览器中拥有与原生应用同样的阅读体验。为了实现这个目标,开发团队不得不在 Web 技术上有所突破以满足原生应用对照版本的要求。Web 版开发团队的工程师 Michael Johnston 在 Flipboard 官方博客上详细说明了他们面对的一些问题及解决之道。

开发团队做出的第一个决定是 Web 版应该滚动展示而不是标准的翻页展示,他们认为在 Web 环境下,对于用户来说滚动看起来更自然;其次,他们希望用户拥有每秒 60 帧的体验,这意味着绘制时间应控制在 16 毫秒之内,且需要限制重排和重绘。因为存在卡顿的现象,所以在移动设备上很难做到这一点。在他们看来,DOM 非常慢,而且与 DOM 的交互终将超过这个限制。

综合考虑,他们最终决定使用 Canvas,Michael 解释说:

Canvas 是一个即时模式的绘制 API,绘制层不保留绘入对象的信息,而保留模式恰恰相反,它是声明式的 API,管理绘入对象的层次结构。Canvas 受益于即时模式方式允许直接给 GPU 发送绘制指令。

与 HTML+CSS 技术相比,Canvas 开发技术面临的困难尤其突出:它每次只能绘制一行文本,图像处理起来很复杂,重叠元素无法参考任何 z-index 属性。尽管遇到这么多弊端和困难,团队最终仍决定坚持 Canvas 技术,因为 Michael 认为:

你不可能在 DOM 中构建一个每秒 60 帧的滚动列表视图,与此相反,现今的大多数设备都提供了硬件加速的 Canvas 实现,可以直接给 GPU 发送绘制指令。这意味着我们可以非常快地渲染元素;在许多场景下,我们说的是亚毫秒级范围。

事实上,Canvas 拥有非常小的 API 集,能够减少不同浏览器间所现 bug 或不一致性的可能性。相对于处理绘制指令的严格顺序,创建开发者可以处理节点树的抽象层,无论如何都是更加必要的。为了完成这个库,团队实现了自己的滚动算法(加入了一些优化考虑,如使用脱屏 canvas 的重绘层),并在 React Canvas (一个 React 组件,能够以更自然的方式进行 Canvas 开发)之下封装所有功能。

社区对这次发布的反应褒贬不一,每一个人都赞扬团队为这个项目做出的努力以及他们无私分享他们的决策,即使是那些有争议者。一些人喜欢它的简洁设计 React Canvas 的流畅性,而不喜欢团队所做决定的其他人主要担忧可访问性的问题。Modernizr 的作者 Faruk Ateş在他的博客中写到:

Flipboard 是一个重点为文字内容的产品,这就是为工程团队将可访问性完全抛出窗外而深感遗憾的原因。整个“Web”版本竟然是在一个 HTML5 Canvas 元素中用伪 DOM(文档对象模型)实现。我也希望易用性是工程团队下一个重大计划──2.0 版本发布时要解决的问题,如果你愿意的话。

Christian Heilmann 批评了团队执着于每秒 60 帧以及无限滚动:

的确,我们需要有目标追求,也需要有可参照衡量的一些东西。但考虑到硬件的不统一,以及一个 HTML5 应用必须涉及的抽象层数量,定义一些类似每秒 60 帧基准的事情是相当幼稚的。

大量解决方案都涉及无限滚动,真的,通常这比分页还烦人。

查看英文原文: Flipboard Pushing Boundaries With Its Web Version Release


感谢卢俊祥对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流。

2015-04-01 06:553425
用户头像

发布了 63 篇内容, 共 136.7 次阅读, 收获喜欢 38 次。

关注

评论

发布
暂无评论
发现更多内容

AI编程神器!Trae+Claude4.0 简单配置 让HarmonyOS开发效率飙升 - 坚果派

万少

HarmonyOS NEXT

黑龙江等保测评:2025年新规核心变化与应对策略

等保测评

黑龙江等保测评:企业等保测评全流程指南

等保测评

CST软件的涡流制动 - CSTOpera仿真对比

思茂信息

cst CST软件 CST Studio Suite

非凸科技受邀出席第九届AI&FOF投资创新发展论坛

非凸科技

YashanDB SPLIT函数

YashanDB

数据库

AI英语口语APP开发费用评估

北京木奇移动技术有限公司

软件外包公司 AI英语学习 AI口语APP

网络嗅探工具Intercepter-NG的技术内幕与黑客文化变迁

qife122

网络安全 黑客文化

黑龙江等保测评:三级系统测评成本优化策略

等保测评

区块链U卡APP的技术方案

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发

Web3 项目的外包开发费用评估

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发

区块链U卡APP开发的技术难点

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发

基于YOLOv8的有无戴安全帽检测识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!

申公豹

人工智能

BeeWorks Meet:私有化部署,重塑高安全需求行业的视频会议体验

BeeWorks

即时通讯 IM 私有化部署 局域网视频软件

Skywork UniPic开源了!从零预训练打造图片生成、理解和编辑一体化模型,生图效果达SOTA

新消费日报

YashanDB SOUNDEX函数

YashanDB

数据库

区块链U卡APP的开发成本评估

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发

小红书笔记详情API响应数据解析

tbapi

小红书 小红书笔记详情接口 小红书API 小红书笔记数据采集

像搜索一样简单,百度网络运维的 AI 智能体设计和实践

Baidu AICLOUD

智能体

“多模态数据融合技术创新与落地实战”活动在数新智能圆满收官,产学研共探智能时代新路径

数新网络官方账号

巡检任务管理系统(源码+文档+讲解+演示)

深圳亥时科技

YashanDB SINH函数

YashanDB

数据库

开放原子开源生态大会在京举行,KWDB 挑战赛重磅启动!

KaiwuDB

基于深度学习的YOLO框架的道路裂缝智能识别系统【附完整源码+数据集】

程序员Geek

人工智能

加密货币硬件钱包安全使用的10条黄金法则

qife122

区块链 加密货币安全

TPU Deep Dive:Google TPU 架构深度分析

Baihai IDP

AI Google TPU

KWDB 初体验

KaiwuDB

由挑战走向未来:无线网络如何迎接智能时代?

脑极体

AI

YashanDB SIGN函数

YashanDB

数据库

YashanDB SIN函数

YashanDB

数据库

大数据-55 Kafka 实战详解:sh启动、主题管理、Java客户端完整示例

武子康

Java 大数据 kafka 分布式 消息队列

Flipboard发布Web版,在Web技术实现上取得突破_JavaScript_João Paulo Marques_InfoQ精选文章