写点什么

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:553277
用户头像

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

关注

评论

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

30天拿下Rust之生命周期

希望睿智

rust 生命周期

网页文档下载不了怎么办 网页文档下载方法

阿拉灯神丁

视频 网络加速 下载器 网页 idm下载

华为云大咖说:开发者应用AI大模型的“道、法、术”

华为云开发者联盟

人工智能 华为云 大模型 华为云开发者联盟 企业号2024年5月PK榜

星创编辑器在投放业务中的落地|得物技术

得物技术

前端 Web React 企业号 2024年5月 PK 榜

文献解读-遗传病-第三期|《Answer ALS,一种用于散发性和家族性 ALS 的大规模资源,结合了来自诱导多能细胞系的临床和多组学数据》

INSVAST

基因数据分析 生信服务

AI+金融新篇章:智谱AI与邮储银行签署战略合作协议开启大模型时代

技术研究院

如何优雅实现存算分离:缓存及Tablespace讲解与演示

酷克数据HashData

存算分离

AI 日报|硅谷 “鲁迅” 怒怼马斯克,炮轰 AI 界;前 OpenAI 安全主管入职友商 Anthropic

可信AI进展

常州等保测评公司有哪些?电话多少?

行云管家

等保 等保测评 常州

行业诚信新标杆——行云绽放荣膺AAA级企业信用等级证书

行云管家

信息安全 企业信用等级证书 信用等级

深入探索令牌桶限流的原理与实践

袋鼠云数栈

大数据 限流算法 令牌桶 令牌桶算法 数据服务

《歧路旅人》好玩吗 《歧路旅人》苹果电脑怎么玩

阿拉灯神丁

游戏 苹果电脑 CrossOver Mac下载 如何在Mac上运行win游戏 CrossOver 24虚拟机

API安全应该怎么做?

芯盾时代

网络安全 网关 API网关 零信任

30天拿下Rust之错误处理

希望睿智

rust 错误处理

一键生成,效率翻倍,用AI赋能PPT制作

霍格沃兹测试开发学社

[ICLR 2024] 基于Pathways架构的自适应多尺度时间序列预测模型Pathformer

阿里云大数据AI技术

人工智能 自适应 论文 Iclr

在 Kubesphere 中开启新一代云原生数仓 Databend

Databend

用 Baidu Comate 实现研发提效,百度营销服务团队打造“轻舸”加速营销智能化

百度Geek说

企业号 5 月 PK 榜 智能代码助手; 企业号2024年5月PK榜 Baidu Comate

公开课 | Python高频面试题解析公开课

测试人

软件测试 面试题

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