PWA(Progressive Web Apps,渐进式 Web 应用)运用现代的 Web API 以及传统的渐进式增强策略来创建跨平台 Web 应用程序。

特点

  • 可被发现的。可被搜索引擎搜索到。
  • 可被安装的。能被添加到桌面或app启动页。
  • 可被链接的。可以通过发送一个 URL 来分享。
  • 网络独立的。可在离线环境和弱网环境下工作。
  • 渐进增强的。可以在旧版本的浏览器上运行。在最新的浏览器上支持所有的功能。
  • 能被呼起的。有新内容时,可以发通知。
  • 响应式。可以在不同的设备上用: 手机,平板,台式机,电视,冰箱等。
  • 安全。用户,app和服务器端之间的链接是安全的。第三方无法获取敏感数据。

翻译自: What makes an app a PWA?

带来的好处

  • 应用安装后,进入app的加载时间变短了。应用安装后,可以缓存文件,节约带宽和下载时间。
  • app 内容更新后,只更新更新的部分。对比原生应用,最小的改动也必须下载完整的应用。
  • 外观和感觉上和原生平台结合的更紧密。在桌面或应用启动器上的 app 图标,自动以全屏的模式运行。
  • app 和用户的对话更多了。通过系统通知和推送信息来通知用户。

    兼容性

    主要是看 Service Work 的兼容性,主流浏览器都兼容了

如何实现

可被发现的

PWA 应该更好的在搜索引擎中呈现,分类和排名。设置一些浏览器支持的元信息来带来一些特别的能力。

浏览器支持的元信息,比如 Open Graph

  1. <meta property="og:title" content="The Rock" />
  2. <meta property="og:type" content="video.movie" />
  3. <meta property="og:url" content="https://www.imdb.com/title/tt0117500/" />
  4. <meta property="og:image" content="https://ia.media-imdb.com/images/rock.jpg" />

manifests 也做了类似的事:

  1. {
  2. "name": "HackerWeb",
  3. "description": "xxx",
  4. "categories": "xxx" //分类
  5. }

搜索引擎解析这些标签,来支持更好的呈现,分类和排名。

可被安装的

webapp 的安装和卸载,是依赖浏览器支持的。webapp 的安装的设置是在 manifests 里设置的。

可被链接的

webapp 本身对指向一组 url。这块本身就是支持的。

能被呼起的

Web Push API 和用 Notifications API 来发通知。

Web Push API 能够从服务器端接收推送给它们的通知,即使 app 在后台。Push API 是 Service Worker 其中的一个功能。

网络独立的

Service Workers 来控制请求(如储存离线的内容)。Cache API 来储存资产。

客户端数据存储用 Web Storage 和 IndexDB。

渐进增强的

靠 js 来做特性判断。

响应式

依赖媒体查询和 viewport。

安全性

用 https。

推荐阅读