上周的 Google I/O 大会上,Addy Osmani 发布了一些令人惊叹的开发资源,用于创建以 JavaScript 框架为优先的渐进式 Web 应用 (PWA),这些框架将性能放在首位。
这绝对是一个团队合作的结果,许多人共同努力使这些项目得以进行,这对社区来说是一个非常宝贵的贡献。许多人希望为他们选择的框架获得更好的性能,但无法为这种努力投入时间和资源。能够从高性能和良好的 Lighthouse 得分基础开始,这非常宝贵,使开发人员能够在不牺牲速度和用户体验的情况下,同时享受令人兴奋的框架的生产力和人体工程学。
以下是一些亮点!
Addy 创建了一个网站,用于探索他们使用不同的 PWA 解决方案构建的一些模板,作为非常受欢迎的 TodoMVC 的继任者,名为 HN PWA。您可以探索 所有演示和 GitHub 代码库。然后,他介绍了每个框架重建为 PWA 的一些主要公司实现。在 Addy 展示的许多案例研究中,构建更好 Web 体验的主要内容在于 link rel=preload
、requestIdleCallback()
和 HTTP2 服务器推送。有很多提及 PRPL 模式,本质上是优先考虑您将首先使用的内容,通过推送初始 URL 路由的关键资源、渲染初始路由、预缓存其余路由,以及延迟加载和按需创建其余路由。许多性能提升都在能够在 5 秒内在移动设备上进行交互,以及尝试降低框架本身的开销,以便您在这 5 秒内有更多时间用于自己的应用程序代码。
React
React 宣布 Create React App 现在默认情况下将成为 PWA!这是一个重大胜利。他们现在使用带有离线优先缓存策略的服务工作者、使用动态 import() 进行代码拆分、提供错误的帮助覆盖层,并且为您提供1.5 秒的额外时间用于您的应用程序代码。 有关发布的更多信息 在这里。
Preact
现在拥有 CLI!在活动中宣布,这是一个非常棒的开发成果,值得尝试一下。您可以 在这里找到项目。除了您可以在自述文件中阅读的其他非常棒的功能之外,它还具有开箱即用的 100/100 Lighthouse 得分,以及惊人的3 秒额外时间来处理您自己的应用程序代码。
如果您不熟悉 Preact,它是一个极快的 3kb React 替代方案,具有相同的 API,包括组件和虚拟 DOM 的使用。它类似于 React,但小文件大小是软件设计的核心。提到的唯一警告是,由于它强调精简构建,因此 React 生态系统中可能还有一些产品需要进行工作才能无缝集成。也就是说,Preact 是这里性能的绝对赢家,所以我不奇怪看到社区团结起来支持这个解决方案。
Vue
Vue 宣布了一个 PWA 模板,直接从 Vue-cli 提供,您可以使用 vue init pwa
轻松访问。

在许多很棒的功能中,它为您提供了在移动设备上使用应用程序代码的2 秒额外时间、使用动态 import() 进行代码拆分、用于离线缓存的服务工作者,以及预加载或预取 JS 块。
如果您不熟悉 Vue,我已经在这里写了一篇 指南。我认为 Vue 是一款很棒的软件,能够从一开始就满足所有 Lighthouse 标准真是太棒了。此工作流程使创建漂亮且复杂的应用程序变得如此容易。
这篇文章中还有很多细节我没有涉及,Addy 是一位很棒的演讲者。他甚至为他的演讲制作了一款电子游戏。值得您完整观看,您可以在这里观看
只是好奇.. 为什么他没有谈论 Angular?
好的,他在视频结尾提到了它。事实证明 Angular 比其他框架慢。我不确定我们是否可以将它们进行比较,但我不是 JavaScript 专家
Polymer 被遗漏了吗,因为它不被认为是 JavaScript 框架?
我相信当它们在 100% 支持的情况下,Polymer 就基本上过时了。
这就是 Google 使用 Polymer 构建新的 YouTube 界面的原因吗?
Polymer 没有被遗漏。
hnpwa 网站的列表中包含 Polymer。
React(和类似的库)也不是框架,它只是一个库,可以让您轻松构建组件并使用虚拟 DOM 渲染它们。
如果有的话,Polymer 才是真正能够让 React 过时的技术,因为它基于原生 API。
Ionic 框架也支持 PWA。标准的 Ionic 应用程序同时生成基本的 manifest.json 文件,并包含 sw-toolbox.js 用于服务工作者功能。您只需要取消注释 index.html 中的服务工作者代码,就可以将 Ionic 应用程序转换为 PWA。Ionic 团队也正在积极改进对 PWA 的支持。
hnpwa.com 项目让我感觉像是 csszengarden.com。
这些交互时间实在太弱了。Lighthouse 的目标太低了。他们需要将标准提高到 2G 网络下 1 秒或更短。