PWA(Progressive web apps,渐进式 Web 应用)运用现代的 Web API 以及传统的渐进式增强策略来创建跨平台 Web 应用程序。这些应用无处不在、功能丰富,使其具有与原生应用相同的用户体验优势。 目前,随着Web应用的发展,PWA已成为目前Web发展的重要趋势,它在同构应用的实践方便表现卓越。同时,PWA 技术已成为面试高级工程师的必备考题,足以见得行业对它的重视。
PWA 的核心是 Service Workers ,而在 MDN 的解读中, Service Workers 可以理解为是充当了 Web 应用程序与浏览器之间的代理服务器。 Service Workers 提供了一套强大的 Web 应用离线支持,通过 URL 定义域一对多地分发管理页面缓存,从而促成最优的 Web 应用离线用户体验。所以,在本章中需要先对它进行一个介绍。
Google 杰出的软件工程师 Jeff Dean 曾经这么描述 Service Worker :"如果将你的网络请求想象成飞机起飞,那么 Service Worker 就是路由请求的空中交通管制员,它可以通过网络加载,甚至通过缓存加载。"
可以想象,当你在使用 Service Worker 时,能够全权管控网站发起的每个请求时,是一件多么有趣的事情。下面,用一张图来解释 Service Worker 是如何工作的:
可是,在 Service Worker 提出之前, HTML5 曾用 Application Cache 来处理离线带来的部分难题。虽然 Application Cache 可以很好地处理单页面应用问题,但在面对多页面应用时却存在很多的麻烦。而 Service Worker 正是为了解决这些痛点而产生的。